https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123318
--- Comment #2 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jeff Law <[email protected]>: https://gcc.gnu.org/g:7274c781e8e0ad113c4a16427b83f7e8b8107c70 commit r16-6441-g7274c781e8e0ad113c4a16427b83f7e8b8107c70 Author: Jeff Law <[email protected]> Date: Tue Dec 30 10:38:07 2025 -0700 [RISC-V][PR target/123318] Use a Pmode temporary for output of auipc In the explict-relocs path through the RISC-V backend we generate sequences using auipc which stores its result in a GPR. Under the right circumstances we can end up with cases where we try to use pseudos which may not be Pmode sized or worse yet may be a floating point mode. This patch forces those paths to generate a fresh temporary when the provided one isn't already Pmode. That helps this bug, but I'm not 100% convinced the explict-relocs stuff is correct and I wouldn't be surprised to find other bugs lurking in here. Bootstrapped & regression tested on the Pioneer and regression tested on riscv{32,64}-elf as well. Will commit once pre-commit CI gives it the green light. PR target/123318 gcc/ * config/riscv/riscv.cc (riscv_legitimize_const_move): Force riscv_split_symbol to generate a new temporary if the provided one isn't Pmode. gcc/testsuite/ * gcc.target/riscv/pr123318.c: New test.
