OSDN Git Service

(relax_delay_slots): When invert a conditional jump over a single
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Nov 1994 00:33:56 +0000 (00:33 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Nov 1994 00:33:56 +0000 (00:33 +0000)
unconditional jump, invert the INSN_FROM_TARGET_P bit of insns in the
delay slots.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8452 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/reorg.c

index ec21a35..cd7d652 100644 (file)
@@ -3972,6 +3972,17 @@ relax_delay_slots (first)
 
              if (invert_jump (delay_insn, label))
                {
+                 int i;
+
+                 /* Must update the INSN_FROM_TARGET_P bits now that
+                    the branch is reversed, so that mark_target_live_regs
+                    will handle the delay slot insn correctly.  */
+                 for (i = 1; i < XVECLEN (PATTERN (insn), 0); i++)
+                   {
+                     rtx slot = XVECEXP (PATTERN (insn), 0, i);
+                     INSN_FROM_TARGET_P (slot) = ! INSN_FROM_TARGET_P (slot);
+                   }
+
                  delete_insn (next);
                  next = insn;
                }