https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117558
--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Richard Biener <rgue...@gcc.gnu.org>: https://gcc.gnu.org/g:935aaface9469df644a3d926320da68cd796c067 commit r15-5337-g935aaface9469df644a3d926320da68cd796c067 Author: Richard Biener <rguent...@suse.de> Date: Fri Nov 15 08:42:04 2024 +0100 tree-optimization/117558 - peeling for gaps and VL vectors The following ensures that peeling a single iteration for gaps is sufficient by enforcing niter masking (partial vector use) given we cannot (always) statically decide when the vector size isn't known. The condition guarding this and thus statically giving a pass in some cases for VL vectors is questionable, the patch doesn't address this. This fixes a set of known failout from enabling --param vect-force-slp=1 by default. PR tree-optimization/117558 * tree-vectorizer.h (_loop_vec_info::must_use_partial_vectors_p): New. (LOOP_VINFO_MUST_USE_PARTIAL_VECTORS_P): Likewise. * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize must_use_partial_vectors_p. (vect_determine_partial_vectors_and_peeling): Enforce it. (vect_analyze_loop_2): Reset before restarting. * tree-vect-stmts.cc (get_group_load_store_type): When peeling a single gap iteration cannot be determined safe statically enforce the use of partial vectors.