diff options
author | Richard Ball <richard.ball@arm.com> | 2024-02-01 17:18:28 +0000 |
---|---|---|
committer | Richard Ball <richard.ball@arm.com> | 2024-02-01 17:18:28 +0000 |
commit | 4571b4d413a4ba5f1e2d429a2623180ad1c73c0f (patch) | |
tree | 88a77b9931464fc7ae8365294b86bfec18c6acbd | |
parent | 314cbfe2980b32f5b91141be54dd019028284320 (diff) | |
download | gcc-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.
-rw-r--r-- | gcc/tree-vect-slp.cc | 3 |
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)) |