aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-04-17 08:12:58 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-04-17 08:12:58 +0000
commit730e78b04506e157c2b0f309f8250d2d9d46a77d (patch)
treeda4f534b6dca152e478245167157a1643b16b130 /gcc/tree-vect-loop.c
parent1428105c0d7ca7846cb1e1ad8929f4a4dff6ea08 (diff)
downloadgcc-730e78b04506e157c2b0f309f8250d2d9d46a77d.zip
gcc-730e78b04506e157c2b0f309f8250d2d9d46a77d.tar.gz
gcc-730e78b04506e157c2b0f309f8250d2d9d46a77d.tar.bz2
re PR c++/60836 (invalid PHI argument and ICE in verify_gimple)
2014-04-17 Richard Biener <rguenther@suse.de> PR tree-optimization/60836 * tree-vect-loop.c (vect_create_epilog_for_reduction): Force initial PHI args to be gimple values. * g++.dg/vect/pr60836.cc: New testcase. From-SVN: r209468
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r--gcc/tree-vect-loop.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 7ec079a..7f42093 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -3952,8 +3952,12 @@ vect_create_epilog_for_reduction (vec<tree> vect_defs, gimple stmt,
/* Set phi nodes arguments. */
FOR_EACH_VEC_ELT (reduction_phis, i, phi)
{
- tree vec_init_def = vec_initial_defs[i];
- tree def = vect_defs[i];
+ tree vec_init_def, def;
+ gimple_seq stmts;
+ vec_init_def = force_gimple_operand (vec_initial_defs[i], &stmts,
+ true, NULL_TREE);
+ gsi_insert_seq_on_edge_immediate (loop_preheader_edge (loop), stmts);
+ def = vect_defs[i];
for (j = 0; j < ncopies; j++)
{
/* Set the loop-entry arg of the reduction-phi. */