------- Comment #2 from brian at dessent dot net 2008-09-25 22:29 ------- Subject: Re: __sync_bool_compare_and_swap creates wrong code with -fPIC
You get that if the variable is auto, but if it's static the reference is with a GOTOFF reloc: xorl %edi, %edi pushl %ebx call .L6 .L6: popl %ebx addl $_GLOBAL_OFFSET_TABLE_+[.-.L6], %ebx pushl %ecx movl %edi, %ecx xchgl %ebx, %edi lock cmpxchg8b [EMAIL PROTECTED](%ebx) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37651