https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82181
--- Comment #1 from jcmvbkbc at gcc dot gnu.org --- The issue happens in the splitter movdi_internal in the call chain xtensa_split_operand_pair -> adjust_address_1 -> change_address_1, in line gcc_assert (memory_address_addr_space_p (mode, addr, as)); The original DI object in memory is not fully addressable: it starts at the offset 1020 of its base register, so its second word may not be reached by l32i/s32i. Fix xtensa_mem_offset so that only DI object address completely addressable by 32-bit load/store instructions is considered legitimate.