3 // revisions: default nomiropt
4 //[nomiropt]compile-flags: -Z mir-opt-level=0
6 #![feature(generators, generator_trait)]
8 use std::ops::Generator;
10 use std::sync::atomic::{AtomicUsize, Ordering};
12 static A: AtomicUsize = AtomicUsize::new(0);
18 A.fetch_add(1, Ordering::SeqCst);
35 let n = A.load(Ordering::SeqCst);
36 drop(Pin::new(&mut foo).resume(()));
37 assert_eq!(A.load(Ordering::SeqCst), n);
39 assert_eq!(A.load(Ordering::SeqCst), n + 1);
48 let n = A.load(Ordering::SeqCst);
49 drop(Pin::new(&mut foo).resume(()));
50 assert_eq!(A.load(Ordering::SeqCst), n + 1);
52 assert_eq!(A.load(Ordering::SeqCst), n + 1);
62 let n = A.load(Ordering::SeqCst);
63 assert_eq!(A.load(Ordering::SeqCst), n);
65 assert_eq!(A.load(Ordering::SeqCst), n + 1);