X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgopt.c;h=2112f6fc86b13bf5ce9b09d5ccd9b0e6329f4933;hb=e570f00fb465d212dde403160e97ab45d36d1d7e;hp=4511027ec88110cb0acc02b6838a4b30e882dfde;hpb=d2fd32f582815f2c050300f7f10db0fc7a5774ae;p=libfirm diff --git a/ir/ir/irgopt.c b/ir/ir/irgopt.c index 4511027ec..2112f6fc8 100644 --- a/ir/ir/irgopt.c +++ b/ir/ir/irgopt.c @@ -434,7 +434,7 @@ dead_node_elimination(ir_graph *irg) { free_outs(current_ir_graph); /* @@@ so far we loose loops when copying */ - set_irg_loop(current_ir_graph, NULL); + free_loop_information(current_ir_graph); if (get_opt_optimize() && get_opt_dead_node_elimination()) { @@ -599,7 +599,7 @@ void inline_method(ir_node *call, ir_graph *called_graph) { ir_node **cf_pred; ir_node *ret, *phi; int arity, n_ret, n_exc, n_res, i, j, rem_opt, irn_arity; - int exc_handling; ir_node *proj; + int exc_handling; type *called_frame; if ( !(get_irg_inline_property(called_graph) == irg_inline_forced) && (!get_opt_optimize() || !get_opt_inline() || @@ -1496,7 +1496,10 @@ void place_code(ir_graph *irg) { if (get_irg_dom_state(irg) != dom_consistent) compute_doms(irg); - construct_backedges(irg); + if (get_irg_loopinfo_state(irg) != loopinfo_consistent) { + free_loop_information(irg); + construct_backedges(irg); + } /* Place all floating nodes as early as possible. This guarantees a legal code placement. */ @@ -1510,6 +1513,7 @@ void place_code(ir_graph *irg) { place_late(worklist); set_irg_outs_inconsistent(current_ir_graph); + set_irg_loopinfo_inconsistent(current_ir_graph); del_pdeq(worklist); current_ir_graph = rem; }