aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-transform.c
diff options
context:
space:
mode:
authorAndrew Pinski <andrew_pinski@playstation.sony.com>2007-06-26 00:19:44 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2007-06-25 17:19:44 -0700
commit2caf766b63f4ce0b52a9c479ec89427df1faf7cd (patch)
treec135ea5e05f2bb5a18ae2bac92536924cd1f5c1c /gcc/tree-vect-transform.c
parent20ec6b51501a3f0771e88ab2932e4287e3f5b6e8 (diff)
downloadgcc-2caf766b63f4ce0b52a9c479ec89427df1faf7cd.zip
gcc-2caf766b63f4ce0b52a9c479ec89427df1faf7cd.tar.gz
gcc-2caf766b63f4ce0b52a9c479ec89427df1faf7cd.tar.bz2
re PR tree-optimization/32421 (-ftree-vectorize -msse2 ICEs in build2_stat when vectorizing POINTER_PLUS_EXPR)
2007-06-25 Andrew Pinski <andrew_pinski@playstation.sony.com> PR tree-opt/32421 * tree-vect-transform.c (vectorizable_operation): Convert POINTER_PLUS_EXPR over to PLUS_EXPR. 2007-06-25 Andrew Pinski <andrew_pinski@playstation.sony.com> PR tree-opt/32421 * gcc.dg/vect/pr32421.c: New test. From-SVN: r126012
Diffstat (limited to 'gcc/tree-vect-transform.c')
-rw-r--r--gcc/tree-vect-transform.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c
index d9152f9..66228f0 100644
--- a/gcc/tree-vect-transform.c
+++ b/gcc/tree-vect-transform.c
@@ -2968,6 +2968,12 @@ vectorizable_operation (tree stmt, block_stmt_iterator *bsi, tree *vec_stmt)
operation = GIMPLE_STMT_OPERAND (stmt, 1);
code = TREE_CODE (operation);
+
+ /* For pointer addition, we should use the normal plus for
+ the vector addition. */
+ if (code == POINTER_PLUS_EXPR)
+ code = PLUS_EXPR;
+
optab = optab_for_tree_code (code, vectype);
/* Support only unary or binary operations. */