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.

Reply via email to