static int global_pass_enabled = 1;
static const lc_opt_table_entry_t options[] = {
- LC_OPT_ENT_ENUM_INT ("asf", "already spilled factor", &already_spilled_factor),
- LC_OPT_ENT_BOOL ("remat", "rematerializable ops get infinite long live ranges", &remat_live_range_ext),
- LC_OPT_ENT_BOOL ("global", "rematerializable ops get infinite long live ranges", &global_pass_enabled),
+ LC_OPT_ENT_ENUM_INT ("asf", "already spilled factor", &already_spilled_factor),
+ LC_OPT_ENT_BOOL ("remat", "rematerializable ops get infinite long live ranges", &remat_live_range_ext),
+ LC_OPT_ENT_BOOL ("global", "rematerializable ops get infinite long live ranges", &global_pass_enabled),
LC_OPT_LAST
};
use->next = curr;
use->irn = irn;
- if (curr)
+ if (curr) {
curr->is_first_use = 0;
+ assert(curr->step >= use->step);
+ }
phase_set_irn_data(&bi->next_uses, op, use);
}
static INLINE unsigned get_curr_distance(block_info_t *bi, const ir_node *irn, int is_usage)
{
belady_env_t *env = bi->bel;
+ int curr_step = sched_get_time_step(env->instr);
next_use_t *use = get_current_use(bi, irn);
- int curr_step = sched_get_time_step(irn);
int flags = arch_irn_get_flags(env->arch, irn);
assert(!(flags & arch_irn_flags_ignore));
use = use->next;
if (use) {
- unsigned res = use->step - curr_step;
+ unsigned res = use->step - curr_step;
assert(use->step >= curr_step);