fehler109
[libfirm] / ir / be / beloopana.c
index 65541ae..37356e8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
@@ -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));