https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112404

--- Comment #4 from CVS 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:3cc9ad41db87fb85b13a56bff1f930c258542a70

commit r14-5154-g3cc9ad41db87fb85b13a56bff1f930c258542a70
Author: Richard Biener <rguent...@suse.de>
Date:   Mon Nov 6 12:43:11 2023 +0100

    tree-optimization/112404 - two issues with SLP of .MASK_LOAD

    The following fixes an oversight in vect_check_scalar_mask when
    the mask is external or constant.  When doing BB vectorization
    we need to provide a group_size, best via an overload accepting
    the SLP node as argument.

    When fixed we then run into the issue that we have not analyzed
    alignment of the .MASK_LOADs because they were not identified
    as loads by vect_gather_slp_loads.  Fixed by reworking the
    detection.

            PR tree-optimization/112404
            * tree-vectorizer.h (get_mask_type_for_scalar_type): Declare
            overload with SLP node argument.
            * tree-vect-stmts.cc (get_mask_type_for_scalar_type): Implement it.
            (vect_check_scalar_mask): Use it.
            * tree-vect-slp.cc (vect_gather_slp_loads): Properly identify
            loads also for nodes with children, like .MASK_LOAD.
            * tree-vect-loop.cc (vect_analyze_loop_2): Look at the
            representative for load nodes and check whether it is a grouped
            access before looking for load-lanes support.

            * gfortran.dg/pr112404.f90: New testcase.

Reply via email to