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;
return new_node;
}
-/**
- * enqueue all inputs into the transform queue.
- */
void be_enqueue_preds(ir_node *node)
{
int i, arity;
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) {
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);
return new_end;
}
-void be_transform_graph(be_irg_t *birg, arch_pretrans_nodes *func)
+void be_transform_graph(ir_graph *irg, arch_pretrans_nodes *func)
{
- ir_graph *irg = birg->irg;
ir_graph *old_current_ir_graph = current_ir_graph;
struct obstack *old_obst = NULL;
struct obstack *new_obst = NULL;
+ be_irg_t *birg = be_birg_from_irg(irg);
current_ir_graph = irg;
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();