https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127500
--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-14 branch has been updated by hongtao Liu <[email protected]>: https://gcc.gnu.org/g:455ccd93ec1b0bfacaa608e45964a9ad400ccd79 commit r14-12883-g455ccd93ec1b0bfacaa608e45964a9ad400ccd79 Author: liuhongt <[email protected]> Date: Sun Sep 20 23:09:00 2026 -0700 i386: Don't split V2DF load when the adjusted address is invalid [PR127500] ix86_split_stlf_stall_load splits a V2DF load from a PARM_DECL into movlpd + movhpd, which needs the load address offset by 8. When the original address already uses the largest encodable displacement, e.g. (mem/c:V2DF (plus:DI (reg/f:DI 7 sp) (const_int 2147483640 [0x7ffffff8]))) adding 8 gives 0x80000000, which is out of range for the signed 32-bit displacement field of an x86 address, and adjust_address ICEs in change_address_1 since the address can no longer be validated after reload. Skip the split in that case. gcc/ChangeLog: PR target/127500 * config/i386/i386.cc (ix86_split_stlf_stall_load): Don't split the load when the address adjusted by 8 is not a valid memory address. gcc/testsuite/ChangeLog: PR target/127500 * gcc.target/i386/pr127500.c: New test. (cherry picked from commit 6bc343fa183a01fa30f70d2c0b70d01e4bd78d62)
