]> gcc.gnu.org Git - gcc.git/commitdiff
regmove.c (try_auto_increment): Change REG_DEAD into REG_UNUSED when register dies...
authorHerman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
Wed, 31 Jan 2001 00:20:44 +0000 (01:20 +0100)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 31 Jan 2001 00:20:44 +0000 (16:20 -0800)
        * regmove.c (try_auto_increment): Change REG_DEAD into REG_UNUSED
        when register dies in the insn.

From-SVN: r39358

gcc/ChangeLog
gcc/regmove.c

index 10488406f267f0bb05b08e28af0850b77971828e..839d4f4db3453f86b772ec806bcb3b4e7342e3d7 100644 (file)
@@ -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.
index e3b6cf9970ee9f050e782803bba0b546038eda33..cbbeb835c7ee2a98175da034f71e47c33ed260f8 100644 (file)
@@ -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));
This page took 0.080812 seconds and 5 git commands to generate.