aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2008-01-22 21:12:05 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2008-01-22 16:12:05 -0500
commit1a23970d0e21f1e88824425a716230a786a1a0c5 (patch)
treefdc37934b95c6a3ee5e856551da88feb6fb16a38
parent7655e009c8f506454a5cc16bace7282b67513c00 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c10
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);