summaryrefslogtreecommitdiffhomepage
path: root/ir/be/beloopana.c
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2007-09-08 11:21:13 +0200
committerMatthias Braun <matze@braunis.de>2007-09-08 11:21:13 +0200
commit63dd9d13d956f37619a42d38ebf404c4d39f3c5d (patch)
treea6755fa8376fa7c377a9d9f646ad49ea236896d0 /ir/be/beloopana.c
parentcdc20df86b21709baaa7d656711be9d5f78315f3 (diff)
make sure loops are analysid in loopana, reformatted belower
[r15718]
Diffstat (limited to 'ir/be/beloopana.c')
-rw-r--r--ir/be/beloopana.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ir/be/beloopana.c b/ir/be/beloopana.c
index 65541ae..26bb60e 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));