[llvm-branch-commits] [libcxx] release/22.x: [libc++][test] Use loop with compare_exchange_weak calls (#185953) (PR #194642)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Apr 28 07:26:41 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: llvmbot
<details>
<summary>Changes</summary>
Backport 3fea2f61652e10c7f3abc17f0542e8bc0dd0ea25
Requested by: @<!-- -->alexrp
---
Full diff: https://github.com/llvm/llvm-project/pull/194642.diff
1 Files Affected:
- (modified) libcxx/test/std/atomics/atomics.ref/compare_exchange_weak.pass.cpp (+10-10)
``````````diff
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 99c1385a2fe0b..0d9ccd93533a0 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
@@ -32,11 +32,11 @@ struct TestCompareExchangeWeak {
std::atomic_ref<T> const a(x);
T t(T(1));
- std::same_as<bool> 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<bool> decltype(auto) y = a.compare_exchange_weak(t, T(3));
assert(y == false);
assert(a == T(2));
assert(t == T(2));
@@ -48,11 +48,11 @@ struct TestCompareExchangeWeak {
std::atomic_ref<T> const a(x);
T t(T(1));
- std::same_as<bool> 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<bool> 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));
@@ -64,12 +64,12 @@ struct TestCompareExchangeWeak {
std::atomic_ref<T> const a(x);
T t(T(1));
- std::same_as<bool> 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<bool> 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));
``````````
</details>
https://github.com/llvm/llvm-project/pull/194642
More information about the llvm-branch-commits
mailing list