https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119181
--- Comment #13 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by hongtao Liu <liuho...@gcc.gnu.org>: https://gcc.gnu.org/g:1bc5b47f5b06dc4e8d2e7b622a7100b40b8e6b27 commit r16-924-g1bc5b47f5b06dc4e8d2e7b622a7100b40b8e6b27 Author: liuhongt <hongtao....@intel.com> Date: Tue Mar 11 18:40:07 2025 -0700 For datarefs with big gap, split them into different groups. The patch tries to solve miss vectorization for below case. void foo (int* a, int* restrict b) { b[0] = a[0] * a[64]; b[1] = a[65] * a[1]; b[2] = a[2] * a[66]; b[3] = a[67] * a[3]; b[4] = a[68] * a[4]; b[5] = a[69] * a[5]; b[6] = a[6] * a[70]; b[7] = a[7] * a[71]; } In vect_analyze_data_ref_accesses, a[0], a[1], .. a[7], a[64], ..., a[71] are in same group with size of 71. It caused vectorization unprofitable. gcc/ChangeLog: PR tree-optimization/119181 * tree-vect-data-refs.cc (vect_analyze_data_ref_accesses): Split datarefs when there's a gap bigger than MAX_BITSIZE_MODE_ANY_MODE. gcc/testsuite/ChangeLog: * gcc.dg/vect/bb-slp-pr119181.c: New test.