OSDN Git Service

libstdc++:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Dec 2004 04:36:54 +0000 (04:36 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Dec 2004 04:36:54 +0000 (04:36 +0000)
commit2ca3d4265da8753b1bf9b447e99bfc4f6259e17c
treed723d1a31c0c3358f41a176191bde7ef4add806e
parent306df4c058c3ca47aff2e6c90954ea9268878f93
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92659 138bc75d-0d04-0410-961f-82ee72b054a4
20 files changed:
gcc/ChangeLog
gcc/config/alpha/alpha.c
gcc/config/ia64/ia64.c
gcc/config/rs6000/rs6000.c
gcc/config/sparc/sparc.c
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/doc/tm.texi
gcc/target-def.h
gcc/target.h
libstdc++-v3/ChangeLog
libstdc++-v3/config/cpu/alpha/atomic_word.h [new file with mode: 0644]
libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h
libstdc++-v3/config/cpu/generic/atomic_word.h
libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h
libstdc++-v3/config/cpu/ia64/atomic_word.h [new file with mode: 0644]
libstdc++-v3/config/cpu/powerpc/atomic_word.h [new file with mode: 0644]
libstdc++-v3/config/cpu/sparc/atomic_word.h
libstdc++-v3/include/bits/atomicity.h
libstdc++-v3/libsupc++/guard.cc