https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92597
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Using r constraint for long double doesn't make much sense, long double on ix86 is something that can be held in memory or i387 stack, but you don't want that in GPRs. "+m" works, so does "+g". With "+m" it works because the constant is forced into memory and thus the memory is naturally matching, "+g" is internally turned into "=g" and "0" and so ends up matching too, but "+m,r" is internally turned into "=m,r" "m,0" rather than "=m,r" "0,0" and so the memory can be different and is in this case, the input (i.e. %1) is .rodata memory with the constant and output (i.e. %0) is some stack slot.