API change: lower_intrinsics() uses size_t for length now.
[libfirm] / ir / be / sparc / sparc_emitter.c
index cd28c76..ac2bb1d 100644 (file)
@@ -332,7 +332,7 @@ void sparc_emit_fp_mode_suffix(const ir_node *node)
 
 static ir_node *get_jump_target(const ir_node *jump)
 {
-       return get_irn_link(jump);
+       return (ir_node*)get_irn_link(jump);
 }
 
 /**
@@ -352,7 +352,7 @@ static int get_sparc_Call_dest_addr_pos(const ir_node *node)
 static bool ba_is_fallthrough(const ir_node *node)
 {
        ir_node *block      = get_nodes_block(node);
-       ir_node *next_block = get_irn_link(block);
+       ir_node *next_block = (ir_node*)get_irn_link(block);
        return get_irn_link(node) == next_block;
 }
 
@@ -439,7 +439,7 @@ static const ir_node *pick_delay_slot_for(const ir_node *node)
                for (i = 0; i < arity; ++i) {
                        ir_node               *in  = get_irn_n(node, i);
                        const arch_register_t *reg = arch_get_irn_register(in);
-                       if (reg == &sparc_gp_regs[REG_O7]) {
+                       if (reg == &sparc_registers[REG_O7]) {
                                check = skip_Proj(in);
                                break;
                        }
@@ -451,9 +451,6 @@ static const ir_node *pick_delay_slot_for(const ir_node *node)
        while (sched_has_prev(schedpoint)) {
                schedpoint = sched_prev(schedpoint);
 
-               if (tries++ >= PICK_DELAY_SLOT_MAX_DISTANCE)
-                       break;
-
                if (has_delay_slot(schedpoint))
                        break;
 
@@ -461,6 +458,9 @@ static const ir_node *pick_delay_slot_for(const ir_node *node)
                if (is_no_instruction(schedpoint))
                        continue;
 
+               if (tries++ >= PICK_DELAY_SLOT_MAX_DISTANCE)
+                       break;
+
                if (emits_multiple_instructions(schedpoint))
                        continue;
 
@@ -801,7 +801,7 @@ static void emit_sparc_branch(const ir_node *node, get_cc_func get_cc)
        block = get_nodes_block(node);
 
        /* we have a block schedule */
-       next_block = get_irn_link(block);
+       next_block = (ir_node*)get_irn_link(block);
 
        if (get_irn_link(proj_true) == next_block) {
                /* exchange both proj's so the second one can be omitted */