[Bug inline-asm/43110] Lack of dependency between %rax and %eax in inline assembly
pinskia at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Wed Feb 17 23:15:00 GMT 2010
------- Comment #1 from pinskia at gcc dot gnu dot org 2010-02-17 23:15 -------
Your inline-asm is incorrect as you don't say that result is ax (including eax
and rax) is going to be early clobbered.
The inline-asm should be written as:
asm volatile (
"movq $0x0102030405060708, %%rax\n\t"
"mov %1, %%eax\n\t"
: "=&a" (result)
: "r" (vv)
);
The same thing is true for the inline-asm in your locateEndToken. You should
mark the two outgoing registers as early clobbered. Without it, GCC assumes
the incoming registers are used before the output registers are used but in
your case, we use the incoming registers after you set the outgoing register.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Component|c |inline-asm
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43110
More information about the Gcc-bugs
mailing list