From 9e8b2461bd1f8b308ca1d0fe406e46a97822316c Mon Sep 17 00:00:00 2001
From: Richard Kenner <kenner@gcc.gnu.org>
Date: Tue, 15 Nov 1994 19:33:56 -0500
Subject: [PATCH] (relax_delay_slots): When invert a conditional jump over a
 single unconditional jump...

(relax_delay_slots): When invert a conditional jump over a single
unconditional jump, invert the INSN_FROM_TARGET_P bit of insns in the
delay slots.

From-SVN: r8452
---
 gcc/reorg.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gcc/reorg.c b/gcc/reorg.c
index ec21a3503824..cd7d6528f24b 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -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;
 		}
-- 
GitLab