https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102252
--- Comment #3 from ktkachov at gcc dot gnu.org --- The RTL for the offending insn: (insn 9 8 10 (set (reg:VNx16BI 68 p0) (mem:VNx16BI (plus:DI (mult:DI (reg:DI 1 x1 [93]) (const_int 8 [0x8])) (reg/f:DI 0 x0 [92])) [2 work_3(D)->array[offset_4(D)]+0 S8 A16])) "asm.c":29:29 4465 {*aarch64_sve_movvnx16bi} (nil)) That addressing mode isn't valid for predicate loads. In aarch64.c:aarch64_classify_address if we set allow_reg_index_p to false when vec_flags & VEC_SVE_PRED that fixes it, but will need more testing