aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.cc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2023-03-21 12:49:36 +0100
committerRichard Biener <rguenther@suse.de>2023-03-21 14:04:31 +0100
commit26adc870e3675591050f37edab46850b97a3c122 (patch)
treea7a7c40e519ea641bd28274957522e931b3ab36a /gcc/tree-vect-loop.cc
parent49a8bce43cdc1d1b48efa5eeb2a4097cfca1dc22 (diff)
downloadgcc-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.cc2
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 ())
{