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
This commit is contained in:
parent
98d654f60c
commit
126db1fa32
15
gcc/reorg.c
15
gcc/reorg.c
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue