diff options
author | Richard Biener <rguenther@suse.de> | 2014-04-17 08:12:58 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2014-04-17 08:12:58 +0000 |
commit | 730e78b04506e157c2b0f309f8250d2d9d46a77d (patch) | |
tree | da4f534b6dca152e478245167157a1643b16b130 /gcc/tree-vect-loop.c | |
parent | 1428105c0d7ca7846cb1e1ad8929f4a4dff6ea08 (diff) | |
download | gcc-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.c | 8 |
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. */ |