aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2005-03-15 15:46:52 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2005-03-15 15:46:52 +0000
commit0ca89db7aa51322aa15f6d89b692b20ad5898c89 (patch)
treee9b66aeb17137e986ffab59c06b2a65248d6ccac
parent09c239f69814c6c85f5eba1b57e50d8a9ee1acae (diff)
downloadgcc-0ca89db7aa51322aa15f6d89b692b20ad5898c89.zip
gcc-0ca89db7aa51322aa15f6d89b692b20ad5898c89.tar.gz
gcc-0ca89db7aa51322aa15f6d89b692b20ad5898c89.tar.bz2
s390.c (s390_secondary_output_reload_class): Adapt check for non-offsettable memory references to cope with outstanding...
* 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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/s390/s390.c11
2 files changed, 11 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b4489a4..8d70205 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 3358f28..2514a43 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -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))