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.  */

Reply via email to