From: Richard Ball Date: Thu, 1 Feb 2024 17:18:28 +0000 (+0000) Subject: middle-end: Fix ICE in poly-int.h due to SLP. X-Git-Tag: basepoints/gcc-15~1436 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4571b4d413a4ba5f1e2d429a2623180ad1c73c0f;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 086377a9ac08..7cf9504398c9 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 (vinfo))