}
#endif
+/**
+ * The trivial selector:
+ * Just assure that branches are executed last, otherwise select
+ * the first node ready.
+ */
static ir_node *trivial_select(void *block_env, pset *ready_set)
{
const arch_env_t *arch_env = block_env;
ir_node *irn = NULL;
+ /* assure that branches are executed last */
for(irn = pset_first(ready_set); irn; irn = pset_next(ready_set)) {
if(arch_irn_classify(arch_env, irn) != arch_irn_class_branch) {
pset_break(ready_set);
pset *ready_set;
pset *already_scheduled;
ir_node *block;
- firm_dbg_module_t *dbg;
const list_sched_selector_t *selector;
void *selector_block_env;
+ DEBUG_ONLY(firm_dbg_module_t *dbg;)
} block_sched_env_t;
/**
INIT_LIST_HEAD(&info->list);
/* Initialize the block scheduling environment */
- be.dbg = firm_dbg_register("firm.be.sched");
be.block = block;
be.curr_time = 0;
be.ready_set = new_pset(node_cmp_func, get_irn_n_edges(block));
be.already_scheduled = new_pset(node_cmp_func, get_irn_n_edges(block));
be.selector = selector;
+ FIRM_DBG_REGISTER(be.dbg, "firm.be.sched");
if(selector->init_block)
be.selector_block_env = selector->init_block(env->selector_env, block);