There is a typo in the header files for libstdc++ where the
atomic_signal_fence() method is actually calling __atomic_thread_fence()
instead of __atomic_signal_fence(). This results in extra barriers in
the executable that don't need to be there.
fixed as trivial and checked into mainline. Is it OK to check this into
the 4.7 branch once I've verified it there as well? ie, it's not frozen
or anything right now is it?
Thanks
Andrew
2012-10-09 Andrew MacLeod <amacl...@redhat.com>
PR libstdc++/54861
* include/bits/atomic_base.h (atomic_signal_fence): Call
__atomic_signal_fence instead of __atomic_thread_fence.
Index: include/bits/atomic_base.h
===================================================================
*** include/bits/atomic_base.h (revision 192254)
--- include/bits/atomic_base.h (working copy)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 74,80 ****
inline void
atomic_signal_fence(memory_order __m) noexcept
! { __atomic_thread_fence(__m); }
/// kill_dependency
template<typename _Tp>
--- 74,80 ----
inline void
atomic_signal_fence(memory_order __m) noexcept
! { __atomic_signal_fence(__m); }
/// kill_dependency
template<typename _Tp>