From: Richard Biener Date: Sun, 23 Jun 2024 09:26:39 +0000 (+0200) Subject: tree-optimization/115597 - allow CSE of two-operator VEC_PERM nodes X-Git-Tag: basepoints/gcc-16~7988 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2a345214fc332b6f0821edf394ff8802b768db1d;p=thirdparty%2Fgcc.git 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 --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. */