Currently atomic operations create full memory barrier. This ensures correct program behavior. However weaker memory barriers have lower performance impact and there are many cases when weaker memory barrier is sufficient.
The idea of this task is to adopt C11 atomic API to some extent, so it is possible to specify memory barriers for atomic operations.
C11 atomic operations as such seem to be unavailable in many environments. E.g. they appeared only in gcc-4.9. MSVC doesn't seem to support them, same for Solaris Studio.
It is proposed to use gcc atomic builtins whenever they're available, otherwise fall back to atomic operations with implicit full memory barrier.