blob: 0a236377a9c61d119d5c18ae8f10583c2afe856b [file]
//@compile-flags: -Zmiri-compare-exchange-weak-failure-rate=0.0
use std::sync::atomic::AtomicBool;
use std::sync::atomic::Ordering::*;
// Ensure that compare_exchange_weak never fails.
fn main() {
let atomic = AtomicBool::new(false);
let tries = 100;
for _ in 0..tries {
let cur = atomic.load(Relaxed);
// Try (weakly) to flip the flag.
if atomic.compare_exchange_weak(cur, !cur, Relaxed, Relaxed).is_err() {
// We failed. Avoid panic machinery as that uses atomics/locks.
eprintln!("compare_exchange_weak failed");
std::process::abort();
}
}
}