bitset_t *livethrough_unused;
} loop_attr_t;
-typedef struct block_attr {
+typedef struct morgan_block_attr {
const ir_node *block;
/** set of all values that are live in the block but not used in the block */
bitset_t *livethrough_unused;
DBG((dbg, DBG_CHOOSE, "Spilling %+F ", to_spill));
for(edge = set_first(loop_attr->out_edges); edge != NULL; edge = set_next(loop_attr->out_edges)) {
- be_add_reload_on_edge(env->senv, to_spill, edge->block, edge->pos, env->cls);
+ be_add_reload_on_edge(env->senv, to_spill, edge->block, edge->pos, env->cls, 1);
}
}
}
ir_graph *irg = be_get_birg_irg(birg);
morgan_env_t env;
- FIRM_DBG_REGISTER(dbg, "ir.be.spillmorgan");
- //firm_dbg_set_mask(dbg, DBG_SPILLS | DBG_LOOPANA);
-
be_assure_liveness(birg);
env.arch = birg->main_env->arch_env;
/* Verify the result */
if(birg->main_env->options->vrfy_option == BE_VRFY_WARN) {
- be_verify_schedule(irg);
+ be_verify_schedule(birg);
} else if (birg->main_env->options->vrfy_option == BE_VRFY_ASSERT) {
- assert(be_verify_schedule(irg));
+ assert(be_verify_schedule(birg));
}
/* cleanup */
obstack_free(&env.obst, NULL);
}
-static void be_spill_morgan_oldinterface(const be_chordal_env_t *cenv)
-{
- be_spill_morgan(cenv->birg, cenv->cls);
-}
-
void be_init_spillmorgan(void)
{
static be_spiller_t morgan_spiller = {
- be_spill_morgan_oldinterface
+ be_spill_morgan
};
be_register_spiller("morgan", &morgan_spiller);
+ FIRM_DBG_REGISTER(dbg, "ir.be.spillmorgan");
}
BE_REGISTER_MODULE_CONSTRUCTOR(be_init_spillmorgan);