Commit 8b9482b2 by Jakub Jelinek Committed by Jakub Jelinek

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
parent 52eba779
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> 2019-03-08 Jonathan Wakely <jwakely@redhat.com>
* doc/xml/manual/using.xml: Use link element instead of xref. * doc/xml/manual/using.xml: Use link element instead of xref.
......
...@@ -316,59 +316,59 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -316,59 +316,59 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__int_type __int_type
operator++() noexcept 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 __int_type
operator++() volatile noexcept 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 __int_type
operator--() noexcept 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 __int_type
operator--() volatile noexcept 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 __int_type
operator+=(__int_type __i) noexcept 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 __int_type
operator+=(__int_type __i) volatile noexcept 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 __int_type
operator-=(__int_type __i) noexcept 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 __int_type
operator-=(__int_type __i) volatile noexcept 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 __int_type
operator&=(__int_type __i) noexcept 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 __int_type
operator&=(__int_type __i) volatile noexcept 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 __int_type
operator|=(__int_type __i) noexcept 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 __int_type
operator|=(__int_type __i) volatile noexcept 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 __int_type
operator^=(__int_type __i) noexcept 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 __int_type
operator^=(__int_type __i) volatile noexcept 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 bool
is_lock_free() const noexcept is_lock_free() const noexcept
...@@ -652,42 +652,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -652,42 +652,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__pointer_type __pointer_type
operator++() noexcept operator++() noexcept
{ return __atomic_add_fetch(&_M_p, _M_type_size(1), { return __atomic_add_fetch(&_M_p, _M_type_size(1),
memory_order_seq_cst); } int(memory_order_seq_cst)); }
__pointer_type __pointer_type
operator++() volatile noexcept operator++() volatile noexcept
{ return __atomic_add_fetch(&_M_p, _M_type_size(1), { return __atomic_add_fetch(&_M_p, _M_type_size(1),
memory_order_seq_cst); } int(memory_order_seq_cst)); }
__pointer_type __pointer_type
operator--() noexcept operator--() noexcept
{ return __atomic_sub_fetch(&_M_p, _M_type_size(1), { return __atomic_sub_fetch(&_M_p, _M_type_size(1),
memory_order_seq_cst); } int(memory_order_seq_cst)); }
__pointer_type __pointer_type
operator--() volatile noexcept operator--() volatile noexcept
{ return __atomic_sub_fetch(&_M_p, _M_type_size(1), { return __atomic_sub_fetch(&_M_p, _M_type_size(1),
memory_order_seq_cst); } int(memory_order_seq_cst)); }
__pointer_type __pointer_type
operator+=(ptrdiff_t __d) noexcept operator+=(ptrdiff_t __d) noexcept
{ return __atomic_add_fetch(&_M_p, _M_type_size(__d), { return __atomic_add_fetch(&_M_p, _M_type_size(__d),
memory_order_seq_cst); } int(memory_order_seq_cst)); }
__pointer_type __pointer_type
operator+=(ptrdiff_t __d) volatile noexcept operator+=(ptrdiff_t __d) volatile noexcept
{ return __atomic_add_fetch(&_M_p, _M_type_size(__d), { return __atomic_add_fetch(&_M_p, _M_type_size(__d),
memory_order_seq_cst); } int(memory_order_seq_cst)); }
__pointer_type __pointer_type
operator-=(ptrdiff_t __d) noexcept operator-=(ptrdiff_t __d) noexcept
{ return __atomic_sub_fetch(&_M_p, _M_type_size(__d), { return __atomic_sub_fetch(&_M_p, _M_type_size(__d),
memory_order_seq_cst); } int(memory_order_seq_cst)); }
__pointer_type __pointer_type
operator-=(ptrdiff_t __d) volatile noexcept operator-=(ptrdiff_t __d) volatile noexcept
{ return __atomic_sub_fetch(&_M_p, _M_type_size(__d), { return __atomic_sub_fetch(&_M_p, _M_type_size(__d),
memory_order_seq_cst); } int(memory_order_seq_cst)); }
bool bool
is_lock_free() const noexcept is_lock_free() const noexcept
......
...@@ -240,18 +240,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -240,18 +240,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
void void
store(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept 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 void
store(_Tp __i, memory_order __m = memory_order_seq_cst) volatile noexcept 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 _Tp
load(memory_order __m = memory_order_seq_cst) const noexcept load(memory_order __m = memory_order_seq_cst) const noexcept
{ {
alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; alignas(_Tp) unsigned char __buf[sizeof(_Tp)];
_Tp* __ptr = reinterpret_cast<_Tp*>(__buf); _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; return *__ptr;
} }
...@@ -260,7 +260,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -260,7 +260,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ {
alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; alignas(_Tp) unsigned char __buf[sizeof(_Tp)];
_Tp* __ptr = reinterpret_cast<_Tp*>(__buf); _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; return *__ptr;
} }
...@@ -270,7 +270,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -270,7 +270,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; alignas(_Tp) unsigned char __buf[sizeof(_Tp)];
_Tp* __ptr = reinterpret_cast<_Tp*>(__buf); _Tp* __ptr = reinterpret_cast<_Tp*>(__buf);
__atomic_exchange(std::__addressof(_M_i), std::__addressof(__i), __atomic_exchange(std::__addressof(_M_i), std::__addressof(__i),
__ptr, __m); __ptr, int(__m));
return *__ptr; return *__ptr;
} }
...@@ -281,7 +281,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -281,7 +281,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; alignas(_Tp) unsigned char __buf[sizeof(_Tp)];
_Tp* __ptr = reinterpret_cast<_Tp*>(__buf); _Tp* __ptr = reinterpret_cast<_Tp*>(__buf);
__atomic_exchange(std::__addressof(_M_i), std::__addressof(__i), __atomic_exchange(std::__addressof(_M_i), std::__addressof(__i),
__ptr, __m); __ptr, int(__m));
return *__ptr; return *__ptr;
} }
...@@ -292,7 +292,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -292,7 +292,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
return __atomic_compare_exchange(std::__addressof(_M_i), return __atomic_compare_exchange(std::__addressof(_M_i),
std::__addressof(__e), std::__addressof(__e),
std::__addressof(__i), std::__addressof(__i),
true, __s, __f); true, int(__s), int(__f));
} }
bool bool
...@@ -302,7 +302,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -302,7 +302,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
return __atomic_compare_exchange(std::__addressof(_M_i), return __atomic_compare_exchange(std::__addressof(_M_i),
std::__addressof(__e), std::__addressof(__e),
std::__addressof(__i), std::__addressof(__i),
true, __s, __f); true, int(__s), int(__f));
} }
bool bool
...@@ -324,7 +324,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -324,7 +324,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
return __atomic_compare_exchange(std::__addressof(_M_i), return __atomic_compare_exchange(std::__addressof(_M_i),
std::__addressof(__e), std::__addressof(__e),
std::__addressof(__i), std::__addressof(__i),
false, __s, __f); false, int(__s), int(__f));
} }
bool bool
...@@ -334,7 +334,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -334,7 +334,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
return __atomic_compare_exchange(std::__addressof(_M_i), return __atomic_compare_exchange(std::__addressof(_M_i),
std::__addressof(__e), std::__addressof(__e),
std::__addressof(__i), std::__addressof(__i),
false, __s, __f); false, int(__s), int(__f));
} }
bool bool
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment