From: Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
Date: Wed, 31 Jan 2001 00:20:44 +0000 (+0100)
Subject: regmove.c (try_auto_increment): Change REG_DEAD into REG_UNUSED when register dies... 
X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2f33c6356126df5e17e1f8dcd44e4f4c52278b3b;p=gcc.git

regmove.c (try_auto_increment): Change REG_DEAD into REG_UNUSED when register dies in the insn.

        * regmove.c (try_auto_increment): Change REG_DEAD into REG_UNUSED
        when register dies in the insn.

From-SVN: r39358
---

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 10488406f26..839d4f4db34 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-01-30  Herman A.J. ten Brugge  <Haj.Ten.Brugge@net.HCC.nl>
+
+	* regmove.c (try_auto_increment): Change REG_DEAD into REG_UNUSED
+	when register dies in the insn.
+
 2001-01-30  Neil Booth  <neil@daikokuya.demon.co.uk>
 
 	* diagnostic.c (fatal): Fix word wrap.
diff --git a/gcc/regmove.c b/gcc/regmove.c
index e3b6cf9970e..cbbeb835c7e 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -146,6 +146,16 @@ try_auto_increment (insn, inc_insn, inc_insn_set, reg, increment, pre)
 			       gen_rtx_fmt_e (inc_code, Pmode, reg), 1);
 	      if (apply_change_group ())
 		{
+		  /* If there is a REG_DEAD note on this insn, we must
+		     change this not to REG_UNUSED meaning that the register
+		     is set, but the value is dead.  Failure to do so will
+		     result in a sched1 abort -- when it recomputes lifetime
+		     information, the number of REG_DEAD notes will have
+		     changed.  */
+		  rtx note = find_reg_note (insn, REG_DEAD, reg);
+		  if (note)
+		    PUT_MODE (note, REG_UNUSED);
+
 		  REG_NOTES (insn)
 		    = gen_rtx_EXPR_LIST (REG_INC,
 					 reg, REG_NOTES (insn));