diff options
author | Richard Biener <rguenther@suse.de> | 2023-03-21 12:49:36 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2023-03-21 14:04:31 +0100 |
commit | 26adc870e3675591050f37edab46850b97a3c122 (patch) | |
tree | a7a7c40e519ea641bd28274957522e931b3ab36a /gcc/tree-vect-loop.cc | |
parent | 49a8bce43cdc1d1b48efa5eeb2a4097cfca1dc22 (diff) | |
download | gcc-26adc870e3675591050f37edab46850b97a3c122.zip gcc-26adc870e3675591050f37edab46850b97a3c122.tar.gz gcc-26adc870e3675591050f37edab46850b97a3c122.tar.bz2 |
tree-optimization/109219 - avoid looking at STMT_SLP_TYPE
The following avoids looking at STMT_SLP_TYPE apart from the only
place needing it - transform and analysis of non-SLP loop stmts.
In particular it doesn't have a reliable meaning on SLP representatives
which are also passed as stmt_vinfo to vectorizable_* routines. The
proper way to check in those is to look for the slp_node argument
instead.
PR tree-optimization/109219
* tree-vect-loop.cc (vectorizable_reduction): Check
slp_node, not STMT_SLP_TYPE.
* tree-vect-stmts.cc (vectorizable_condition): Likewise.
* tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
Remove assertion on STMT_SLP_TYPE.
* gcc.dg/torture/pr109219.c: New testcase.
Diffstat (limited to 'gcc/tree-vect-loop.cc')
-rw-r--r-- | gcc/tree-vect-loop.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index 320c15f..1ba9f18 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -7424,7 +7424,7 @@ vectorizable_reduction (loop_vec_info loop_vinfo, } /* Check extra constraints for variable-length unchained SLP reductions. */ - if (STMT_SLP_TYPE (stmt_info) + if (slp_node && !REDUC_GROUP_FIRST_ELEMENT (stmt_info) && !nunits_out.is_constant ()) { |