diff options
author | Jeffrey A Law <law@cygnus.com> | 1998-08-25 18:50:26 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-08-25 12:50:26 -0600 |
commit | c3a3b536472eef9287eb2706fd03496147a9577f (patch) | |
tree | 4cdd06abdaea3fcc110a781a9fdec72f773fe3bb | |
parent | 38f76c25a93c43e508de67a0c620a57f1bce2eee (diff) | |
download | gcc-c3a3b536472eef9287eb2706fd03496147a9577f.zip gcc-c3a3b536472eef9287eb2706fd03496147a9577f.tar.gz gcc-c3a3b536472eef9287eb2706fd03496147a9577f.tar.bz2 |
reorg.c (fill_simple_delay_slots): Do not abort if we encounter an insn on the unfilled_slots_list that has no...
* reorg.c (fill_simple_delay_slots): Do not abort if we encounter
an insn on the unfilled_slots_list that has no delay slots.
(fill_eager_delay_slots): Similarly.
From-SVN: r21977
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/reorg.c | 27 |
2 files changed, 31 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d09c48d..14a9384 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Tue Aug 25 19:48:46 1998 Jeffrey A Law (law@cygnus.com) + + * reorg.c (fill_simple_delay_slots): Do not abort if we encounter + an insn on the unfilled_slots_list that has no delay slots. + (fill_eager_delay_slots): Similarly. + Tue Aug 25 13:35:20 1998 Nick Clifton <nickc@cygnus.com> * config/v850/v850.c (movsi_source_operand): Treat CONSTANT_P_RTX diff --git a/gcc/reorg.c b/gcc/reorg.c index fb855a9..cd0b614 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -3022,8 +3022,20 @@ fill_simple_delay_slots (non_jumps_p) else flags = get_jump_flags (insn, NULL_RTX); slots_to_fill = num_delay_slots (insn); + + /* Some machine description have defined instructions to have + delay slots only in certain circumstances which may depend on + nearby insns (which change due to reorg's actions). + + For example, the PA port normally has delay slots for unconditional + jumps. + + However, the PA port claims such jumps do not have a delay slot + if they are immediate successors of certain CALL_INSNs. This + allows the port to favor filling the delay slot of the call with + the unconditional jump. */ if (slots_to_fill == 0) - abort (); + continue; /* This insn needs, or can use, some delay slots. SLOTS_TO_FILL says how many. After initialization, first try optimizing @@ -3896,8 +3908,19 @@ fill_eager_delay_slots () continue; slots_to_fill = num_delay_slots (insn); + /* Some machine description have defined instructions to have + delay slots only in certain circumstances which may depend on + nearby insns (which change due to reorg's actions). + + For example, the PA port normally has delay slots for unconditional + jumps. + + However, the PA port claims such jumps do not have a delay slot + if they are immediate successors of certain CALL_INSNs. This + allows the port to favor filling the delay slot of the call with + the unconditional jump. */ if (slots_to_fill == 0) - abort (); + continue; slots_filled = 0; target_label = JUMP_LABEL (insn); |