aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-05-21 19:15:33 +0200
committerRichard Biener <rguenther@suse.de>2024-05-22 13:18:28 +0200
commit3507ab1b018a68500e49fa9f1de7caa0f1b53dda (patch)
treef47bc83293131f218c89f2a95e5592207ffdbfa9 /gcc
parent31e9bae0ea5e5413abfa3ca9050e66cc6760553e (diff)
downloadgcc-3507ab1b018a68500e49fa9f1de7caa0f1b53dda.zip
gcc-3507ab1b018a68500e49fa9f1de7caa0f1b53dda.tar.gz
gcc-3507ab1b018a68500e49fa9f1de7caa0f1b53dda.tar.bz2
Fix mixed input kind permute optimization
When change_vec_perm_layout runs into a permute combining two nodes where one is invariant and one internal the partition of one input can be -1 but the other might not be. The following supports this case by simply ignoring inputs with input partiton -1. I'm not sure this is correct but it avoids ICEing when accessing that partitions layout for gcc.target/i386/pr98928.c with the change to avoid splitting store dataref groups during SLP discovery. * tree-vect-slp.cc (change_vec_perm_layout): Ignore an input partition of -1.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-vect-slp.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
index 43f2c15..3f8209b 100644
--- a/gcc/tree-vect-slp.cc
+++ b/gcc/tree-vect-slp.cc
@@ -4640,6 +4640,8 @@ change_vec_perm_layout (slp_tree node, lane_permutation_t &perm,
{
slp_tree in_node = SLP_TREE_CHILDREN (node)[entry.first];
unsigned int in_partition_i = m_vertices[in_node->vertex].partition;
+ if (in_partition_i == -1u)
+ continue;
this_in_layout_i = m_partitions[in_partition_i].layout;
}
if (this_in_layout_i > 0)