[Bug libstdc++/51798] [4.7 regression] libstdc++ atomicity performance regression due to __sync_fetch_and_add
rth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Feb 13 21:31:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51798
--- Comment #31 from Richard Henderson <rth at gcc dot gnu.org> 2012-02-13 21:30:42 UTC ---
Author: rth
Date: Mon Feb 13 21:30:31 2012
New Revision: 184171
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184171
Log:
PR libstdc++/51798 continued
* include/bits/shared_ptr_base.h
(_Sp_counted_base<_S_atomic>::_M_add_ref_lock): Hoist initial load
outside compare_exchange loop.
* include/tr1/shared_ptr.h: Same.
* include/parallel/compatibility.h (__compare_and_swap_32): Use strong
version of compare_exchange.
(__compare_and_swap_64): Same.
* include/profile/impl/profiler_state.h (__gnu_profile::__turn): Same.
* libsupc++/guard.cc (__cxa_guard_acquire): Same.
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/shared_ptr_base.h
trunk/libstdc++-v3/include/parallel/compatibility.h
trunk/libstdc++-v3/include/profile/impl/profiler_state.h
trunk/libstdc++-v3/include/tr1/shared_ptr.h
trunk/libstdc++-v3/libsupc++/guard.cc
More information about the Gcc-bugs
mailing list