diff options
author | Richard Biener <rguenther@suse.de> | 2024-06-23 11:26:39 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2024-06-23 14:18:24 +0200 |
commit | 2a345214fc332b6f0821edf394ff8802b768db1d (patch) | |
tree | 971af1982598d02130441176bd0d98094a473600 /gcc | |
parent | 8a1795bddcd34284936af4706f762d89c60fc69c (diff) | |
download | gcc-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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-vect-slp.cc | 1 |
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. */ |