testsuite: tolerate compare_exchange_weak spurious failure
Alexandre Oliva
oliva@adacore.com
Wed Mar 11 05:28:34 GMT 2026
compare_exchange_weak is allowed to fail spuriously, and we're
actually hitting such spurious failures quite often on ppc-vx7r2,
presumably when random interrupts hit between ll and sc.
Tolerate one such failure, hopefully that will suffice.
Regstrapped on x86_64-linux-gnu, also tested with gcc-15 for ppc-vx7r2.
Ok to install?
for libstdc++-v3/ChangeLog
* testsuite/29_atomics/atomic/compare_exchange_padding.cc:
Tolerate one compare_exchange_weak spurious failure.
---
.../29_atomics/atomic/compare_exchange_padding.cc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/compare_exchange_padding.cc b/libstdc++-v3/testsuite/29_atomics/atomic/compare_exchange_padding.cc
index d9c7b90c1a5c1..3fc2f6b4f8031 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/compare_exchange_padding.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/compare_exchange_padding.cc
@@ -37,8 +37,8 @@ main ()
fill_struct(n);
n.c = 'b';
n.s = 71;
- // padding cleared on compexchg
- VERIFY( as.compare_exchange_weak(s, n) );
+ // padding cleared on compexchg. tolerate one spurious _weak failure.
+ VERIFY( as.compare_exchange_weak(s, n) || as.compare_exchange_weak(s, n) );
VERIFY( as.compare_exchange_strong(n, s) );
return 0;
}
--
Alexandre Oliva, happy hacker https://blog.lx.oliva.nom.br/
Free Software Activist FSFLA co-founder GNU Toolchain Engineer
More tolerance and less prejudice are key for inclusion and diversity.
Excluding neuro-others for not behaving ""normal"" is *not* inclusive!
More information about the Libstdc++
mailing list