X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeschednormal.c;h=c9f7c95114857f52dfb5228ab7031acb6ffefe96;hb=9246866a19201d235897e8ef842a28542911cd68;hp=d75e712c7af1610888d7c391a5eaa251b55ed370;hpb=ea6e9be0bea5ad0079ab09d5e494cf7b5c889552;p=libfirm diff --git a/ir/be/beschednormal.c b/ir/be/beschednormal.c index d75e712c7..c9f7c9511 100644 --- a/ir/be/beschednormal.c +++ b/ir/be/beschednormal.c @@ -120,7 +120,7 @@ static int count_result(const ir_node* irn) if (mode == mode_T) return 1; - if (arch_get_register_req_out(irn)->type & arch_register_req_type_ignore) + if (arch_get_irn_register_req(irn)->type & arch_register_req_type_ignore) return 0; return 1; @@ -152,7 +152,6 @@ static int normal_tree_cost(ir_node* irn, instance_t *inst) if (fc == NULL) { irn_cost_pair* costs; - int i; ir_node* block = get_nodes_block(irn); fc = OALLOCF(&inst->obst, flag_and_cost, costs, arity); @@ -161,7 +160,6 @@ static int normal_tree_cost(ir_node* irn, instance_t *inst) for (i = 0; i < arity; ++i) { ir_node* pred = get_irn_n(irn, i); - int cost; if (is_Phi(irn) || get_irn_mode(pred) == mode_M || is_Block(pred)) { cost = 0; @@ -200,6 +198,8 @@ static int normal_tree_cost(ir_node* irn, instance_t *inst) mode = get_irn_mode(op); if (mode == mode_M) continue; + if (arch_get_irn_flags(op) & arch_irn_flags_not_scheduled) + continue; if (mode != mode_T && arch_irn_is_ignore(op)) continue; cost = MAX(fc->costs[i].cost + n_op_res, cost); @@ -446,7 +446,7 @@ static void sched_normal(ir_graph *irg) be_list_sched_graph(irg, &normal_selector); } -BE_REGISTER_MODULE_CONSTRUCTOR(be_init_sched_normal); +BE_REGISTER_MODULE_CONSTRUCTOR(be_init_sched_normal) void be_init_sched_normal(void) { be_register_scheduler("normal", sched_normal);