Hi! The following patch fixes in make -j32 -k check 'RUNTESTFLAGS=--target_board=unix/-std=gnu++2a' -FAIL: 29_atomics/atomic/69301.cc (test for excess errors) -FAIL: 29_atomics/atomic/requirements/compare_exchange_lowering.cc (test for excess errors) -FAIL: 29_atomics/atomic/70766.cc (test for excess errors) -FAIL: 29_atomics/atomic/requirements/explicit_instantiation/1.cc (test for excess errors) -FAIL: 29_atomics/atomic_integral/operators/increment.cc (test for excess errors) -FAIL: 29_atomics/atomic/cons/49445.cc (test for excess errors) -FAIL: 29_atomics/atomic/nonmembers.cc (test for excess errors) -FAIL: 29_atomics/atomic/operators/51811.cc (test for excess errors) -FAIL: 29_atomics/atomic_integral/operators/bitwise.cc (test for excess errors) -FAIL: 29_atomics/atomic_integral/operators/decrement.cc (test for excess errors) -FAIL: experimental/net/internet/address/v4/members.cc (test for excess errors) -FAIL: experimental/net/internet/resolver/base.cc (test for excess errors) -FAIL: experimental/net/internet/resolver/ops/lookup.cc (test for excess errors) -FAIL: experimental/net/internet/resolver/ops/reverse.cc (test for excess errors) -FAIL: experimental/net/timer/waitable/cons.cc (test for excess errors) -FAIL: experimental/net/timer/waitable/dest.cc (test for excess errors) -FAIL: experimental/net/headers.cc (test for excess errors) -FAIL: experimental/net/timer/waitable/ops.cc (test for excess errors) -FAIL: experimental/net/internet/address/v4/comparisons.cc (test for excess errors) -FAIL: experimental/net/internet/address/v4/cons.cc (test for excess errors) -FAIL: experimental/net/internet/address/v4/creation.cc (test for excess errors) +FAIL: experimental/net/internet/resolver/ops/lookup.cc execution test (guess the FAILed test with the patch would FAIL even without it if it wouldn't fail to compile). From the above I believe the testsuite coverage is already sufficient and no need to add further tests.
Ok for trunk if normal bootstrap/regtest succeeds (i.e. including the default flags testing)? 2019-03-10 Jakub Jelinek <ja...@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. --- libstdc++/include/std/atomic.jj 2019-02-19 09:33:08.863295468 +0100 +++ libstdc++/include/std/atomic 2019-03-10 21:35:47.021085976 +0100 @@ -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 --- libstdc++/include/bits/atomic_base.h.jj 2019-03-07 20:07:22.241979819 +0100 +++ libstdc++/include/bits/atomic_base.h 2019-03-10 21:32:17.980498667 +0100 @@ -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 Jakub