reorg.c (fill_simple_delay_slots): Do not abort if we encounter an insn on the unfill...
authorJeffrey A Law <law@cygnus.com>
Tue, 25 Aug 1998 18:50:26 +0000 (18:50 +0000)
committerJeff Law <law@gcc.gnu.org>
Tue, 25 Aug 1998 18:50:26 +0000 (12:50 -0600)
        * 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

gcc/ChangeLog
gcc/reorg.c

index d09c48d258819112a8e13aac0ff17e327ee9d8c1..14a93843c6a38fb6059b78c125fe32b0029c0111 100644 (file)
@@ -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
index fb855a9f221596a14b9a6c00d160d4d28c9f9222..cd0b6146271cafe780c501746b18bd3157018f4c 100644 (file)
@@ -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);