Fixed combo by fixing an old artefact from the older libFirm Cmp nodes.
[libfirm] / ir / common / irtools.c
index d34c753..ed498cf 100644 (file)
@@ -107,12 +107,9 @@ void copy_irn_to_irg(ir_node *n, ir_graph *irg)
        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));
        }
 }
 
@@ -144,9 +141,6 @@ ir_node *irn_copy_into_irg(const ir_node *node, ir_graph *irg)
 
        /* 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);
@@ -170,22 +164,13 @@ static ir_node *get_new_node(const ir_node *old_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);
@@ -199,15 +184,14 @@ void irn_rewire_inputs(ir_node *node)
        }
 
        /* 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);
        }
 }