test that compare-exchange-weak-failure-rate=0.0 means what it says
This commit is contained in:
parent
ab03d32622
commit
5ed22b32a2
17
tests/run-pass/atomic-compare-exchange-weak-never-fail.rs
Normal file
17
tests/run-pass/atomic-compare-exchange-weak-never-fail.rs
Normal file
@ -0,0 +1,17 @@
|
||||
// compile-flags: -Zmiri-compare-exchange-weak-failure-rate=0.0
|
||||
use std::sync::atomic::{AtomicBool, 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();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user