]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/unreachable_asm_2.rs
Rollup merge of #67928 - XAMPPRocky:relnotes-1.41.0, r=pietroalbini
[rust.git] / src / test / mir-opt / unreachable_asm_2.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             // asm instruction stops unreachable propagation to block bb3.
16             unsafe { asm!("NOP"); }
17             _y = 21;
18         } else {
19             // asm instruction stops unreachable propagation to block bb3.
20             unsafe { asm!("NOP"); }
21             _y = 42;
22         }
23
24         match _x { }
25     }
26 }
27
28 // END RUST SOURCE
29 // START rustc.main.UnreachablePropagation.before.mir
30 //      bb3: {
31 //          ...
32 //          switchInt(_6) -> [false: bb4, otherwise: bb5];
33 //      }
34 //      bb4: {
35 //          StorageLive(_8);
36 //          asm!(InlineAsmInner { asm: "NOP", asm_str_style: Cooked, outputs: [], inputs: [], clobbers: [], volatile: true, alignstack: false, dialect: Att } : [] : []);
37 //          _8 = ();
38 //          StorageDead(_8);
39 //          _4 = const 42i32;
40 //          _5 = ();
41 //          goto -> bb6;
42 //      }
43 //          bb5: {
44 //          StorageLive(_7);
45 //          asm!(InlineAsmInner { asm: "NOP", asm_str_style: Cooked, outputs: [], inputs: [], clobbers: [], volatile: true, alignstack: false, dialect: Att } : [] : []);
46 //          _7 = ();
47 //          StorageDead(_7);
48 //          _4 = const 21i32;
49 //          _5 = ();
50 //          goto -> bb6;
51 //      }
52 //      bb6: {
53 //          StorageDead(_6);
54 //          StorageDead(_5);
55 //          StorageLive(_9);
56 //          unreachable;
57 //      }
58 //  }
59 // END rustc.main.UnreachablePropagation.before.mir
60 // START rustc.main.UnreachablePropagation.after.mir
61 //      bb3: {
62 //          ...
63 //          switchInt(_6) -> [false: bb4, otherwise: bb5];
64 //      }
65 //      bb4: {
66 //          StorageLive(_8);
67 //          asm!(InlineAsmInner { asm: "NOP", asm_str_style: Cooked, outputs: [], inputs: [], clobbers: [], volatile: true, alignstack: false, dialect: Att } : [] : []);
68 //          _8 = ();
69 //          StorageDead(_8);
70 //          _4 = const 42i32;
71 //          _5 = ();
72 //          unreachable;
73 //      }
74 //          bb5: {
75 //          StorageLive(_7);
76 //          asm!(InlineAsmInner { asm: "NOP", asm_str_style: Cooked, outputs: [], inputs: [], clobbers: [], volatile: true, alignstack: false, dialect: Att } : [] : []);
77 //          _7 = ();
78 //          StorageDead(_7);
79 //          _4 = const 21i32;
80 //          _5 = ();
81 //          unreachable;
82 //      }
83 //  }
84 // END rustc.main.UnreachablePropagation.after.mir