s390.c (s390_secondary_output_reload_class): Adapt check for non-offsettable memory...
authorUlrich Weigand <uweigand@de.ibm.com>
Tue, 15 Mar 2005 15:46:52 +0000 (15:46 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Tue, 15 Mar 2005 15:46:52 +0000 (15:46 +0000)
* config/s390/s390.c (s390_secondary_output_reload_class): Adapt check
for non-offsettable memory references to cope with outstanding reload
replacements, take 2.

From-SVN: r96480

gcc/ChangeLog
gcc/config/s390/s390.c

index b4489a480135cfca70e6a91cc90a7349617f4ac2..8d702051f8a3944fe8155ffd1b4c49c5e8a1064c 100644 (file)
@@ -1,3 +1,9 @@
+2005-03-15  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * config/s390/s390.c (s390_secondary_output_reload_class): Adapt check
+       for non-offsettable memory references to cope with outstanding reload
+       replacements, take 2.
+
 2005-03-15  Uros Bizjak  <uros@kss-loka.si>
 
        PR target/18668
index 3358f28909bd41c54e5d298d4ea2993c0096089f..2514a43a9405615ed206b3b87692efa35caadc94 100644 (file)
@@ -2553,16 +2553,15 @@ enum reg_class
 s390_secondary_output_reload_class (enum reg_class class,
                                    enum machine_mode mode, rtx out)
 {
-  struct s390_address addr;
-
   if ((TARGET_64BIT ? mode == TImode
                     : (mode == DImode || mode == DFmode))
       && reg_classes_intersect_p (GENERAL_REGS, class)
       && GET_CODE (out) == MEM
-      && s390_decompose_address (XEXP (out, 0), &addr)
-      && addr.base && addr.indx
-      && addr.disp && GET_CODE (addr.disp) == CONST_INT
-      && !DISP_IN_RANGE (INTVAL (addr.disp) + GET_MODE_SIZE (mode) - 1))
+      && GET_CODE (XEXP (out, 0)) == PLUS
+      && GET_CODE (XEXP (XEXP (out, 0), 0)) == PLUS
+      && GET_CODE (XEXP (XEXP (out, 0), 1)) == CONST_INT
+      && !DISP_IN_RANGE (INTVAL (XEXP (XEXP (out, 0), 1))
+                        + GET_MODE_SIZE (mode) - 1))
     return ADDR_REGS;
 
   if (reg_classes_intersect_p (CC_REGS, class))