* reload1.c (reload): Ignore MEM REG_EQUIV notes if the equivalent
authoruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Mar 2002 21:02:24 +0000 (21:02 +0000)
committeruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Mar 2002 21:02:24 +0000 (21:02 +0000)
is not a valid memory_operand.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50681 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/reload1.c

index 87e5ca1..5f02f15 100644 (file)
@@ -1,3 +1,8 @@
+2002-03-12  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * reload1.c (reload): Ignore MEM REG_EQUIV notes if the equivalent
+       is not a valid memory_operand.
+
 2002-03-12  Bob Wilson  <bob.wilson@acm.org>
 
        * config/xtensa/xtensa-config.h: Define XCHAL_HAVE_LOOPS.
index a3519ef..fce489d 100644 (file)
@@ -790,7 +790,12 @@ reload (first, global)
              i = REGNO (SET_DEST (set));
              if (i > LAST_VIRTUAL_REGISTER)
                {
-                 if (GET_CODE (x) == MEM)
+                 /* It can happen that a REG_EQUIV note contains a MEM
+                    that is not a legitimate memory operand.  As later
+                    stages of reload assume that all addresses found
+                    in the reg_equiv_* arrays were originally legitimate,
+                    we ignore such REG_EQUIV notes.  */
+                 if (memory_operand (x, VOIDmode))
                    {
                      /* Always unshare the equivalence, so we can
                         substitute into this insn without touching the