]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
alias.c (init_alias_analysis): Avoid self-referential value when setting reg_known_va...
authorJeffrey A Law <law@cygnus.com>
Sun, 14 Feb 1999 23:43:25 +0000 (23:43 +0000)
committerJeff Law <law@gcc.gnu.org>
Sun, 14 Feb 1999 23:43:25 +0000 (16:43 -0700)
        Tue Feb  9 21:14:03 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.

From-SVN: r25210

gcc/ChangeLog
gcc/alias.c

index 9d7affa097765bbfb6cf5711e321c866d1d3d021..4ae0e99384138132a786d5d1601ec79d408e956f 100644 (file)
@@ -1,5 +1,9 @@
 Sun Feb 14 23:05:34 1999  Jeffrey A Law  (law@cygnus.com)
 
+       Tue Feb  9 21:14:03 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.
+
        Mon Aug 17 02:03:55 1998  Richard Henderson  <rth@cygnus.com>
        * regclass.c (allocate_reg_info): Respect MIN when clearing data.
 
index de471394d561949fa2daf8192abe64c4e37fa71e..281e353e10134fbdb7626be27126330bda6bd01e 100644 (file)
@@ -1174,7 +1174,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);