simplify be_lv_foreach
[libfirm] / ir / be / bechordal.c
index 962442a..2219742 100644 (file)
@@ -22,7 +22,6 @@
  * @brief       Chordal register allocation.
  * @author      Sebastian Hack
  * @date        08.12.2004
- * @version     $Id$
  */
 #include "config.h"
 
@@ -44,7 +43,6 @@
 #include "irdump.h"
 #include "irdom.h"
 #include "irtools.h"
-#include "irbitset.h"
 #include "debug.h"
 #include "iredges.h"
 
@@ -198,7 +196,7 @@ static ir_node *handle_constraints(be_chordal_alloc_env_t *alloc_env,
         * Perms inserted before the constraint handling phase are considered to be
         * correctly precolored. These Perms arise during the ABI handling phase.
         */
-       if (!insn->has_constraints)
+       if (!insn->has_constraints || is_Phi(irn))
                goto end;
 
        n_regs      = env->cls->n_regs;
@@ -503,16 +501,12 @@ void be_ra_chordal_color(be_chordal_env_t *chordal_env)
 {
        be_chordal_alloc_env_t env;
        char buf[256];
-       be_lv_t *lv;
        const arch_register_class_t *cls = chordal_env->cls;
 
-       int colors_n          = arch_register_class_n_regs(cls);
-       ir_graph *irg         = chordal_env->irg;
-
-       lv = be_assure_liveness(irg);
-       be_liveness_assure_sets(lv);
-       be_liveness_assure_chk(lv);
+       int       colors_n = arch_register_class_n_regs(cls);
+       ir_graph *irg      = chordal_env->irg;
 
+       be_assure_live_sets(irg);
        assure_doms(irg);
 
        env.chordal_env   = chordal_env;
@@ -522,6 +516,15 @@ void be_ra_chordal_color(be_chordal_env_t *chordal_env)
        env.in_colors     = bitset_alloca(colors_n);
        env.pre_colored   = pset_new_ptr_default();
 
+       be_timer_push(T_SPLIT);
+
+       if (chordal_env->opts->dump_flags & BE_CH_DUMP_SPLIT) {
+               snprintf(buf, sizeof(buf), "%s-split", chordal_env->cls->name);
+               dump_ir_graph(chordal_env->irg, buf);
+       }
+
+       be_timer_pop(T_SPLIT);
+
        be_timer_push(T_CONSTR);
 
        /* Handle register targeting constraints */
@@ -554,7 +557,7 @@ void be_ra_chordal_color(be_chordal_env_t *chordal_env)
        del_pset(env.pre_colored);
 }
 
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_chordal);
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_chordal)
 void be_init_chordal(void)
 {
        static be_ra_chordal_coloring_t coloring = {