They act on local object 'd' only, rather than (as should be expected) *__a. That is, __a->_M_i will never get set/cleared through these functions.
-- Summary: atomic_flag_{test_and_set,clear}_explicit() are apparently broken Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jbeulich at novell dot com GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: *-*-* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40826