reload.c (reg_overlap_mentioned_for_reload_p): Handle PLUS and auto_inc_dec values.
authorAlexandre Oliva <aoliva@redhat.com>
Wed, 23 Jan 2002 01:56:22 +0000 (01:56 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Wed, 23 Jan 2002 01:56:22 +0000 (01:56 +0000)
* reload.c (reg_overlap_mentioned_for_reload_p): Handle PLUS and
auto_inc_dec values.

From-SVN: r49118

gcc/ChangeLog
gcc/reload.c

index 77cd5d9ca21796dfcebbec150acad17f17bf8be1..4974da5bd5c9dc3aaad827c05089c742c1fb27df 100644 (file)
@@ -1,3 +1,8 @@
+2002-01-22  Alexandre Oliva  <aoliva@redhat.com>
+
+       * reload.c (reg_overlap_mentioned_for_reload_p): Handle PLUS and
+       auto_inc_dec values.
+
 2002-01-22  Richard Earnshaw  <rearnsha@arm.com>
 
        * config/netbsd-aout.h (SWITCH_TAKES_ARG): Remove bogus white space
index 8f82c9341f5d0aff08fb3dbe8de8fc46e34fe8d2..9b8cdc950205e61e9a478c61046773157eb920f1 100644 (file)
@@ -6166,7 +6166,8 @@ reg_overlap_mentioned_for_reload_p (x, in)
   int regno, endregno;
 
   /* Overly conservative.  */
-  if (GET_CODE (x) == STRICT_LOW_PART)
+  if (GET_CODE (x) == STRICT_LOW_PART
+      || GET_RTX_CLASS (GET_CODE (x)) == 'a')
     x = XEXP (x, 0);
 
   /* If either argument is a constant, then modifying X can not affect IN.  */
@@ -6202,6 +6203,9 @@ reg_overlap_mentioned_for_reload_p (x, in)
   else if (GET_CODE (x) == SCRATCH || GET_CODE (x) == PC
           || GET_CODE (x) == CC0)
     return reg_mentioned_p (x, in);
+  else if (GET_CODE (x) == PLUS)
+    return (reg_overlap_mentioned_for_reload_p (XEXP (x, 0), in)
+           || reg_overlap_mentioned_for_reload_p (XEXP (x, 1), in));
   else
     abort ();