]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/unreachable_diverging.rs
Render const pointers in MIR more compactly
[rust.git] / src / test / mir-opt / unreachable_diverging.rs
1 pub enum Empty {}
2
3 fn empty() -> Option<Empty> {
4     None
5 }
6
7 fn loop_forever() {
8     loop {}
9 }
10
11 fn main() {
12     let x = true;
13     if let Some(bomb) = empty() {
14         if x {
15             loop_forever()
16         }
17         match bomb {}
18     }
19 }
20
21 // END RUST SOURCE
22 // START rustc.main.UnreachablePropagation.before.mir
23 //      bb3: {
24 //          StorageLive(_4);
25 //          _4 = move ((_2 as Some).0: Empty);
26 //          StorageLive(_5);
27 //          StorageLive(_6);
28 //          _6 = _1;
29 //          switchInt(_6) -> [false: bb4, otherwise: bb5];
30 //      }
31 //      bb4: {
32 //          _5 = ();
33 //          goto -> bb6;
34 //      }
35 //      bb5: {
36 //          _5 = const loop_forever() -> bb6;
37 //      }
38 //      bb6: {
39 //          StorageDead(_6);
40 //          StorageDead(_5);
41 //          StorageLive(_7);
42 //          unreachable;
43 //      }
44 //  }
45 // END rustc.main.UnreachablePropagation.before.mir
46 // START rustc.main.UnreachablePropagation.after.mir
47 //      bb3: {
48 //          StorageLive(_4);
49 //          _4 = move ((_2 as Some).0: Empty);
50 //          StorageLive(_5);
51 //          StorageLive(_6);
52 //          _6 = _1;
53 //          goto -> bb4;
54 //      }
55 //      bb4: {
56 //          _5 = const loop_forever() -> bb5;
57 //      }
58 //      bb5: {
59 //          StorageDead(_6);
60 //          StorageDead(_5);
61 //          StorageLive(_7);
62 //          unreachable;
63 //      }
64 //  }
65 // END rustc.main.UnreachablePropagation.after.mir