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.