diff options
author | Richard Biener <rguenther@suse.de> | 2020-05-15 11:14:53 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-05-15 13:54:32 +0200 |
commit | 584a3c080bbd6e64131fa53771c7424bcf9d21fa (patch) | |
tree | adacc7be3b6e128a5530b6c5e8354a041a509316 | |
parent | f8e1c0c01823b6d0b20f44c0f218e1798c2ff3b4 (diff) | |
download | gcc-584a3c080bbd6e64131fa53771c7424bcf9d21fa.zip gcc-584a3c080bbd6e64131fa53771c7424bcf9d21fa.tar.gz gcc-584a3c080bbd6e64131fa53771c7424bcf9d21fa.tar.bz2 |
tree-optimization/92260 - improve fix
This improves the fix for PR92260 changing the number of vector
computation to the canonical one, not needing to look at the
using stmt.
2020-05-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/92260
* tree-vect-slp.c (vect_get_constant_vectors): Compute
the number of vector stmts in a canonical way.
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-vect-slp.c | 19 |
2 files changed, 12 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cc761f2..5eaa1b8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2020-05-15 Richard Biener <rguenther@suse.de> + + PR tree-optimization/92260 + * tree-vect-slp.c (vect_get_constant_vectors): Compute + the number of vector stmts in a canonical way. + 2020-05-15 Martin Liska <mliska@suse.cz> * hsa-gen.c (get_symbol_for_decl): Fix misleading indentation diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index 6f62395..15eea74 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -3561,19 +3561,12 @@ vect_get_constant_vectors (vec_info *vinfo, else vector_type = get_vectype_for_scalar_type (vinfo, TREE_TYPE (op), op_node); - /* ??? For lane-reducing ops we should also have the required number - of vector stmts initialized rather than second-guessing here. */ - unsigned int number_of_vectors; - if (is_gimple_assign (stmt_vinfo->stmt) - && (gimple_assign_rhs_code (stmt_vinfo->stmt) == SAD_EXPR - || gimple_assign_rhs_code (stmt_vinfo->stmt) == DOT_PROD_EXPR - || gimple_assign_rhs_code (stmt_vinfo->stmt) == WIDEN_SUM_EXPR)) - number_of_vectors = SLP_TREE_NUMBER_OF_VEC_STMTS (slp_node); - else - number_of_vectors - = vect_get_num_vectors (SLP_TREE_NUMBER_OF_VEC_STMTS (slp_node) - * TYPE_VECTOR_SUBPARTS (stmt_vectype), - vector_type); + poly_uint64 vf = 1; + if (loop_vec_info loop_vinfo = dyn_cast <loop_vec_info> (vinfo)) + vf = loop_vinfo->vectorization_factor; + unsigned int number_of_vectors + = vect_get_num_vectors (vf * group_size, vector_type); + vec_oprnds->create (number_of_vectors); auto_vec<tree> voprnds (number_of_vectors); |