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

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Pan Li <pa...@gcc.gnu.org>:

https://gcc.gnu.org/g:5bfb5e772f6cf121563f08d27d2c652ea469bbfb

commit r14-3167-g5bfb5e772f6cf121563f08d27d2c652ea469bbfb
Author: Juzhe-Zhong <juzhe.zh...@rivai.ai>
Date:   Fri Aug 11 21:55:42 2023 +0800

    VECT: Fix ICE on MASK_LEN_{LOAD, STORE} when no LEN recorded[PR110989]

    This ICE is caused because of this situation:

    mask__49.21_99 = vect__17.19_96 == { 0.0, ... };
    ...
    vect__6.24_107 = .MASK_LEN_LOAD (vectp.22_105, 32B, mask__49.21_99,
POLY_INT_CST [2, 2], 0);

    The MASK_LEN_LOAD is using real MASK which is produced by the EQ comparison
wheras the LEN
    is the dummy LEN which is the vectorization factor.

    In this situation, we didn't enter 'vect_record_loop_len' since there is no
LEN loop control.
    Then 'LOOP_VINFO_RGROUP_IV_TYPE' is not suitable type for 'build_int_cst'
used for producing
    LEN argument for 'MASK_LEN_LOAD', so use sizetype instead which is
perfectly matching
    RVV length requirement.

    gcc/ChangeLog:
            PR middle-end/110989
            * tree-vect-stmts.cc (vectorizable_store): Replace iv_type with
sizetype.
            (vectorizable_load): Ditto.

    gcc/testsuite/ChangeLog:
            PR middle-end/110989
            * gcc.target/riscv/rvv/autovec/pr110989.c: New test.

Reply via email to