From 9bfc8d4d617798bc35c453ab6a4fb27008fc3b05 Mon Sep 17 00:00:00 2001 From: Andreas Zwinkau Date: Mon, 9 May 2011 10:50:45 +0200 Subject: [PATCH] Implicit set_irg_outs_inconsistent when calling exchange, set_irn_n, or set_irn_in. fixes backend/inconsistent_outs test case --- ir/ir/irgmod.c | 3 +++ ir/ir/irnode.c | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/ir/ir/irgmod.c b/ir/ir/irgmod.c index 51391c78c..514cc49fa 100644 --- a/ir/ir/irgmod.c +++ b/ir/ir/irgmod.c @@ -112,6 +112,9 @@ void exchange(ir_node *old, ir_node *nw) old->in[0] = block; old->in[1] = nw; } + + /* update irg flags */ + set_irg_outs_inconsistent(irg); } /*--------------------------------------------------------------------*/ diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index 972f71488..64f32bc2e 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -251,6 +251,9 @@ void set_irn_in(ir_node *node, int arity, ir_node **in) fix_backedges(irg->obst, node); memcpy((*pOld_in) + 1, in, sizeof(ir_node *) * arity); + + /* update irg flags */ + set_irg_outs_inconsistent(irg); } ir_node *(get_irn_n)(const ir_node *node, int n) @@ -273,6 +276,9 @@ void set_irn_n(ir_node *node, int n, ir_node *in) edges_notify_edge(node, n, in, node->in[n + 1], irg); node->in[n + 1] = in; + + /* update irg flags */ + set_irg_outs_inconsistent(irg); } int add_irn_n(ir_node *node, ir_node *in) @@ -717,6 +723,9 @@ void set_End_keepalives(ir_node *end, int n, ir_node *in[]) end->in[1 + END_KEEPALIVE_OFFSET + i] = in[i]; edges_notify_edge(end, END_KEEPALIVE_OFFSET + i, end->in[1 + END_KEEPALIVE_OFFSET + i], NULL, irg); } + + /* update irg flags */ + set_irg_outs_inconsistent(irg); } /* Set new keep-alives from old keep-alives, skipping irn */ @@ -752,6 +761,9 @@ found: } /* now n - 1 keeps, 1 block input */ ARR_RESIZE(ir_node *, end->in, (n - 1) + 1 + END_KEEPALIVE_OFFSET); + + /* update irg flags */ + set_irg_outs_inconsistent(irg); } /* remove Bads, NoMems and doublets from the keep-alive set */ -- 2.20.1