]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/issue-49232.rs
Auto merge of #69265 - ehuss:update-cargo, r=Dylan-DPC
[rust.git] / src / test / mir-opt / issue-49232.rs
1 // We must mark a variable whose initialization fails due to an
2 // abort statement as StorageDead.
3
4 fn main() {
5     loop {
6         let beacon = {
7             match true {
8                 false => 4,
9                 true => break,
10             }
11         };
12         drop(&beacon);
13     }
14 }
15
16 // END RUST SOURCE
17 // START rustc.main.mir_map.0.mir
18 // fn main() -> (){
19 //     let mut _0: ();
20 //     let mut _1: ();
21 //     let _2: i32;
22 //     let mut _3: bool;
23 //     let mut _4: !;
24 //     let _5: ();
25 //     let mut _6: &i32;
26 //     scope 1 {
27 //         debug beacon => _2;
28 //     }
29 //     bb0: {
30 //         goto -> bb1;
31 //     }
32 //     bb1: {
33 //         falseUnwind -> [real: bb3, cleanup: bb4];
34 //     }
35 //     bb2: {
36 //         goto -> bb14;
37 //     }
38 //     bb3: {
39 //         StorageLive(_2);
40 //         StorageLive(_3);
41 //         _3 = const true;
42 //         FakeRead(ForMatchedPlace, _3);
43 //         switchInt(_3) -> [false: bb5, otherwise: bb6];
44 //     }
45 //     bb4 (cleanup): {
46 //         resume;
47 //     }
48 //     bb5: {
49 //         falseEdges -> [real: bb7, imaginary: bb6];
50 //     }
51 //     bb6: {
52 //         _0 = ();
53 //         goto -> bb8;
54 //     }
55 //     bb7: {
56 //         _2 = const 4i32;
57 //         goto -> bb12;
58 //     }
59 //     bb8: {
60 //         StorageDead(_3);
61 //         goto -> bb9;
62 //     }
63 //     bb9: {
64 //         StorageDead(_2);
65 //         goto -> bb2;
66 //     }
67 //     bb10: {
68 //         _4 = ();
69 //         unreachable;
70 //     }
71 //     bb11: {
72 //         goto -> bb12;
73 //     }
74 //     bb12: {
75 //         FakeRead(ForLet, _2);
76 //         StorageDead(_3);
77 //         StorageLive(_5);
78 //         StorageLive(_6);
79 //         _6 = &_2;
80 //         _5 = const std::mem::drop::<&i32>(move _6) -> [return: bb13, unwind: bb4];
81 //     }
82 //     bb13: {
83 //         StorageDead(_6);
84 //         StorageDead(_5);
85 //         _1 = ();
86 //         StorageDead(_2);
87 //         goto -> bb1;
88 //     }
89 //     bb14: {
90 //         return;
91 //     }
92 // }
93 // END rustc.main.mir_map.0.mir