aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-stmts.c
diff options
context:
space:
mode:
authorNathan Froyd <froydnj@gcc.gnu.org>2010-11-01 18:58:30 +0000
committerNathan Froyd <froydnj@gcc.gnu.org>2010-11-01 18:58:30 +0000
commite7e9eb2f27fb3bc9b95de1881e5461c1133a25bc (patch)
tree9735446d963776d1da355444a3a00df028cd2e7b /gcc/tree-vect-stmts.c
parentd0d7f522e8ae999d4d31b9906626f87209785811 (diff)
downloadgcc-e7e9eb2f27fb3bc9b95de1881e5461c1133a25bc.zip
gcc-e7e9eb2f27fb3bc9b95de1881e5461c1133a25bc.tar.gz
gcc-e7e9eb2f27fb3bc9b95de1881e5461c1133a25bc.tar.bz2
re PR tree-optimization/46259 (Revision 166102 failed 416.gamess in SPEC CPU 2006)
gcc/ 2010-11-01 Nathan Froyd <froydnj@codesourcery.com> PR tree-optimization/46259 Revert: 2010-10-30 Nathan Froyd <froydnj@codesourcery.com> * tree-vect-stmts.c (vect_get_vec_def_for_operand): Use build_vector_from_val. gcc/testsuite/ 2010-11-01 H.J. Lu <hongjiu.lu@intel.com> Nathan Froyd <froydnj@codesourcery.com> PR tree-optimization/46259 * gfortran.dg/pr46259.f: New testcase. From-SVN: r166139
Diffstat (limited to 'gcc/tree-vect-stmts.c')
-rw-r--r--gcc/tree-vect-stmts.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 67e9e2b..183bb11 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -987,7 +987,9 @@ vect_get_vec_def_for_operand (tree op, gimple stmt, tree *scalar_def)
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
tree vec_inv;
tree vec_cst;
+ tree t = NULL_TREE;
tree def;
+ int i;
enum vect_def_type dt;
bool is_simple_use;
tree vector_type;
@@ -1049,7 +1051,13 @@ vect_get_vec_def_for_operand (tree op, gimple stmt, tree *scalar_def)
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "Create vector_inv.");
- vec_inv = build_vector_from_val (vector_type, def);
+ for (i = nunits - 1; i >= 0; --i)
+ {
+ t = tree_cons (NULL_TREE, def, t);
+ }
+
+ /* FIXME: use build_constructor directly. */
+ vec_inv = build_constructor_from_list (vector_type, t);
return vect_init_vector (stmt, vec_inv, vector_type, NULL);
}