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.
  • [Bug tree-optimization/119181] ... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to