X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fsparc%2Fsparc_emitter.c;h=ac2bb1d99c48aa6d8b3bdcdccaaea9ece9716b18;hb=102e656aacc831319f5677cb4d024df1b96fe39e;hp=cd28c76e7480eb1f682070db2e62bac7913ddd91;hpb=f7e854b67832df74cfd24c42c81b7f45f2d29df3;p=libfirm diff --git a/ir/be/sparc/sparc_emitter.c b/ir/be/sparc/sparc_emitter.c index cd28c76e7..ac2bb1d99 100644 --- a/ir/be/sparc/sparc_emitter.c +++ b/ir/be/sparc/sparc_emitter.c @@ -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 */