Commit 126db1fa by Jeff Law

reorg.c (fill_simple_delay_slots): Try to fill from the target of an…

reorg.c (fill_simple_delay_slots): Try to fill from the target of an unconditional branch if necessary.

        * reorg.c (fill_simple_delay_slots): Try to fill from the
        target of an unconditional branch if necessary.

From-SVN: r10920
parent 98d654f6
......@@ -2804,7 +2804,7 @@ fill_simple_delay_slots (first, non_jumps_p)
register int i, j;
int num_unfilled_slots = unfilled_slots_next - unfilled_slots_base;
struct resources needed, set;
register int slots_to_fill, slots_filled;
int slots_to_fill, slots_filled;
rtx delay_list;
for (i = 0; i < num_unfilled_slots; i++)
......@@ -3136,6 +3136,19 @@ fill_simple_delay_slots (first, non_jumps_p)
}
}
/* If this is an unconditional jump, then try to get insns from the
target of the jump. */
if (GET_CODE (insn) == JUMP_INSN
&& simplejump_p (insn)
&& slots_filled != slots_to_fill)
delay_list
= fill_slots_from_thread (insn, const_true_rtx,
next_active_insn (JUMP_LABEL (insn)),
NULL, 1, 1,
own_thread_p (JUMP_LABEL (insn),
JUMP_LABEL (insn), 0),
0, slots_to_fill, &slots_filled);
if (delay_list)
unfilled_slots_base[i]
= emit_delay_sequence (insn, delay_list,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment