http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46598
--- Comment #10 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-23 14:38:00 UTC --- (In reply to comment #9) > 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. The split result for 64bit code is non-intuitive - I would have expected that "=A" (int64_t variable) always works. We should issue a warning here - I suspect the broken variants never make sense.