On 11/07/2011 11:13 AM, Andrew MacLeod wrote: > libstdc++-v3 > * include/bits/atomic_base.h (atomic_thread_fence): Call builtin. > (atomic_signal_fence): Call builtin. > (atomic_flag::test_and_set): Call __atomic_exchange when it is lockfree, > otherwise fall back to call __sync_lock_test_and_set. > (atomic_flag::clear): Call __atomic_store when it is lockfree, > otherwise fall back to call __sync_lock_release. > > gcc > * doc/extend.texi: Docuemnt behaviour change for __atomic_exchange and > __atomic_store. > * optabs.c (expand_atomic_exchange): Expand to __sync_lock_test_and_set > only when originated from that builtin. > (expand_atomic_store): Expand to __sync_lock_release when originated > from that builtin. > * builtins.c (expand_builtin_sync_lock_test_and_set): Add flag that > expand_atomic_exchange call originated from here. > (expand_builtin_sync_lock_release): Add flag that expand_atomic_store > call originated from here. > (expand_builtin_atomic_exchange): Add origination flag. > (expand_builtin_atomic_store): Add origination flag. > * expr.h (expand_atomic_exchange, expand_atomic_store): Add boolean > parameters to indicate implementation fall back options.
Looks good. r~