From: Matthias Braun Date: Sat, 8 Sep 2007 09:21:13 +0000 (+0000) Subject: make sure loops are analysid in loopana, reformatted belower X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=63dd9d13d956f37619a42d38ebf404c4d39f3c5d;p=libfirm make sure loops are analysid in loopana, reformatted belower [r15718] --- diff --git a/ir/be/beloopana.c b/ir/be/beloopana.c index 65541aee3..26bb60ec9 100644 --- a/ir/be/beloopana.c +++ b/ir/be/beloopana.c @@ -169,6 +169,11 @@ be_loopana_t *be_new_loop_pressure_cls(be_irg_t *birg, DBG((dbg, LEVEL_1, " Computing register pressure for class %s:\n", cls->name)); DBG((dbg, LEVEL_1, "=====================================================\n", cls->name)); + /* construct control flow loop tree */ + if (! (get_irg_loopinfo_state(irg) & loopinfo_cf_consistent)) { + construct_cf_backedges(irg); + } + be_compute_loop_pressure(loop_ana, get_irg_loop(irg), cls); return loop_ana; @@ -190,6 +195,11 @@ be_loopana_t *be_new_loop_pressure(be_irg_t *birg) { loop_ana->data = new_set(cmp_loop_info, 16); loop_ana->birg = birg; + /* construct control flow loop tree */ + if (! (get_irg_loopinfo_state(irg) & loopinfo_cf_consistent)) { + construct_cf_backedges(irg); + } + for (i = arch_isa_get_n_reg_class(isa) - 1; i >= 0; --i) { const arch_register_class_t *cls = arch_isa_get_reg_class(isa, i); DBG((dbg, LEVEL_1, "\n=====================================================\n", cls->name)); diff --git a/ir/be/belower.c b/ir/be/belower.c index bd219990f..3cbeec92a 100644 --- a/ir/be/belower.c +++ b/ir/be/belower.c @@ -1005,15 +1005,18 @@ found_front: * @param walk_env The walker environment */ static void lower_nodes_after_ra_walker(ir_node *irn, void *walk_env) { - if (! is_Block(irn) && ! is_Proj(irn)) { - if (be_is_Perm(irn)) { - int perm_stayed = push_through_perm(irn, walk_env); - if (perm_stayed) - lower_perm_node(irn, walk_env); - } - } + int perm_stayed; - return; + if (is_Block(irn) || is_Proj(irn)) + return; + if (!be_is_Perm(irn)) + return; + + perm_stayed = push_through_perm(irn, walk_env); + if (!perm_stayed) + return; + + lower_perm_node(irn, walk_env); } /**