diff options
author | Richard Biener <rguenther@suse.de> | 2020-06-26 10:08:58 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-06-26 13:04:21 +0200 |
commit | 5b959c22bc0158faa359a5899bf46e815dc65290 (patch) | |
tree | d82541e9a266920e6b853dd68010261ae7e6a6de /gcc/tree-vect-loop.c | |
parent | 87fce92c5c3660a08172a9e29faf54573cedd9ae (diff) | |
download | gcc-5b959c22bc0158faa359a5899bf46e815dc65290.zip gcc-5b959c22bc0158faa359a5899bf46e815dc65290.tar.gz gcc-5b959c22bc0158faa359a5899bf46e815dc65290.tar.bz2 |
tree-optimization/95897 - fix fold-left SLP reduction insert place
This fixes computation of the insertion place for fold-left SLP
reductions where the PHIs do not have vectorized stmts. The
SLP representation isn't perfect here thus the following.
2020-06-26 Richard Biener <rguenther@suse.de>
PR tree-optimization/95897
* tree-vectorizer.h (vectorizable_induction): Remove
unused gimple_stmt_iterator * parameter.
* tree-vect-loop.c (vectorizable_induction): Likewise.
(vect_analyze_loop_operations): Adjust.
* tree-vect-stmts.c (vect_analyze_stmt): Likewise.
(vect_transform_stmt): Likewise.
* tree-vect-slp.c (vect_schedule_slp_instance): Adjust
for fold-left reductions, clarify existing reduction case.
* gcc.dg/vect/pr95897.c: New testcase.
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r-- | gcc/tree-vect-loop.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 08c9f119..bc913ee 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -1573,7 +1573,7 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo) if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_induction_def && ! PURE_SLP_STMT (stmt_info)) ok = vectorizable_induction (loop_vinfo, - stmt_info, NULL, NULL, NULL, + stmt_info, NULL, NULL, &cost_vec); else if ((STMT_VINFO_DEF_TYPE (stmt_info) == vect_reduction_def || (STMT_VINFO_DEF_TYPE (stmt_info) @@ -7285,7 +7285,6 @@ vect_worthwhile_without_simd_p (vec_info *vinfo, tree_code code) bool vectorizable_induction (loop_vec_info loop_vinfo, stmt_vec_info stmt_info, - gimple_stmt_iterator *gsi ATTRIBUTE_UNUSED, gimple **vec_stmt, slp_tree slp_node, stmt_vector_for_cost *cost_vec) { |