http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52839
Alan Modra <amodra at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Known to fail| |4.7.0 --- Comment #27 from Alan Modra <amodra at gmail dot com> 2012-04-12 09:18:38 UTC --- I took a look at libstdc++.so use of exchange_and_add on powerpc 32-bit. There seems to be a lot of places where it appears, even before Benjamin's change, ie. r184109. Uses of exchange_and_add common to both r184109 and r186130, the latter patched with http://gcc.gnu.org/bugzilla/attachment.cgi?id=27094 to get _GLIBCXX_ATOMIC_BUILTINS enabled on powerpc. _ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv _ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv _ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv _ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv _ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv _ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv _ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv _ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev _ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E _ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E _ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E _ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E Use of exchange_and_add only in r184109 r186130 with patch appears to neither use exchange_and_add or atomics in these functions. (I say appears because I only looked for direct calls.) _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe _ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale _ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale _ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale _ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale