Should it be reported as a bug? (-O2 and cmpxchg instruction)
Andrew Haley
aph@redhat.com
Fri Feb 15 11:44:00 GMT 2008
Martin Sustrik wrote:
> Andrew Haley wrote:
>> Please don't top-post.
>>
>> Martin Sustrik wrote:
>>> Andrew,
>>>
>>> Thanks for prompt response. However, I am not sure how to use the
>>> earlyclobber modifier - this is actually the first gcc inline asembly
>>> code I've ever written.
>>>
>>> Do you mean that I should add '&' sign to every operand in input
>>> operand list, or should I add the sign when using the operands or what?
>>
>> Use "=&a" on the first operand.
> Ok, I've modified the code this way:
>
> __asm__ volatile (
> "lock; cmpxchgl %1, %3\n\t"
> "jz 1f\n\t"
> "mov %2, %%eax\n\t"
> "lock; xchgl %%eax, %3\n\t"
> "1:\n\t"
> : "=&a" (oldval)
> : "r" (thenval_), "r" (elseval_), "m" (value), "0" (0)
Ah, maybe I told you wrong: I see that Opernad 0 is also an input. Sorry.
> : "memory", "cc");
>
> However, the generated code is exactly the same as before.
I certainly don't get that. Please post a complete test case, with
assembly output. We also need to know exactly your version of gcc.
Andrew.
More information about the Gcc-help
mailing list