aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-06-23 11:26:39 +0200
committerRichard Biener <rguenther@suse.de>2024-06-23 14:18:24 +0200
commit2a345214fc332b6f0821edf394ff8802b768db1d (patch)
tree971af1982598d02130441176bd0d98094a473600
parent8a1795bddcd34284936af4706f762d89c60fc69c (diff)
downloadgcc-2a345214fc332b6f0821edf394ff8802b768db1d.zip
gcc-2a345214fc332b6f0821edf394ff8802b768db1d.tar.gz
gcc-2a345214fc332b6f0821edf394ff8802b768db1d.tar.bz2
tree-optimization/115597 - allow CSE of two-operator VEC_PERM nodes
The following makes sure to always CSE when there's SLP_TREE_SCALAR_STMTS as otherwise a chain of two-operator node operations can result in exponential behavior of the CSE process as likely seen when building 510.parest on aarch64. PR tree-optimization/115597 * tree-vect-slp.cc (vect_cse_slp_nodes): Allow to CSE VEC_PERM nodes.
-rw-r--r--gcc/tree-vect-slp.cc1
1 files changed, 0 insertions, 1 deletions
diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
index 4935cf9..e84aeab 100644
--- a/gcc/tree-vect-slp.cc
+++ b/gcc/tree-vect-slp.cc
@@ -6080,7 +6080,6 @@ static void
vect_cse_slp_nodes (scalar_stmts_to_slp_tree_map_t *bst_map, slp_tree& node)
{
if (SLP_TREE_DEF_TYPE (node) == vect_internal_def
- && SLP_TREE_CODE (node) != VEC_PERM_EXPR
/* Besides some VEC_PERM_EXPR, two-operator nodes also
lack scalar stmts and thus CSE doesn't work via bst_map. Ideally
we'd have sth that works for all internal and external nodes. */