diff options
author | uweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-03-15 15:46:52 +0000 |
---|---|---|
committer | uweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-03-15 15:46:52 +0000 |
commit | 6938bdf83f5ac8a41e29d9416c447095002970d1 (patch) | |
tree | e9b66aeb17137e986ffab59c06b2a65248d6ccac | |
parent | 76d919ee886b5ff7e53a206cd4b5f34fce7429cb (diff) | |
download | gcc-6938bdf83f5ac8a41e29d9416c447095002970d1.tar.gz |
* config/s390/s390.c (s390_secondary_output_reload_class): Adapt check
for non-offsettable memory references to cope with outstanding reload
replacements, take 2.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96480 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/s390/s390.c | 11 |
2 files changed, 11 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b4489a48013..8d702051f8a 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 3358f28909b..2514a43a940 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)) |