X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbelistsched.c;h=45e6c445e11d299ee0c2f5a75333a4de1cc643fb;hb=c7997cc309ae96a03d5b9084a9d565db2dda57fa;hp=9a9c6906ee28ed7740b263100950ae4c04483cd4;hpb=10d1ae80510227bba9f4c3513aba8d72434c823f;p=libfirm diff --git a/ir/be/belistsched.c b/ir/be/belistsched.c index 9a9c6906e..45e6c445e 100644 --- a/ir/be/belistsched.c +++ b/ir/be/belistsched.c @@ -75,11 +75,17 @@ static int cmp_usage(const void *a, const void *b) } #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); @@ -403,9 +409,9 @@ typedef struct _block_sched_env_t { 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; /** @@ -600,12 +606,12 @@ static void list_sched_block(ir_node *block, void *env_ptr) 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);