https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68843
--- Comment #5 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- and that's the next oddity: cat t1.c int test (double x, double y) { int r; asm ("fist %0\t# %0 %1 %2" : "=r" (r) : "r" (x), "t" (y)); return r; } gcc -S t1.c -m32 t1.c: In function ‘test’: t1.c:4:3: error: output operand 0 must use ‘&’ constraint asm ("fist %0\t# %0 %1 %2" : "=r" (r) : "r" (x), "t" (y)); ^ but there is no reason for this, because %0 is %eax or something even "=a" (r) triggers this.