reorg.c (delete_from_delay_slot): If we have a barrier after the sequence containing...
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Thu, 20 May 2004 18:36:50 +0000 (18:36 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Thu, 20 May 2004 18:36:50 +0000 (18:36 +0000)
* reorg.c (delete_from_delay_slot): If we have a barrier after the
sequence containing the insn to be deleted, always reemit it.

From-SVN: r82065

gcc/ChangeLog
gcc/reorg.c

index 8d00704e86f0ed4dc37f29ea72ff9278acbbfb8b..e2f342598612c37749c40f05c58264151c04686d 100644 (file)
@@ -1,3 +1,8 @@
+2004-05-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * reorg.c (delete_from_delay_slot): If we have a barrier after the
+       sequence containing the insn to be deleted, always reemit it.
+
 2004-05-20  Richard Henderson  <rth@redhat.com>
 
        PR 15454
index 2ae0a8f2259f57a77c6be28daf82f21b0494f86f..dd9737b506fb336c19c3df2d4115f4443e47227f 100644 (file)
@@ -570,6 +570,7 @@ delete_from_delay_slot (rtx insn)
   rtx trial, seq_insn, seq, prev;
   rtx delay_list = 0;
   int i;
+  int had_barrier = 0;
 
   /* We first must find the insn containing the SEQUENCE with INSN in its
      delay slot.  Do this by finding an insn, TRIAL, where
@@ -583,6 +584,9 @@ delete_from_delay_slot (rtx insn)
   seq_insn = PREV_INSN (NEXT_INSN (trial));
   seq = PATTERN (seq_insn);
 
+  if (NEXT_INSN (seq_insn) && GET_CODE (NEXT_INSN (seq_insn)) == BARRIER)
+    had_barrier = 1;
+
   /* Create a delay list consisting of all the insns other than the one
      we are deleting (unless we were the only one).  */
   if (XVECLEN (seq, 0) > 2)
@@ -597,8 +601,8 @@ delete_from_delay_slot (rtx insn)
   delete_related_insns (seq_insn);
   add_insn_after (trial, prev);
 
-  if (GET_CODE (trial) == JUMP_INSN
-      && (simplejump_p (trial) || GET_CODE (PATTERN (trial)) == RETURN))
+  /* If there was a barrier after the old SEQUENCE, remit it.  */
+  if (had_barrier)
     emit_barrier_after (trial);
 
   /* If there are any delay insns, remit them.  Otherwise clear the