]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/simplify-locals.rs
Rollup merge of #96603 - Alexendoo:const-generics-tests, r=Mark-Simulacrum
[rust.git] / src / test / mir-opt / simplify-locals.rs
1 // compile-flags: -C overflow-checks=off
2
3 #![feature(box_syntax)]
4 #![feature(thread_local)]
5
6 #[derive(Copy, Clone)]
7 enum E {
8      A,
9      B,
10 }
11
12 // EMIT_MIR simplify_locals.c.SimplifyLocals.diff
13 fn c() {
14     let bytes = [0u8; 10];
15     // Unused cast
16     let _: &[u8] = &bytes;
17 }
18
19 // EMIT_MIR simplify_locals.d1.SimplifyLocals.diff
20 fn d1() {
21     // Unused set discriminant
22     let _ = E::A;
23 }
24
25 // EMIT_MIR simplify_locals.d2.SimplifyLocals.diff
26 fn d2() {
27     // Unused set discriminant
28     {(10, E::A)}.1 = E::B;
29 }
30
31 // EMIT_MIR simplify_locals.r.SimplifyLocals.diff
32 fn r() {
33     let mut a = 1;
34     // Unused references
35     let _ = &a;
36     let _ = &mut a;
37 }
38
39 #[thread_local] static mut X: u32 = 0;
40
41 // EMIT_MIR simplify_locals.t1.SimplifyLocals.diff
42 fn t1() {
43     // Unused thread local
44     unsafe { X };
45 }
46
47 // EMIT_MIR simplify_locals.t2.SimplifyLocals.diff
48 fn t2() {
49     // Unused thread local
50     unsafe { &mut X };
51 }
52
53 // EMIT_MIR simplify_locals.t3.SimplifyLocals.diff
54 fn t3() {
55     // Unused thread local
56     unsafe { *&mut X };
57 }
58
59 // EMIT_MIR simplify_locals.t4.SimplifyLocals.diff
60 fn t4() -> u32 {
61     // Used thread local
62     unsafe { X + 1 }
63 }
64
65 fn main() {
66     c();
67     d1();
68     d2();
69     r();
70     t1();
71     t2();
72     t3();
73     t4();
74 }