https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120284
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- asm volatile("" : "+r"(x)); is the same as: asm volatile("" : "=r"(x) : "0"(x)); Note the 0 there rather than r. r in the input means any register while 0 means it needs to match the same register as the 0th operand which in this case is the output operand.