copy_node_attr(irg, n, nn);
set_irn_link(n, nn);
- /* fix the irg for blocks */
- if (is_Block(nn)) {
+ /* fix the irg for nodes containing a reference to it */
+ if (ir_has_irg_ref(nn)) {
nn->attr.block.irg.irg = irg;
-
- /* we cannot allow blocks WITHOUT macroblock input */
- set_Block_MacroBlock(nn, get_Block_MacroBlock(n));
}
}
/* copy the attributes */
copy_node_attr(irg, node, res);
- if (op == op_Block) {
- set_Block_MacroBlock(res, get_Block_MacroBlock(node));
- }
/* duplicate dependency edges */
n_deps = get_irn_deps(node);
void irn_rewire_inputs(ir_node *node)
{
- ir_graph *new_irg;
- ir_node *new_node;
- int arity;
- int i;
+ ir_node *new_node;
+ int arity;
+ int i;
new_node = get_new_node(node);
- if (is_Block(node)) {
- /* copy the macro block header */
- ir_node *mbh = get_Block_MacroBlock(node);
-
- /* get the macro block header */
- ir_node *nmbh = get_new_node(mbh);
- assert(nmbh != NULL);
- set_Block_MacroBlock(new_node, nmbh);
- } else {
+ if (!is_Block(node)) {
ir_node *block = get_nodes_block(node);
ir_node *new_block = get_new_node(block);
set_nodes_block(new_node, new_block);
}
/* Now the new node is complete. We can add it to the hash table for CSE. */
- new_irg = get_irn_irg(new_node);
- add_identities(new_irg->value_table, new_node);
+ add_identities(new_node);
}
void firm_pset_dump(pset *set)
{
void *obj;
- foreach_pset(set, obj) {
+ foreach_pset(set, void*, obj) {
ir_fprintf(stderr, "%+F\n", obj);
}
}