OSDN Git Service

Fix REG_INC note handling in register renamer.
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 10 Nov 2000 10:44:42 +0000 (10:44 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 10 Nov 2000 10:44:42 +0000 (10:44 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37364 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/regrename.c

index b8625b7..4ff995e 100644 (file)
@@ -1,3 +1,8 @@
+2000-11-09  Bernd Schmidt  <bernds@redhat.co.uk>
+
+       * regrename.c (build_def_use): Mark contents of REG_INC notes as
+       needing replacement.
+
 2000-11-09  Jan van Male  <jan.vanmale@fenk.wau.nl>
 
         * c-tree.texi: Fix typos.
index 5078585..b3aa6c2 100644 (file)
@@ -714,10 +714,15 @@ build_def_use (bb, regs_used)
                scan_rtx (insn, loc, class, mark_read, type);
            }
 
-         /* Step 4: Close chains for registers that die here.  */
+         /* Step 4: Close chains for registers that die here.
+            Also record updates for REG_INC notes.  */
          for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
-           if (REG_NOTE_KIND (note) == REG_DEAD)
-             scan_rtx (insn, &XEXP (note, 0), NO_REGS, terminate_dead, OP_IN);
+           {
+             if (REG_NOTE_KIND (note) == REG_DEAD)
+               scan_rtx (insn, &XEXP (note, 0), NO_REGS, terminate_dead, OP_IN);
+             else if (REG_NOTE_KIND (note) == REG_INC)
+               scan_rtx (insn, &XEXP (note, 0), ALL_REGS, mark_read, OP_INOUT);
+           }
 
          /* Step 4B: If this is a call, any chain live at this point
             requires a caller-saved reg.  */