#define MAX(a,b) ((a) > (b) ? (a) : (b))
-#define DBG_LEVEL SET_LEVEL_3
+#define DBG_LEVEL SET_LEVEL_0
#undef DUMP_SOLUTION
#undef DUMP_ILP
return ctx->spill;
}
-static ir_node *spill_phi(spill_ilp_t *si, ir_node *phi, ir_node *ctx_irn, pset *rem_phis)
+static ir_node *spill_phi(spill_ilp_t *si, ir_node *phi, ir_node *ctx_irn)
{
int i, n;
ir_mode *mode = get_irn_mode(phi);
ir_node *res;
if(is_Phi(arg))
- res = spill_phi(si, arg, ctx_irn, rem_phis);
+ res = spill_phi(si, arg, ctx_irn);
else
res = spill_irn(si, arg, ctx_irn);
return ctx->spill;
}
-static ir_node *spill_live_range(spill_ilp_t *si, live_range_t *lr, pset *rem_phis)
+static ir_node *spill_live_range(spill_ilp_t *si, live_range_t *lr)
{
const live_range_t *closest = lr->use_head->closest_use;
if(is_Phi(lr->irn) && closest && is_spilled(si, closest))
- return spill_phi(si, lr->irn, lr->irn, rem_phis);
+ return spill_phi(si, lr->irn, lr->irn);
else
return spill_irn(si, lr->irn, lr->irn);
}
static void writeback_results(spill_ilp_t *si)
{
- const be_node_factory_t *fact = si->session_env->main_env->node_factory;
- const arch_env_t *arch_env = si->session_env->main_env->arch_env;
+ const be_node_factory_t *fact = si->session_env->main_env->node_factory;
+ const arch_env_t *arch_env = si->session_env->main_env->arch_env;
ir_node *irn;
irn_use_head_t *uh;
pset *rem_phis = pset_new_ptr_default();
/* Look at each node and examine the usages. */
for(uh = set_first(si->irn_use_heads); uh; uh = set_next(si->irn_use_heads)) {
- live_range_t *lr;
- ir_node **reloads;
+ live_range_t *lr;
+ ir_node **reloads;
- int n_reloads = 0;
- ir_node *irn = uh->irn;
+ int n_reloads = 0;
+ ir_node *irn = uh->irn;
ir_mode *mode = get_irn_mode(irn);
/* Go through all live ranges of the node. */
- list_for_each_entry(live_range_t, lr, &uh->head, list) {
- int spilled = is_spilled(si, lr);
+ list_for_each_entry(live_range_t, lr, &uh->head, list) {
+ int spilled = is_spilled(si, lr);
// int rematd = !is_zero(lpp_get_var_sol(si->lpp, lr->is_remat_var));
if(spilled && !is_end_of_block_use(lr)) {
ir_node *bl = get_nodes_block(lr->user);
- ir_node *spill = spill_live_range(si, lr, rem_phis);
+ ir_node *spill = spill_live_range(si, lr);
ir_node *reload = new_Reload(fact, si->cls,
si->session_env->irg, bl, mode, spill);
sched_add_before(lr->user, reload);
}
- }
+ }
if(n_reloads > 0) {
reloads = obstack_finish(si->obst);
n_reloads, reloads, rem_phis);
obstack_free(si->obst, reloads);
}
- }
+ }
for(irn = pset_first(rem_phis); irn; irn = pset_next(rem_phis)) {
int i, n;