2 #![allow(stable_features)]
3 // write_volatile causes an LLVM assert with composite types
6 use std::ptr::{read_volatile, write_volatile};
8 #[derive(Debug, Eq, PartialEq)]
10 #[derive(Debug, Eq, PartialEq)]
12 #[derive(Debug, Eq, PartialEq)]
14 #[derive(Debug, Eq, PartialEq)]
16 #[derive(Debug, Eq, PartialEq)]
22 write_volatile(&mut x, 1);
23 assert_eq!(read_volatile(&x), 1);
27 write_volatile(&mut x, 1);
28 assert_eq!(read_volatile(&x), 1);
32 write_volatile(&mut x, A(1));
33 assert_eq!(read_volatile(&x), A(1));
37 write_volatile(&mut x, B(1));
38 assert_eq!(read_volatile(&x), B(1));
42 write_volatile(&mut x, C(1, 1));
43 assert_eq!(read_volatile(&x), C(1, 1));
44 assert_eq!(x, C(1, 1));
47 write_volatile(&mut x, D(1, 1));
48 assert_eq!(read_volatile(&x), D(1, 1));
49 assert_eq!(x, D(1, 1));
51 let mut x = E([0; 32]);
52 write_volatile(&mut x, E([1; 32]));
53 assert_eq!(read_volatile(&x), E([1; 32]));
54 assert_eq!(x, E([1; 32]));