aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-01-20 23:06:42 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2012-01-20 23:06:42 +0100
commit82294ec1a9a71e57dc4821649643026d27860701 (patch)
tree1e2dccdc5621d858420ef23ef8ffd8096969533a
parent751649443b7039b79eb66079bab29aad75d41cb0 (diff)
downloadgcc-82294ec1a9a71e57dc4821649643026d27860701.zip
gcc-82294ec1a9a71e57dc4821649643026d27860701.tar.gz
gcc-82294ec1a9a71e57dc4821649643026d27860701.tar.bz2
re PR tree-optimization/51914 ([4.7] vect-intfloat-conversion4a/b tests fail for arm-linux-gnueabi)
PR tree-optimization/51914 * tree-vect-stmts.c (vectorizable_conversion): For cvt_type && modifier == WIDEN, put temporary with cvt_type at the beginning of vec_dsts and set vec_dest to temporary with vectype_out. From-SVN: r183356
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/tree-vect-stmts.c10
2 files changed, 15 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a863157..22a3a0f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2012-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/51914
+ * tree-vect-stmts.c (vectorizable_conversion): For
+ cvt_type && modifier == WIDEN, put temporary with cvt_type
+ at the beginning of vec_dsts and set vec_dest to temporary
+ with vectype_out.
+
2012-01-20 Eric Botcazou <ebotcazou@adacore.com>
* cfgrtl.c (rtl_dump_bb): Do not dump insns for {ENTRY|EXIT}_BLOCK.
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 4deb16b..8e2b5fe 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -1,5 +1,5 @@
/* Statement Analysis and Transformation for Vectorization
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Dorit Naishlos <dorit@il.ibm.com>
and Ira Rosen <irar@il.ibm.com>
@@ -2420,7 +2420,9 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi,
from supportable_*_operation, and store them in the correct order
for future use in vect_create_vectorized_*_stmts (). */
vec_dsts = VEC_alloc (tree, heap, multi_step_cvt + 1);
- vec_dest = vect_create_destination_var (scalar_dest, vectype_out);
+ vec_dest = vect_create_destination_var (scalar_dest,
+ (cvt_type && modifier == WIDEN)
+ ? cvt_type : vectype_out);
VEC_quick_push (tree, vec_dsts, vec_dest);
if (multi_step_cvt)
@@ -2435,7 +2437,9 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi,
}
if (cvt_type)
- vec_dest = vect_create_destination_var (scalar_dest, cvt_type);
+ vec_dest = vect_create_destination_var (scalar_dest,
+ modifier == WIDEN
+ ? vectype_out : cvt_type);
if (!slp_node)
{