alias.c (init_alias_analysis): Avoid self-referential value when setting reg_known_va...
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Sun, 14 Feb 1999 23:44:39 +0000 (23:44 +0000)
committerJeff Law <law@gcc.gnu.org>
Sun, 14 Feb 1999 23:44:39 +0000 (16:44 -0700)
        * alias.c (init_alias_analysis): Avoid self-referential value
        when setting reg_known_value from REG_EQUAL notes.

From-SVN: r25211

gcc/ChangeLog
gcc/alias.c

index 16b3998716d482286e3b59eaf512e36d11478c72..e572ee3f80f06e58a295e86a26df1174fd9947db 100644 (file)
@@ -1,3 +1,8 @@
+Mon Feb 15 00:40:45 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * alias.c (init_alias_analysis): Avoid self-referential value
+       when setting reg_known_value from REG_EQUAL notes.
+
 Sun Feb 14 23:12:10 1999  Richard Henderson  <rth@cygnus.com>
 
        * i386.c (legitimate_address_p): Verify modes of base and index.
index 876b3efbae49057c4412ac97abccaf12d0e414da..eae57c763a153b9ed12f40030ad065838bc8b144 100644 (file)
@@ -1465,7 +1465,8 @@ init_alias_analysis ()
                  && (((note = find_reg_note (insn, REG_EQUAL, 0)) != 0
                       && REG_N_SETS (REGNO (SET_DEST (set))) == 1)
                      || (note = find_reg_note (insn, REG_EQUIV, NULL_RTX)) != 0)
-                 && GET_CODE (XEXP (note, 0)) != EXPR_LIST)
+                 && GET_CODE (XEXP (note, 0)) != EXPR_LIST
+                 && ! reg_overlap_mentioned_p (SET_DEST (set), XEXP (note, 0)))
                {
                  int regno = REGNO (SET_DEST (set));
                  reg_known_value[regno] = XEXP (note, 0);