(scan_loop): For the replace_rtx call, copy the rtx that is
authorJim Wilson <wilson@gcc.gnu.org>
Sat, 21 Jan 1995 01:30:34 +0000 (17:30 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Sat, 21 Jan 1995 01:30:34 +0000 (17:30 -0800)
being substituted in before the call.

From-SVN: r8779

gcc/loop.c

index bb48a9ef1c4fc973708662408dc7e26586c86375..e267652bd50ff88727e138e963711d11ba0bd4c6 100644 (file)
@@ -746,10 +746,12 @@ scan_loop (loop_start, end, nregs)
                  && validate_replace_rtx (SET_DEST (set), SET_SRC (set),
                                           reg_single_usage[regno]))
                {
-                 /* Replace any usage in a REG_EQUAL note.  */
+                 /* Replace any usage in a REG_EQUAL note.  Must copy the
+                    new source, so that we don't get rtx sharing between the
+                    SET_SOURCE and REG_NOTES of insn p.  */
                  REG_NOTES (reg_single_usage[regno])
                    = replace_rtx (REG_NOTES (reg_single_usage[regno]),
-                                  SET_DEST (set), SET_SRC (set));
+                                  SET_DEST (set), copy_rtx (SET_SRC (set)));
                                   
                  PUT_CODE (p, NOTE);
                  NOTE_LINE_NUMBER (p) = NOTE_INSN_DELETED;