https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68843
--- Comment #8 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- (In reply to David from comment #7) > Would a doc patch be appropriate too? well, more difficult how to explain it right than to code it right, meanwhile I added a sentence in english this to the patch: --- reg-stack.c (Revision 231696) +++ reg-stack.c (Arbeitskopie) @@ -97,6 +97,9 @@ All implicitly popped input regs must be closer to the top of the reg-stack than any input that is not implicitly popped. + All explicitly referenced input operands may not "skip" a reg. + Otherwise we can have holes in the stack. + 3. It is possible that if an input dies in an insn, reload might use the input reg for an output reload. Consider this example: I got to this patch only, because I did not read the docs very well. first I tried, asm("":"=t"(x)") OK. then asm("":"=t"(x):"t"(x)) REJECTED "output operand 0 must use ‘&’ constraint" then asm("":"=&t"(x):"t"(x)) REJECTED "asm operand has impossible constraints" figured early clobber of "=&t" and using "t" at the same time is usually wrong, therefore: asm("":"=&t"(x):"u"(x)) => ICE the diagnostics miss-guided me how to do it. that's why good diagnostics are important to beginners.