The problem is that in a case like that where the same variable is used twice to match to the same output:
__asm ("mov %2, %%eax\n\t"
: "=a" (r0)
: "0" (t0), "0" (t0));Even though the inputs are both t0, we get the error "more than one input constraint matches the same output '1'"
gcc can handle these cases.