* @brief Chordal register allocation.
* @author Sebastian Hack
* @date 08.12.2004
- * @version $Id$
*/
#include "config.h"
#include "irdump.h"
#include "irdom.h"
#include "irtools.h"
-#include "irbitset.h"
#include "debug.h"
#include "iredges.h"
* 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;
{
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;
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 */
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 = {