diff options
author | Benjamin Kosnik <bkoz@redhat.com> | 2009-12-21 19:00:34 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2009-12-21 19:00:34 +0000 |
commit | afd88205d8a95ccea9ba77fd23f0258025fcc249 (patch) | |
tree | 79f5ade61a5285c7735d351c9622e56ae1486b77 /libstdc++-v3/src | |
parent | dcc1e1fab49e2b2d000b22f0053c0ffe53c44b14 (diff) | |
download | gcc-afd88205d8a95ccea9ba77fd23f0258025fcc249.tar.gz |
atomic: Update to N3000.
2009-12-20 Benjamin Kosnik <bkoz@redhat.com>
* include/std/atomic: Update to N3000.
* include/bits/atomic_0.h: Same.
* include/bits/atomic_2.h: Same.
* include/c_global/cstdatomic: Move...
* include/bits/atomic_base.h: ...here.
* include/c_compatibility/stdatomic.h: Just include atomic_base.h.
* include/precompiled/stdc++.h: Adjust includes.
* include/Makefile.am: Adjust files.
* include/Makefile.in: Regenerate.
* include/std/future: Adjust.
* src/atomic.cc: Adjust, adjust exports for compatibility.
* src/compatibility.cc: Move C++0x stuff...
* src/compatibility-c++0x.cc: ...here.
* doc/xml/manual/using.xml: Update.
* doc/xml/manual/status_cxx200x.xml: Update.
* doc/doxygen/user.cfg.in: Update.
* testsuite/29_atomics/atomic_address/cons/assign_neg.cc: Same.
* testsuite/29_atomics/atomic_address/cons/single_value.cc: Same.
* testsuite/29_atomics/atomic_address/cons/copy_neg.cc: Same.
* testsuite/29_atomics/atomic_address/cons/default.cc: Same.
* testsuite/29_atomics/atomic_address/cons/aggregate.cc: Same.
* testsuite/29_atomics/atomic_address/requirements/
standard_layout.cc: Same.
* testsuite/29_atomics/atomic_address/requirements/trivial.cc: Same.
* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same.
* testsuite/29_atomics/atomic_integral/cons/single_value.cc: Same.
* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same.
* testsuite/29_atomics/atomic_integral/cons/default.cc: Same.
* testsuite/29_atomics/atomic_integral/cons/copy_list.cc: Same.
* testsuite/29_atomics/atomic_integral/cons/direct_list.cc: Same.
* testsuite/29_atomics/atomic_integral/requirements/
standard_layout.cc: Same.
* testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Same.
* testsuite/29_atomics/atomic_integral/operators/increment_neg.cc: Same.
* testsuite/29_atomics/atomic_integral/operators/
integral_assignment.cc: Same.
* testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same.
* testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc: Same.
* testsuite/29_atomics/atomic_integral/operators/increment.cc: Same.
* testsuite/29_atomics/atomic_integral/operators/bitwise.cc: Same.
* testsuite/29_atomics/atomic_integral/operators/decrement.cc: Same.
* testsuite/29_atomics/atomic_integral/operators/
integral_conversion.cc: Same.
* testsuite/29_atomics/atomic_flag/cons/assign_neg.cc: Same.
* testsuite/29_atomics/atomic_flag/cons/copy_neg.cc: Same.
* testsuite/29_atomics/atomic_flag/cons/default.cc: Same.
* testsuite/29_atomics/atomic_flag/cons/aggregate.cc: Same.
* testsuite/29_atomics/atomic_flag/requirements/
standard_layout.cc: Same.
* testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Same.
* testsuite/29_atomics/atomic_flag/clear/1.cc: Same.
* testsuite/29_atomics/atomic_flag/test_and_set/explicit.c
* testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc: Same.
* testsuite/29_atomics/atomic_flag/test_and_set/implicit.c
* testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc: Same.
* testsuite/29_atomics/headers/stdatomic.h/functions.c
* testsuite/29_atomics/atomic/cons/assign_neg.cc: Same.
* testsuite/29_atomics/atomic/cons/single_value.cc: Same.
* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
* testsuite/29_atomics/atomic/cons/default.cc: Same.
* testsuite/29_atomics/atomic/cons/copy_list.cc: Same.
* testsuite/29_atomics/atomic/cons/direct_list.cc: Same.
* testsuite/29_atomics/atomic/requirements/explicit_instantiation/
1.cc: Same.
* testsuite/29_atomics/atomic/requirements/base_classes.cc: Same.
* testsuite/29_atomics/atomic/operators/integral_assignment.cc: Same.
* testsuite/29_atomics/atomic/operators/integral_conversion.cc: Same.
* testsuite/util/testsuite_common_types.h: Adjust.
* testsuite/29_atomics/headers/cstdatomic: Move and adjust...
* testsuite/29_atomics/headers/atomic: ...here.
* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Same.
* testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc: Same.
* testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc: Same.
* testsuite/29_atomics/headers/atomic/macros.cc: Same.
* testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc: Add.
* testsuite/29_atomics/atomic/cons/user_pod.cc: Add.
From-SVN: r155377
Diffstat (limited to 'libstdc++-v3/src')
-rw-r--r-- | libstdc++-v3/src/atomic.cc | 43 | ||||
-rw-r--r-- | libstdc++-v3/src/compatibility-c++0x.cc | 16 | ||||
-rw-r--r-- | libstdc++-v3/src/compatibility.cc | 19 |
3 files changed, 47 insertions, 31 deletions
diff --git a/libstdc++-v3/src/atomic.cc b/libstdc++-v3/src/atomic.cc index 775bb7601c1..bff8fa98c64 100644 --- a/libstdc++-v3/src/atomic.cc +++ b/libstdc++-v3/src/atomic.cc @@ -24,7 +24,7 @@ // <http://www.gnu.org/licenses/>. #include "gstdint.h" -#include <cstdatomic> +#include <atomic> #include <mutex> #define LOGSIZE 4 @@ -40,7 +40,7 @@ namespace } #endif - std::__atomic_flag_base volatile flag_table[ 1 << LOGSIZE ] = + std::__atomic_flag_base flag_table[ 1 << LOGSIZE ] = { ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, @@ -54,7 +54,7 @@ namespace std namespace __atomic0 { bool - atomic_flag::test_and_set(memory_order) volatile + atomic_flag::test_and_set(memory_order) { #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) lock_guard<mutex> __lock(get_atomic_mutex()); @@ -65,7 +65,7 @@ namespace std } void - atomic_flag::clear(memory_order) volatile + atomic_flag::clear(memory_order) { #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) lock_guard<mutex> __lock(get_atomic_mutex()); @@ -77,31 +77,31 @@ namespace std extern "C" { bool - atomic_flag_test_and_set_explicit(volatile __atomic_flag_base* __a, + atomic_flag_test_and_set_explicit(__atomic_flag_base* __a, memory_order __m) throw () { - volatile atomic_flag* d = static_cast<volatile atomic_flag*>(__a); + atomic_flag* d = static_cast<volatile atomic_flag*>(__a); return d->test_and_set(__m); } void - atomic_flag_clear_explicit(volatile __atomic_flag_base* __a, + atomic_flag_clear_explicit(__atomic_flag_base* __a, memory_order __m) throw () { - volatile atomic_flag* d = static_cast<volatile atomic_flag*>(__a); + atomic_flag* d = static_cast<volatile atomic_flag*>(__a); return d->clear(__m); } void - __atomic_flag_wait_explicit(volatile __atomic_flag_base* __a, + __atomic_flag_wait_explicit(__atomic_flag_base* __a, memory_order __x) throw () { while (atomic_flag_test_and_set_explicit(__a, __x)) { }; } - volatile __atomic_flag_base* - __atomic_flag_for_address(const volatile void* __z) throw () + __atomic_flag_base* + __atomic_flag_for_address(const void* __z) throw () { uintptr_t __u = reinterpret_cast<uintptr_t>(__z); __u += (__u >> 2) + (__u << 4); @@ -114,3 +114,24 @@ namespace std } } // extern "C" } // namespace std + + +// XXX GLIBCXX_ABI Deprecated +// gcc-4.5.0 +// <atomic> signature changes + +// The rename syntax for default exported names is +// asm (".symver name1,exportedname@GLIBCXX_3.4") +// asm (".symver name2,exportedname@@GLIBCXX_3.4.5") +// In the future, GLIBCXX_ABI > 6 should remove all uses of +// _GLIBCXX_*_SYMVER macros in this file. + +#define _GLIBCXX_ASM_SYMVER(cur, old, version) \ + asm (".symver " #cur "," #old "@@" #version); + +#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \ + && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) +_GLIBCXX_ASM_SYMVER(_ZNSt9__atomic011atomic_flag5clearESt12memory_order, _ZNVSt9__atomic011atomic_flag5clearESt12memory_order, GLIBCXX_3.4.11) + +_GLIBCXX_ASM_SYMVER(_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order, _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order, GLIBCXX_3.4.11) +#endif diff --git a/libstdc++-v3/src/compatibility-c++0x.cc b/libstdc++-v3/src/compatibility-c++0x.cc index df28ecae358..5d6e5ddc14f 100644 --- a/libstdc++-v3/src/compatibility-c++0x.cc +++ b/libstdc++-v3/src/compatibility-c++0x.cc @@ -33,9 +33,23 @@ namespace std { + // gcc-4.4.0 + // <mutex> exported std::lock_error +#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) + class lock_error : public exception + { + public: + virtual const char* + _GLIBCXX_CONST what() const throw(); + }; + + const char* + lock_error::what() const throw() + { return "std::lock_error"; } +#endif + // We need these due to the symbols exported since GLIBCXX_3.4.10. // See libstdc++/41662 for details. - template<typename _Tp> struct hash : public std::unary_function<_Tp, size_t> { diff --git a/libstdc++-v3/src/compatibility.cc b/libstdc++-v3/src/compatibility.cc index c81f08e070f..41071d23b81 100644 --- a/libstdc++-v3/src/compatibility.cc +++ b/libstdc++-v3/src/compatibility.cc @@ -513,25 +513,6 @@ extern __attribute__((used, weak)) const void * const _ZTIPKe[4] (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe }; #endif // _GLIBCXX_LONG_DOUBLE_COMPAT -// gcc-4.4.0 -// <mutex> exported std::lock_error -#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) -namespace std -{ - class lock_error : public exception - { - public: - virtual const char* - _GLIBCXX_CONST what() const throw(); - }; - - const char* - lock_error::what() const throw() - { return "std::lock_error"; } -} -#endif - - #ifdef _GLIBCXX_SYMVER_DARWIN #if (defined(__ppc__) || defined(__ppc64__)) && defined(PIC) /* __eprintf shouldn't have been made visible from libstdc++, or |