http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54005

--- Comment #2 from Andrew Macleod <amacleod at redhat dot com> 2012-08-08 
15:04:21 UTC ---
I don't think that is right.


A type may not be always lock free from the compiler's perspective, so
__atomic_always_lock_free() will return false.  

The compiler will issue a call to libatomic to implement any atomic operations,
and libatomic may provide a lock-free implementation for the type/size.  So
these need to remain runtime calls to   __atomic_is_lock_free () since the
question cannot always be answered at compile time.

In cases where __atomic_always_lock_free() is true at compile time,
__atomic_is_lock_free() will return a compile time true.  The runtime call is
only made when __atomic_always_lock_free is false.

Reply via email to