aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanis Johnson <janis187@us.ibm.com>2008-04-08 21:17:16 +0000
committerJanis Johnson <janis@gcc.gnu.org>2008-04-08 21:17:16 +0000
commita0f3928210c3b652eb7804144f59db9f8fe98334 (patch)
tree5d9b630ed4bed107c7b4d426f31d461de392f02d
parent7f62878c1dea1e31a4471bb147c567048019d0eb (diff)
downloadgcc-a0f3928210c3b652eb7804144f59db9f8fe98334.zip
gcc-a0f3928210c3b652eb7804144f59db9f8fe98334.tar.gz
gcc-a0f3928210c3b652eb7804144f59db9f8fe98334.tar.bz2
re PR target/35839 (Altivec with the vectorizer causes an ICE in rs6000_check_sdmode)
PR target/35839 * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional kinds of indirect references. From-SVN: r134107
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c5
2 files changed, 8 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f225874..c7b8ad0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-04-08 Janis Johnson <janis187@us.ibm.com>
+
+ PR target/35839
+ * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
+ kinds of indirect references.
+
2008-04-08 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 3793976..be069cc 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -11226,9 +11226,6 @@ rs6000_check_sdmode (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
return NULL_TREE;
}
- gcc_assert (TREE_CODE (*tp) != ALIGN_INDIRECT_REF);
- gcc_assert (TREE_CODE (*tp) != MISALIGNED_INDIRECT_REF);
-
switch (TREE_CODE (*tp))
{
case VAR_DECL:
@@ -11237,6 +11234,8 @@ rs6000_check_sdmode (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
case RESULT_DECL:
case REAL_CST:
case INDIRECT_REF:
+ case ALIGN_INDIRECT_REF:
+ case MISALIGNED_INDIRECT_REF:
case VIEW_CONVERT_EXPR:
if (TYPE_MODE (TREE_TYPE (*tp)) == SDmode)
return *tp;