https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120922
--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Tamar Christina <tnfch...@gcc.gnu.org>: https://gcc.gnu.org/g:6c8d221b74869f2760ded2d67f95dd9d275bc1a2 commit r16-2119-g6c8d221b74869f2760ded2d67f95dd9d275bc1a2 Author: Tamar Christina <tamar.christ...@arm.com> Date: Wed Jul 9 08:39:35 2025 +0100 middle-end: don't set range on partial vectors [PR120922] Before the change in g:309dbcea2cabb31bde1a65cdfd30bb7f87b170a2 we would never set a range for constant VF and requires partial vector loops. I think a range could be set, since I think the number of latch executions is a ceiling division of TYPE_MAX_VALUE / vf. To account for the partial iteration. This would also then deal with the ICE cause in the PR where the chosen VF was much higher than TYPE_MAX_VALUE and that a mask is relied upon to make it safe. Since the patch was supposed to not change behavior I've added an additional partial vector check on the const_vf > 0 check to make it explicit that we only set it on non-partial vectors (alternative would have been to swap the order of the vf.constant(&const_vf)) check, but that would have hidden the requirement sneakily. The second patch adds support for ranges for partial masks. gcc/ChangeLog: PR tree-optimization/120922 * tree-vect-loop-manip.cc (vect_gen_vector_loop_niters): Don't set range for partial vectors. gcc/testsuite/ChangeLog: PR tree-optimization/120922 * gcc.dg/vect/pr120922.c: New test.