struct obstack ob;
const arch_env_t *arch;
const arch_register_class_t *cls;
- const be_lv_t *lv;
+ be_lv_t *lv;
be_loopana_t *loop_ana;
int n_regs; /** number of regs in this reg-class */
loc_t loc;
loc.time = USES_INFINITY;
loc.irn = node;
+ (void) block;
if (!arch_irn_consider_in_reg_alloc(env->arch, env->cls, node)) {
loc.time = USES_INFINITY;
/* allocate all values _defined_ by this instruction */
workset_clear(new_vals);
if (get_irn_mode(irn) == mode_T) { /* special handling for tuples and projs */
- ir_node *proj;
- for(proj=sched_next(irn); is_Proj(proj); proj=sched_next(proj))
+ const ir_edge_t *edge;
+
+ foreach_out_edge(irn, edge) {
+ ir_node *proj = get_edge_src_irn(edge);
workset_insert(env, new_vals, proj);
+ }
} else {
workset_insert(env, new_vals, irn);
}
if(n_regs == 0)
return;
- be_invalidate_liveness(birg);
- be_assure_liveness(birg);
+ be_liveness_assure_sets(be_assure_liveness(birg));
+
/* construct control flow loop tree */
if(! (get_irg_loopinfo_state(irg) & loopinfo_cf_consistent)) {
construct_cf_backedges(irg);
}
+ be_clear_links(irg);
+
/* init belady env */
obstack_init(&env.ob);
env.arch = birg->main_env->arch_env;
} else {
env.senv = spill_env;
}
- DEBUG_ONLY(be_set_spill_env_dbg_module(env.senv, dbg);)
- be_clear_links(irg);
/* Decide which phi nodes will be spilled and place copies for them into the graph */
irg_block_walk_graph(irg, compute_live_ins, NULL, &env);
/* Fix high register pressure with belady algorithm */