diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-03-11 12:49:13 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-03-11 12:49:13 +0100 |
commit | 8b9482b2d77da5b8db979845b49b3b91bcf898e9 (patch) | |
tree | 5f76822dbb06a25bd266e93181e836d4a1c93b64 | |
parent | 52eba77915ed77da53928905a731840249cf45d5 (diff) | |
download | gcc-8b9482b2d77da5b8db979845b49b3b91bcf898e9.zip gcc-8b9482b2d77da5b8db979845b49b3b91bcf898e9.tar.gz gcc-8b9482b2d77da5b8db979845b49b3b91bcf898e9.tar.bz2 |
re PR libstdc++/89641 (std::atomic<T> no longer works)
PR libstdc++/89641
* include/std/atomic (atomic<T>::store, atomic<T>::load,
atomic<T>::exchange, atomic<T>::compare_exchange_weak,
atomic<T>::compare_exchange_strong): Cast __m or __s and __f to int.
* include/bits/atomic_base.h (__atomic_base<T>::operator++,
__atomic_base<T>::operator--, __atomic_base<T>::operator+=,
__atomic_base<T>::operator-=, __atomic_base<T>::operator&=,
__atomic_base<T>::operator|=, __atomic_base<T>::operator^=,
__atomic_base<T*>::operator++, __atomic_base<T*>::operator--,
__atomic_base<T*>::operator+=, __atomic_base<T*>::operator-=): Cast
memory_order_seq_cst to int.
From-SVN: r269582
-rw-r--r-- | libstdc++-v3/ChangeLog | 14 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/atomic_base.h | 44 | ||||
-rw-r--r-- | libstdc++-v3/include/std/atomic | 20 |
3 files changed, 46 insertions, 32 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7da2594..cee2c9d 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,17 @@ +2019-03-11 Jakub Jelinek <jakub@redhat.com> + + PR libstdc++/89641 + * include/std/atomic (atomic<T>::store, atomic<T>::load, + atomic<T>::exchange, atomic<T>::compare_exchange_weak, + atomic<T>::compare_exchange_strong): Cast __m or __s and __f to int. + * include/bits/atomic_base.h (__atomic_base<T>::operator++, + __atomic_base<T>::operator--, __atomic_base<T>::operator+=, + __atomic_base<T>::operator-=, __atomic_base<T>::operator&=, + __atomic_base<T>::operator|=, __atomic_base<T>::operator^=, + __atomic_base<T*>::operator++, __atomic_base<T*>::operator--, + __atomic_base<T*>::operator+=, __atomic_base<T*>::operator-=): Cast + memory_order_seq_cst to int. + 2019-03-08 Jonathan Wakely <jwakely@redhat.com> * doc/xml/manual/using.xml: Use link element instead of xref. diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index 6c1703a..e30caef 100644 --- a/libstdc++-v3/include/bits/atomic_base.h +++ b/libstdc++-v3/include/bits/atomic_base.h @@ -316,59 +316,59 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __int_type operator++() noexcept - { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } + { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } __int_type operator++() volatile noexcept - { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } + { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } __int_type operator--() noexcept - { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } + { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } __int_type operator--() volatile noexcept - { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } + { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } __int_type operator+=(__int_type __i) noexcept - { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } + { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } __int_type operator+=(__int_type __i) volatile noexcept - { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } + { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } __int_type operator-=(__int_type __i) noexcept - { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } + { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } __int_type operator-=(__int_type __i) volatile noexcept - { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } + { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } __int_type operator&=(__int_type __i) noexcept - { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } + { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } __int_type operator&=(__int_type __i) volatile noexcept - { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } + { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } __int_type operator|=(__int_type __i) noexcept - { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } + { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } __int_type operator|=(__int_type __i) volatile noexcept - { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } + { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } __int_type operator^=(__int_type __i) noexcept - { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } + { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } __int_type operator^=(__int_type __i) volatile noexcept - { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } + { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } bool is_lock_free() const noexcept @@ -652,42 +652,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __pointer_type operator++() noexcept { return __atomic_add_fetch(&_M_p, _M_type_size(1), - memory_order_seq_cst); } + int(memory_order_seq_cst)); } __pointer_type operator++() volatile noexcept { return __atomic_add_fetch(&_M_p, _M_type_size(1), - memory_order_seq_cst); } + int(memory_order_seq_cst)); } __pointer_type operator--() noexcept { return __atomic_sub_fetch(&_M_p, _M_type_size(1), - memory_order_seq_cst); } + int(memory_order_seq_cst)); } __pointer_type operator--() volatile noexcept { return __atomic_sub_fetch(&_M_p, _M_type_size(1), - memory_order_seq_cst); } + int(memory_order_seq_cst)); } __pointer_type operator+=(ptrdiff_t __d) noexcept { return __atomic_add_fetch(&_M_p, _M_type_size(__d), - memory_order_seq_cst); } + int(memory_order_seq_cst)); } __pointer_type operator+=(ptrdiff_t __d) volatile noexcept { return __atomic_add_fetch(&_M_p, _M_type_size(__d), - memory_order_seq_cst); } + int(memory_order_seq_cst)); } __pointer_type operator-=(ptrdiff_t __d) noexcept { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), - memory_order_seq_cst); } + int(memory_order_seq_cst)); } __pointer_type operator-=(ptrdiff_t __d) volatile noexcept { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), - memory_order_seq_cst); } + int(memory_order_seq_cst)); } bool is_lock_free() const noexcept diff --git a/libstdc++-v3/include/std/atomic b/libstdc++-v3/include/std/atomic index 7acc246..699431e 100644 --- a/libstdc++-v3/include/std/atomic +++ b/libstdc++-v3/include/std/atomic @@ -240,18 +240,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void store(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept - { __atomic_store(std::__addressof(_M_i), std::__addressof(__i), __m); } + { __atomic_store(std::__addressof(_M_i), std::__addressof(__i), int(__m)); } void store(_Tp __i, memory_order __m = memory_order_seq_cst) volatile noexcept - { __atomic_store(std::__addressof(_M_i), std::__addressof(__i), __m); } + { __atomic_store(std::__addressof(_M_i), std::__addressof(__i), int(__m)); } _Tp load(memory_order __m = memory_order_seq_cst) const noexcept { alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); - __atomic_load(std::__addressof(_M_i), __ptr, __m); + __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); return *__ptr; } @@ -260,7 +260,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); - __atomic_load(std::__addressof(_M_i), __ptr, __m); + __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); return *__ptr; } @@ -270,7 +270,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); __atomic_exchange(std::__addressof(_M_i), std::__addressof(__i), - __ptr, __m); + __ptr, int(__m)); return *__ptr; } @@ -281,7 +281,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); __atomic_exchange(std::__addressof(_M_i), std::__addressof(__i), - __ptr, __m); + __ptr, int(__m)); return *__ptr; } @@ -292,7 +292,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __atomic_compare_exchange(std::__addressof(_M_i), std::__addressof(__e), std::__addressof(__i), - true, __s, __f); + true, int(__s), int(__f)); } bool @@ -302,7 +302,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __atomic_compare_exchange(std::__addressof(_M_i), std::__addressof(__e), std::__addressof(__i), - true, __s, __f); + true, int(__s), int(__f)); } bool @@ -324,7 +324,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __atomic_compare_exchange(std::__addressof(_M_i), std::__addressof(__e), std::__addressof(__i), - false, __s, __f); + false, int(__s), int(__f)); } bool @@ -334,7 +334,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __atomic_compare_exchange(std::__addressof(_M_i), std::__addressof(__e), std::__addressof(__i), - false, __s, __f); + false, int(__s), int(__f)); } bool |