http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51798
--- Comment #3 from David Edelsohn <dje at gcc dot gnu.org> 2012-01-09 17:11:32 UTC --- Another alternative is to modify __gnu_cxx::_atomic_add() to perform acquire semantics for positive increments and release semantics for negative increments. That avoid creating a new function in the __gnu_cxx space.