X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fopt_inline.c;h=0fd832886b7ce0a875238f4a9830b2f4b37587ff;hb=bbc6291b6a4ed4fe5bd8d1c2ddd57f4e6a0c8a74;hp=a91615ea06d8593d300157f9d54d1ab668319f1a;hpb=f8b8dc8908ab57afa2c066cadbfe42f6f960e0ab;p=libfirm diff --git a/ir/opt/opt_inline.c b/ir/opt/opt_inline.c index a91615ea0..0fd832886 100644 --- a/ir/opt/opt_inline.c +++ b/ir/opt/opt_inline.c @@ -1230,15 +1230,23 @@ void inline_small_irgs(ir_graph *irg, int size) { irg_walk_graph(irg, NULL, collect_calls, &env); if (env.head != NULL) { + int did_inline = 0; + /* There are calls to inline */ collect_phiprojs(irg); for (entry = env.head; entry != NULL; entry = entry->next) { ir_graph *callee = entry->callee; if (((_obstack_memory_used(callee->obst) - (int)obstack_room(callee->obst)) < size) || (get_irg_inline_property(callee) >= irg_inline_forced)) { - inline_method(entry->call, callee); + did_inline |= inline_method(entry->call, callee); } } + if (did_inline != 0) { + /* this irg got calls inlined */ + set_irg_outs_inconsistent(irg); + set_irg_doms_inconsistent(irg); + set_irg_loopinfo_inconsistent(irg); + } } obstack_free(&env.obst, NULL); current_ir_graph = rem; @@ -1603,6 +1611,7 @@ void inline_leave_functions(int maxsize, int leavesize, int size, int ignore_run /* this irg got calls inlined */ set_irg_outs_inconsistent(irg); set_irg_doms_inconsistent(irg); + set_irg_loopinfo_inconsistent(irg); optimize_graph_df(irg); optimize_cf(irg); @@ -1984,6 +1993,7 @@ void inline_functions(int inline_threshold) { /* this irg got calls inlined */ set_irg_outs_inconsistent(irg); set_irg_doms_inconsistent(irg); + set_irg_loopinfo_inconsistent(irg); if (env->local_vars) scalar_replacement_opt(irg);