]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/unreachable_asm.rs
Render const pointers in MIR more compactly
[rust.git] / src / test / mir-opt / unreachable_asm.rs
1 // ignore-tidy-linelength
2 #![feature(asm)]
3
4 enum Empty {}
5
6 fn empty() -> Option<Empty> {
7     None
8 }
9
10 fn main() {
11     if let Some(_x) = empty() {
12         let mut _y;
13
14         if true {
15             _y = 21;
16         } else {
17             _y = 42;
18         }
19
20         // asm instruction stops unreachable propagation to if else blocks bb4 and bb5.
21         unsafe { asm!("NOP"); }
22         match _x { }
23     }
24 }
25
26 // END RUST SOURCE
27 // START rustc.main.UnreachablePropagation.before.mir
28 //      bb4: {
29 //          _4 = const 42i32;
30 //          _5 = ();
31 //          goto -> bb6;
32 //      }
33 //      bb5: {
34 //          _4 = const 21i32;
35 //          _5 = ();
36 //          goto -> bb6;
37 //      }
38 //      bb6: {
39 //          StorageDead(_6);
40 //          StorageDead(_5);
41 //          StorageLive(_7);
42 //          asm!(InlineAsmInner { asm: "NOP", asm_str_style: Cooked, outputs: [], inputs: [], clobbers: [], volatile: true, alignstack: false, dialect: Att } : [] : []);
43 //          _7 = ();
44 //          StorageDead(_7);
45 //          StorageLive(_8);
46 //          unreachable;
47 //      }
48 //  }
49 // END rustc.main.UnreachablePropagation.before.mir
50 // START rustc.main.UnreachablePropagation.after.mir
51 //      bb4: {
52 //          _4 = const 42i32;
53 //          _5 = ();
54 //          goto -> bb6;
55 //      }
56 //      bb5: {
57 //          _4 = const 21i32;
58 //          _5 = ();
59 //          goto -> bb6;
60 //      }
61 //      bb6: {
62 //          StorageDead(_6);
63 //          StorageDead(_5);
64 //          StorageLive(_7);
65 //          asm!(InlineAsmInner { asm: "NOP", asm_str_style: Cooked, outputs: [], inputs: [], clobbers: [], volatile: true, alignstack: false, dialect: Att } : [] : []);
66 //          _7 = ();
67 //          StorageDead(_7);
68 //          StorageLive(_8);
69 //          unreachable;
70 //      }
71 //  }
72 // END rustc.main.UnreachablePropagation.after.mir