rename function
[libfirm] / ir / be / betranshlp.c
index 95602f8..f5a6d65 100644 (file)
@@ -123,16 +123,13 @@ ir_node *be_duplicate_node(ir_node *node)
                new_node = new_ir_node(dbgi, irg, block, op, mode, arity, ins);
        }
 
-       copy_node_attr(node, new_node);
+       copy_node_attr(irg, node, new_node);
        be_duplicate_deps(node, new_node);
 
        new_node->node_nr = node->node_nr;
        return new_node;
 }
 
-/**
- * Calls transformation function for given node and marks it visited.
- */
 ir_node *be_transform_node(ir_node *node)
 {
        ir_op   *op;
@@ -158,9 +155,6 @@ ir_node *be_transform_node(ir_node *node)
        return new_node;
 }
 
-/**
- * enqueue all inputs into the transform queue.
- */
 void be_enqueue_preds(ir_node *node)
 {
        int i, arity;
@@ -358,7 +352,7 @@ static ir_node *gen_Block(ir_node *node)
 
        block = new_ir_node(dbgi, irg, NULL, get_irn_op(node), get_irn_mode(node),
                            get_irn_arity(node), get_irn_in(node) + 1);
-       copy_node_attr(node, block);
+       copy_node_attr(irg, node, block);
        block->node_nr = node->node_nr;
 
        if (node == macroblock) {
@@ -385,7 +379,7 @@ static ir_node *gen_End(ir_node *node)
        ir_node  *new_end;
 
        new_end = new_ir_node(dbgi, irg, block, op_End, mode_X, -1, NULL);
-       copy_node_attr(node, new_end);
+       copy_node_attr(irg, node, new_end);
        be_duplicate_deps(node, new_end);
 
        set_irg_end(irg, new_end);
@@ -418,6 +412,11 @@ void be_transform_graph(be_irg_t *birg, arch_pretrans_nodes *func)
        irg->obst = new_obst;
        irg->last_node_idx = 0;
 
+       /* invalidate phase info as (at least vrp info) is used inside the
+        * equivalent/compute_value functions and might replace our newly
+        * created nodes with middleend nodes */
+       irg_invalidate_phases(irg);
+
        /* create new value table for CSE */
        del_identities(irg->value_table);
        irg->value_table = new_identities();