https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105814
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|operand has impossible |16 "=rm" use in inline-asm |constraints - worked with |is rejected at -O0 |previous releases | --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reduced testcase: ``` void collect_regs(unsigned long *regs) { __asm__ __volatile__("" :"=rm"(regs[0]), "=rm"(regs[1]), "=rm"(regs[2]), "=rm"(regs[3]), "=rm"(regs[4]), "=rm"(regs[5]), "=rm"(regs[6]), "=rm"(regs[7]), "=rm"(regs[8]), "=rm"(regs[9]), "=rm"(regs[10]), "=rm"(regs[11]), "=rm"(regs[12]), "=rm"(regs[13]), "=rm"(regs[14]), "=rm"(regs[15])); } ``` This fails only at -O0. at -O1 it works. clang even rejects it at -O0 too.