Fixed some typos.
[libfirm] / ir / ir / irgmod.c
index 9b6f9c5..fa26791 100644 (file)
@@ -47,11 +47,12 @@ void turn_into_tuple(ir_node *node, int arity)
 {
        ir_graph *irg = get_irn_irg(node);
        ir_node **in  = ALLOCAN(ir_node*, arity);
+       ir_node  *bad = new_r_Bad(irg, mode_ANY);
        int       i;
 
        /* construct a new in array, with every input being bad */
        for (i = 0; i < arity; ++i) {
-               in[i] = new_r_Bad(irg);
+               in[i] = bad;
        }
        set_irn_in(node, arity, in);
        set_irn_op(node, op_Tuple);
@@ -82,9 +83,9 @@ void exchange(ir_node *old, ir_node *nw)
                /* copy all dependencies from old to new */
                add_irn_deps(nw, old);
 
-               edges_reroute(old, nw, irg);
-               edges_reroute_kind(old, nw, EDGE_KIND_DEP, irg);
-               edges_node_deleted(old, irg);
+               edges_reroute(old, nw);
+               edges_reroute_kind(old, nw, EDGE_KIND_DEP);
+               edges_node_deleted(old);
                /* noone is allowed to reference this node anymore */
                set_irn_op(old, op_Deleted);
        } else {
@@ -111,6 +112,10 @@ void exchange(ir_node *old, ir_node *nw)
                old->in[0] = block;
                old->in[1] = nw;
        }
+
+       /* update irg flags */
+       set_irg_outs_inconsistent(irg);
+       set_irg_loopinfo_inconsistent(irg);
 }
 
 /*--------------------------------------------------------------------*/
@@ -164,11 +169,11 @@ static void move(ir_node *node, ir_node *from_bl, ir_node *to_bl)
 
        /* move its Projs */
        if (get_irn_mode(node) == mode_T) {
-               ir_node *proj = get_irn_link(node);
+               ir_node *proj = (ir_node*)get_irn_link(node);
                while (proj) {
                        if (get_nodes_block(proj) == from_bl)
                                set_nodes_block(proj, to_bl);
-                       proj = get_irn_link(proj);
+                       proj = (ir_node*)get_irn_link(proj);
                }
        }
 
@@ -284,11 +289,10 @@ ir_node *part_block_edges(ir_node *node)
 void kill_node(ir_node *node)
 {
        ir_graph *irg = get_irn_irg(node);
-       ir_node *bad = get_irg_bad(irg);
-       int i;
 
-       for (i = get_irn_arity(node) - 1; i >= -1; --i) {
-               set_irn_n(node, i, bad);
+       if (edges_activated(irg)) {
+               edges_node_deleted(node);
        }
-       exchange(node, bad);
+       /* noone is allowed to reference this node anymore */
+       set_irn_op(node, op_Deleted);
 }