https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99554
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The ICE is because of invalid RTL emitted, SET with NULL SET_SRC. This is emitted by aarch64_add_offset, which is called on DImode pseudo dest, const0_rtx src and offset {252,252}. So, factor 252, constant 0. The problem is that expand_mult fails (returns NULL) when called with (DImode, DImode pseudo REG, (const_int 63), NULL, false, true). And that is because of flag_trapv. IMHO either aarch64_add_offset needs to temporarily disable flag_trapv around that expand_mult call, or it can't pass true as last argument when flag_trapv - trapv multiplication handling isn't supported inline.