aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/ChangeLog
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2004-12-27 23:36:54 -0500
committerJason Merrill <jason@gcc.gnu.org>2004-12-27 23:36:54 -0500
commit445cf5eb0d91d2aa401ff3907fcf993a44e4c8b4 (patch)
treed723d1a31c0c3358f41a176191bde7ef4add806e /libstdc++-v3/ChangeLog
parent1f7edb8b3d65da166df57999ae6053bfdbf939de (diff)
downloadgcc-445cf5eb0d91d2aa401ff3907fcf993a44e4c8b4.zip
gcc-445cf5eb0d91d2aa401ff3907fcf993a44e4c8b4.tar.gz
gcc-445cf5eb0d91d2aa401ff3907fcf993a44e4c8b4.tar.bz2
Add memory barriers to the double-checked locking used for static initialization.
libstdc++: Add memory barriers to the double-checked locking used for static initialization. * libsupc++/guard.cc (__test_and_acquire): Define default. (_GLIBCXX_GUARD_TEST_AND_ACQUIRE, __set_and_release) (_GLIBCXX_GUARD_SET_AND_RELEASE): Likewise. (recursion_push, recursion_pop): New abstraction functions. (__cxa_guard_acquire): Use _GLIBCXX_GUARD_TEST_AND_ACQUIRE. (__cxa_guard_release): Use _GLIBCXX_GUARD_SET_AND_RELEASE. * config/cpu/generic/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST): Rename from _GLIBCXX_GUARD_ACQUIRE and reverse sense. (_GLIBCXX_GUARD_SET): Rename from _GLIBCXX_GUARD_RELEASE. * config/cpu/arm/cxxabi_tweaks.h: Likewise. * config/cpu/alpha/atomic_word.h (_GLIBCXX_READ_MEM_BARRIER) (_GLIBCXX_WRITE_MEM_BARRIER): Define. * config/cpu/powerpc/atomic_word.h: Likewise. * config/cpu/sparc/atomic_word.h: Likewise. * config/cpu/generic/atomic_word.h: Define them, commented out. * include/bits/atomicity.h: Define defaults. * config/cpu/ia64/atomic_word.h (__test_and_acquire) (__set_and_release): New inlines. (_GLIBCXX_GUARD_TEST_AND_ACQUIRE): Define. (_GLIBCXX_GUARD_SET_AND_RELEASE): Define. * libsupc++/guard.cc (acquire_1): Use __builtin_trap instead of abort(); gcc: * doc/tm.texi (TARGET_RELAXED_ORDERING): Document. * target.h (struct gcc_target): Add relaxed_ordering field. * target-def.h (TARGET_RELAXED_ORDERING): Define default. (TARGET_INITIALIZER): Add it. * config/alpha/alpha.c (TARGET_RELAXED_ORDERING): Define. * config/ia64/ia64.c (TARGET_RELAXED_ORDERING): Define. * config/rs6000/rs6000.c (TARGET_RELAXED_ORDERING): Define. * config/sparc/sparc.c (TARGET_RELAXED_ORDERING): Define. * cp/decl.c (expand_static_init): Don't use shortcut if targetm.relaxed_ordering. From-SVN: r92659
Diffstat (limited to 'libstdc++-v3/ChangeLog')
-rw-r--r--libstdc++-v3/ChangeLog28
1 files changed, 28 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ba4b65e..da33b5d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,31 @@
+2004-12-27 Jason Merrill <jason@redhat.com>
+
+ Add memory barriers to the double-checked locking used for static
+ initialization.
+ * libsupc++/guard.cc (__test_and_acquire): Define default.
+ (_GLIBCXX_GUARD_TEST_AND_ACQUIRE, __set_and_release)
+ (_GLIBCXX_GUARD_SET_AND_RELEASE): Likewise.
+ (recursion_push, recursion_pop): New abstraction functions.
+ (__cxa_guard_acquire): Use _GLIBCXX_GUARD_TEST_AND_ACQUIRE.
+ (__cxa_guard_release): Use _GLIBCXX_GUARD_SET_AND_RELEASE.
+ * config/cpu/generic/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST): Rename
+ from _GLIBCXX_GUARD_ACQUIRE and reverse sense.
+ (_GLIBCXX_GUARD_SET): Rename from _GLIBCXX_GUARD_RELEASE.
+ * config/cpu/arm/cxxabi_tweaks.h: Likewise.
+ * config/cpu/alpha/atomic_word.h (_GLIBCXX_READ_MEM_BARRIER)
+ (_GLIBCXX_WRITE_MEM_BARRIER): Define.
+ * config/cpu/powerpc/atomic_word.h: Likewise.
+ * config/cpu/sparc/atomic_word.h: Likewise.
+ * config/cpu/generic/atomic_word.h: Define them, commented out.
+ * include/bits/atomicity.h: Define defaults.
+ * config/cpu/ia64/atomic_word.h (__test_and_acquire)
+ (__set_and_release): New inlines.
+ (_GLIBCXX_GUARD_TEST_AND_ACQUIRE): Define.
+ (_GLIBCXX_GUARD_SET_AND_RELEASE): Define.
+
+ * libsupc++/guard.cc (acquire_1): Use __builtin_trap instead of
+ abort();
+
2004-12-27 Paolo Carlini <pcarlini@suse.de>
* include/tr1/type_traits: Rework the _DEFINE_SPEC* macros.