diff --git a/libcxx/test/std/atomics/atomics.ref/compare_exchange_weak.pass.cpp b/libcxx/test/std/atomics/atomics.ref/compare_exchange_weak.pass.cpp index 58cf2e0fe338..62bad17a2160 100644 --- a/libcxx/test/std/atomics/atomics.ref/compare_exchange_weak.pass.cpp +++ b/libcxx/test/std/atomics/atomics.ref/compare_exchange_weak.pass.cpp @@ -33,11 +33,11 @@ struct TestCompareExchangeWeak { std::atomic_ref const a(x); T t(T(1)); - std::same_as decltype(auto) y = a.compare_exchange_weak(t, T(2)); - assert(y == true); + while (!a.compare_exchange_weak(t, T(2))) { + } assert(a == T(2)); assert(t == T(1)); - y = a.compare_exchange_weak(t, T(3)); + std::same_as decltype(auto) y = a.compare_exchange_weak(t, T(3)); assert(y == false); assert(a == T(2)); assert(t == T(2)); @@ -49,11 +49,11 @@ struct TestCompareExchangeWeak { std::atomic_ref const a(x); T t(T(1)); - std::same_as decltype(auto) y = a.compare_exchange_weak(t, T(2), std::memory_order_seq_cst); - assert(y == true); + while (!a.compare_exchange_weak(t, T(2), std::memory_order_seq_cst)) { + } assert(a == T(2)); assert(t == T(1)); - y = a.compare_exchange_weak(t, T(3), std::memory_order_seq_cst); + std::same_as decltype(auto) y = a.compare_exchange_weak(t, T(3), std::memory_order_seq_cst); assert(y == false); assert(a == T(2)); assert(t == T(2)); @@ -65,12 +65,12 @@ struct TestCompareExchangeWeak { std::atomic_ref const a(x); T t(T(1)); - std::same_as decltype(auto) y = - a.compare_exchange_weak(t, T(2), std::memory_order_release, std::memory_order_relaxed); - assert(y == true); + while (!a.compare_exchange_weak(t, T(2), std::memory_order_release, std::memory_order_relaxed)) { + } assert(a == T(2)); assert(t == T(1)); - y = a.compare_exchange_weak(t, T(3), std::memory_order_release, std::memory_order_relaxed); + std::same_as decltype(auto) y = + a.compare_exchange_weak(t, T(3), std::memory_order_release, std::memory_order_relaxed); assert(y == false); assert(a == T(2)); assert(t == T(2));