From: Matthias Braun Date: Wed, 27 Apr 2011 16:19:56 +0000 (+0200) Subject: fix lower_copyB not invalidating irn_outs X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=73e9e77d146650a2e9836ea0d7ec051d825d3dd8;p=libfirm fix lower_copyB not invalidating irn_outs --- diff --git a/ir/lower/lower_copyb.c b/ir/lower/lower_copyb.c index b8591cae5..c76d25848 100644 --- a/ir/lower/lower_copyb.c +++ b/ir/lower/lower_copyb.c @@ -66,7 +66,7 @@ static ir_mode *get_ir_mode(unsigned bytes) */ static void lower_copyb_nodes(ir_node *irn, unsigned mode_bytes) { - ir_graph *irg = current_ir_graph; + ir_graph *irg = get_irn_irg(irn); unsigned size; unsigned offset; ir_mode *mode; @@ -167,10 +167,8 @@ static void find_copyb_nodes(ir_node *irn, void *ctx) void lower_CopyB(ir_graph *irg, unsigned max_size, unsigned native_mode_bytes) { walk_env_t env; - entry_t *entry; - ir_graph *rem = current_ir_graph; - - current_ir_graph = irg; + entry_t *entry; + bool changed = false; obstack_init(&env.obst); env.max_size = max_size; @@ -179,8 +177,12 @@ void lower_CopyB(ir_graph *irg, unsigned max_size, unsigned native_mode_bytes) list_for_each_entry(entry_t, entry, &env.list, list) { lower_copyb_nodes(entry->copyb, native_mode_bytes); + changed = true; + } + + if (changed) { + set_irg_outs_inconsistent(irg); } obstack_free(&env.obst, NULL); - current_ir_graph = rem; }