https://gcc.gnu.org/g:2a345214fc332b6f0821edf394ff8802b768db1d
commit r15-1565-g2a345214fc332b6f0821edf394ff8802b768db1d Author: Richard Biener <rguent...@suse.de> Date: Sun Jun 23 11:26:39 2024 +0200 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. Diff: --- gcc/tree-vect-slp.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 4935cf9e521..e84aeabef94 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. */