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~

Reply via email to