about summary refs log tree commit diff
path: root/src/test/ui/atomic-access-bool.rs
blob: e9d48bb3b43d82057c1210bbdbeea984b208a171 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// run-pass

#![allow(stable_features)]
#![feature(atomic_access)]
use std::sync::atomic::AtomicBool;
use std::sync::atomic::Ordering::*;

static mut ATOMIC: AtomicBool = AtomicBool::new(false);

fn main() {
    unsafe {
        assert_eq!(*ATOMIC.get_mut(), false);
        ATOMIC.store(true, SeqCst);
        assert_eq!(*ATOMIC.get_mut(), true);
        ATOMIC.fetch_or(false, SeqCst);
        assert_eq!(*ATOMIC.get_mut(), true);
        ATOMIC.fetch_and(false, SeqCst);
        assert_eq!(*ATOMIC.get_mut(), false);
        ATOMIC.fetch_nand(true, SeqCst);
        assert_eq!(*ATOMIC.get_mut(), true);
        ATOMIC.fetch_xor(true, SeqCst);
        assert_eq!(*ATOMIC.get_mut(), false);
    }
}