begnuas: let user specify elf variants
[libfirm] / ir / be / beschednormal.c
index d75e712..c9f7c95 100644 (file)
@@ -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);