aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-01-27 21:26:03 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2012-01-27 21:26:03 +0100
commit7dcbaaa984509967baf669a2e9888098960bfa9a (patch)
tree5b7db7f79034ddfe2f779404f6d0f19901311e42 /libstdc++-v3/include
parent8c6cb782a355e540036b38f8124a1870612c4950 (diff)
downloadgcc-7dcbaaa984509967baf669a2e9888098960bfa9a.zip
gcc-7dcbaaa984509967baf669a2e9888098960bfa9a.tar.gz
gcc-7dcbaaa984509967baf669a2e9888098960bfa9a.tar.bz2
re PR libstdc++/51798 (libstdc++ atomicity performance regression due to __sync_fetch_and_add)
PR libstdc++/51798 * config/cpu/generic/atomicity_builtins/atomicity.h (__exchange_and_add, __atomic_add): Use __atomic_fetch_add with __ATOMIC_ACQ_REL semantics instead of __sync_fetch_and_add. * include/ext/atomicity.h (__exchange_and_add, __atomic_add): Likewise. From-SVN: r183644
Diffstat (limited to 'libstdc++-v3/include')
-rw-r--r--libstdc++-v3/include/ext/atomicity.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/libstdc++-v3/include/ext/atomicity.h b/libstdc++-v3/include/ext/atomicity.h
index c63b1d4..c603063 100644
--- a/libstdc++-v3/include/ext/atomicity.h
+++ b/libstdc++-v3/include/ext/atomicity.h
@@ -1,6 +1,6 @@
// Support for atomic operations -*- C++ -*-
-// Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010, 2011
+// Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010, 2011, 2012
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -45,11 +45,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#ifdef _GLIBCXX_ATOMIC_BUILTINS
static inline _Atomic_word
__exchange_and_add(volatile _Atomic_word* __mem, int __val)
- { return __sync_fetch_and_add(__mem, __val); }
+ { return __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); }
static inline void
__atomic_add(volatile _Atomic_word* __mem, int __val)
- { __sync_fetch_and_add(__mem, __val); }
+ { __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); }
#else
_Atomic_word
__attribute__ ((__unused__))