renamed type opcode to ir_opcode
[libfirm] / ir / ir / irgmod.c
index 47abfa3..b604240 100644 (file)
@@ -40,7 +40,7 @@ turn_into_tuple (ir_node *node, int arity)
   } else {
     /* Allocate new array, don't free old in_array, it's on the obstack. */
     ir_node *block = get_nodes_block(node);
-    edges_invalidate(node, current_ir_graph);
+    edges_node_deleted(node, current_ir_graph);
     node->in = NEW_ARR_D(ir_node *, current_ir_graph->obst, arity+1);
     /* clear the new in array, else edge_notify tries to delete garbage */
     memset(node->in, 0, (arity+1) * sizeof(node->in[0]));
@@ -61,7 +61,11 @@ exchange (ir_node *old, ir_node *nw)
    * the edges from the old node to the new directly.
    */
   if (edges_activated(current_ir_graph)) {
+    /* copy all dependencies from old to new */
+    add_irn_deps(nw, old);
+
     edges_reroute(old, nw, current_ir_graph);
+    edges_reroute_kind(old, nw, EDGE_KIND_DEP, current_ir_graph);
     edges_node_deleted(old, current_ir_graph);
     old->op = op_Bad;
   }