http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46598
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> 2010-11-23 14:26:53 UTC --- Looks just like bogus inline asm. For rdtsc which sets 32-bits in %eax and 32-bits in %edx, for 32-bit code you want "=A" (long_long_variable) and for 64-bit code you need "=a" (one_int_variable), "=d" (another_int_variable) Otherwise you are lying on what the insn does. "=A" with an lvalue which is smaller or equal to word size means allocate it either in ax or in dx. Only with double word sized lvalue it means both ax and dx.