aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Ball <richard.ball@arm.com>2024-02-01 17:18:28 +0000
committerRichard Ball <richard.ball@arm.com>2024-02-01 17:18:28 +0000
commit4571b4d413a4ba5f1e2d429a2623180ad1c73c0f (patch)
tree88a77b9931464fc7ae8365294b86bfec18c6acbd /gcc
parent314cbfe2980b32f5b91141be54dd019028284320 (diff)
downloadgcc-4571b4d413a4ba5f1e2d429a2623180ad1c73c0f.zip
gcc-4571b4d413a4ba5f1e2d429a2623180ad1c73c0f.tar.gz
gcc-4571b4d413a4ba5f1e2d429a2623180ad1c73c0f.tar.bz2
middle-end: Fix ICE in poly-int.h due to SLP.
Adds a check to ensure that the input vector arguments to a function are not variable length. Previously, only the output vector of a function was checked. The ICE in question is within the neon-sve-bridge.c test, and is related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111268 gcc/ChangeLog: PR tree-optimization/111268 * tree-vect-slp.cc (vectorizable_slp_permutation_1): Add variable-length check for vector input arguments to a function.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-vect-slp.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
index 086377a..7cf9504 100644
--- a/gcc/tree-vect-slp.cc
+++ b/gcc/tree-vect-slp.cc
@@ -8987,7 +8987,8 @@ vectorizable_slp_permutation_1 (vec_info *vinfo, gimple_stmt_iterator *gsi,
{
/* Calculate every element of every permute mask vector explicitly,
instead of relying on the pattern described above. */
- if (!nunits.is_constant (&npatterns))
+ if (!nunits.is_constant (&npatterns)
+ || !TYPE_VECTOR_SUBPARTS (op_vectype).is_constant ())
return -1;
nelts_per_pattern = ncopies = 1;
if (loop_vec_info linfo = dyn_cast <loop_vec_info> (vinfo))