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.