diff options
author | David Edelsohn <edelsohn@gnu.org> | 2008-01-22 21:12:05 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2008-01-22 16:12:05 -0500 |
commit | 1a23970d0e21f1e88824425a716230a786a1a0c5 (patch) | |
tree | fdc37934b95c6a3ee5e856551da88feb6fb16a38 | |
parent | 7655e009c8f506454a5cc16bace7282b67513c00 (diff) | |
download | gcc-1a23970d0e21f1e88824425a716230a786a1a0c5.zip gcc-1a23970d0e21f1e88824425a716230a786a1a0c5.tar.gz gcc-1a23970d0e21f1e88824425a716230a786a1a0c5.tar.bz2 |
re PR target/34529 (Wrong code with altivec stores and offsets)
PR target/34529
* config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
Offset addresses are not valid for Altivec or paired float modes.
From-SVN: r131741
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 10 |
2 files changed, 10 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2f80c36..f882548 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-01-22 David Edelsohn <edelsohn@gnu.org> + + PR target/34529 + * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p): + Offset addresses are not valid for Altivec or paired float modes. + 2008-01-22 Jakub Jelinek <jakub@redhat.com> PR c++/34607 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index c730a65..83d8dbd 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -3365,19 +3365,17 @@ rs6000_legitimate_offset_address_p (enum machine_mode mode, rtx x, int strict) case V4SFmode: case V4SImode: /* AltiVec vector modes. Only reg+reg addressing is valid and - constant offset zero should not occur due to canonicalization. - Allow any offset when not strict before reload. */ - return !strict; + constant offset zero should not occur due to canonicalization. */ + return false; case V4HImode: case V2SImode: case V1DImode: case V2SFmode: /* Paired vector modes. Only reg+reg addressing is valid and - constant offset zero should not occur due to canonicalization. - Allow any offset when not strict before reload. */ + constant offset zero should not occur due to canonicalization. */ if (TARGET_PAIRED_FLOAT) - return !strict; + return false; /* SPE vector modes. */ return SPE_CONST_OFFSET_OK (offset); |