https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109416
--- Comment #4 from Jeffrey A. Law <law at gcc dot gnu.org> --- So the issue here is the rv32 support for 64bit moves is kind of lame. Someone would need to adjust riscv_split_doubleword_move to account for handling (const_int 0) for the upper/lower half better. Second it needs to be adjusted for the possibility that the upper half and lower half need the same value. In which case construct it just once and re-use the value. I can't really justify spending time on rv32 (or rv64 128 bit which likely has the same problem). But I doubt it'd be that hard for someone else to handle.