This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/51798] [4.7 regression] libstdc++ atomicity performance regression due to __sync_fetch_and_add


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]