diff options
author | Richard Biener <rguenther@suse.de> | 2019-10-21 11:32:25 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-10-21 11:32:25 +0000 |
commit | ae7f3143a3876378d051e64c8e68718f27c41075 (patch) | |
tree | 07edf24212b9ed0a52b0eaed486a193707dee60f /gcc/tree-vect-loop.c | |
parent | c5dc215df17071281c21450fa2d584e1161e4bc2 (diff) | |
download | gcc-ae7f3143a3876378d051e64c8e68718f27c41075.zip gcc-ae7f3143a3876378d051e64c8e68718f27c41075.tar.gz gcc-ae7f3143a3876378d051e64c8e68718f27c41075.tar.bz2 |
re PR tree-optimization/92161 (ICE in vect_get_vec_def_for_stmt_copy, at tree-vect-stmts.c:1687)
2019-10-21 Richard Biener <rguenther@suse.de>
PR tree-optimization/92161
* tree-vect-loop.c (vect_analyze_loop_2): Reset stmts def-type
for reductions.
* gfortran.dg/pr92161.f: New testcase.
From-SVN: r277240
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r-- | gcc/tree-vect-loop.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index d073620..a7f19ca 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -2260,6 +2260,17 @@ again: { stmt_vec_info stmt_info = loop_vinfo->lookup_stmt (gsi_stmt (si)); STMT_SLP_TYPE (stmt_info) = loop_vect; + if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_reduction_def + || STMT_VINFO_DEF_TYPE (stmt_info) == vect_double_reduction_def) + { + /* vectorizable_reduction adjusts reduction stmt def-types, + restore them to that of the PHI. */ + STMT_VINFO_DEF_TYPE (STMT_VINFO_REDUC_DEF (stmt_info)) + = STMT_VINFO_DEF_TYPE (stmt_info); + STMT_VINFO_DEF_TYPE (vect_stmt_to_vectorize + (STMT_VINFO_REDUC_DEF (stmt_info))) + = STMT_VINFO_DEF_TYPE (stmt_info); + } } for (gimple_stmt_iterator si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si)) |