https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101882
--- Comment #21 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- (In reply to Segher Boessenkool from comment #20) > (In reply to Peter Bergner from comment #17) > > The reason operands 0, 1 and 4 all use the register r23, is that each > > operand is using the same pseudo, coming from variable "x", which is a user > > defined hard register: > > > > register long x asm ("s0"); > > So, user error. The user cannot anticipate what the RTL will become like after optimization passes at all. So it means the user just *cannot* use defined hard register in the code at all, as long as the machine description has an earlyclobber? That would just seem insane. Or would we need to add the checks like https://gcc.gnu.org/pipermail/gcc-patches/2025-July/688634.html for every insn having an earlyclobber? That would seem insane too IMO.