aboutsummaryrefslogtreecommitdiff
path: root/gcc/reorg.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-08-25 18:50:26 +0000
committerJeff Law <law@gcc.gnu.org>1998-08-25 12:50:26 -0600
commitc3a3b536472eef9287eb2706fd03496147a9577f (patch)
tree4cdd06abdaea3fcc110a781a9fdec72f773fe3bb /gcc/reorg.c
parent38f76c25a93c43e508de67a0c620a57f1bce2eee (diff)
downloadgcc-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
Diffstat (limited to 'gcc/reorg.c')
-rw-r--r--gcc/reorg.c27
1 files changed, 25 insertions, 2 deletions
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);