combos constant dataflow analysis has to be consistent with the localopt; this should...
[libfirm] / ir / be / bespill.c
index e525562..1e18a65 100644 (file)
@@ -29,7 +29,7 @@
 #include "irtools.h"
 #include "debug.h"
 #include "iredges_t.h"
-#include "adt/raw_bitset.h"
+#include "raw_bitset.h"
 #include "statev.h"
 #include "irgwalk.h"
 
@@ -136,7 +136,7 @@ static void prepare_constr_insn(be_pre_spill_env_t *env, ir_node *node)
 
                        /* if the constraint is the same, no copy is necessary
                         * TODO generalise unequal but overlapping constraints */
-                       if (rbitset_equal(req->limited, req2->limited, cls->n_regs))
+                       if (rbitsets_equal(req->limited, req2->limited, cls->n_regs))
                                continue;
 
                        copy = be_new_Copy(cls, block, in);
@@ -247,6 +247,9 @@ void be_pre_spill_prepare_constr(be_irg_t *birg,
        memset(&env, 0, sizeof(env));
        env.birg = birg;
        env.cls  = cls;
+
+       be_assure_liveness(birg);
+
        irg_block_walk_graph(irg, pre_spill_prepare_constr_walker, NULL, &env);
 }
 
@@ -278,6 +281,7 @@ void be_do_spill(be_irg_t *birg, const arch_register_class_t *cls)
        selected_spiller->spill(birg, cls);
 }
 
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_spilloptions);
 void be_init_spilloptions(void)
 {
        lc_opt_entry_t *be_grp = lc_opt_get_grp(firm_opt_get_root(), "be");
@@ -289,5 +293,3 @@ void be_init_spilloptions(void)
 
        FIRM_DBG_REGISTER(dbg, "firm.be.spillprepare");
 }
-
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_spilloptions);