]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/issue-49232.rs
Rollup merge of #65389 - ecstatic-morse:zero-sized-array-no-drop, r=eddyb
[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 //     }
28 //     bb0: {
29 //         goto -> bb1;
30 //     }
31 //     bb1: {
32 //         falseUnwind -> [real: bb3, cleanup: bb4];
33 //     }
34 //     bb2: {
35 //         goto -> bb14;
36 //     }
37 //     bb3: {
38 //         StorageLive(_2);
39 //         StorageLive(_3);
40 //         _3 = const true;
41 //         FakeRead(ForMatchedPlace, _3);
42 //         switchInt(_3) -> [false: bb5, otherwise: bb6];
43 //     }
44 //     bb4 (cleanup): {
45 //         resume;
46 //     }
47 //     bb5: {
48 //         falseEdges -> [real: bb7, imaginary: bb6];
49 //     }
50 //     bb6: {
51 //         _0 = ();
52 //         goto -> bb8;
53 //     }
54 //     bb7: {
55 //         _2 = const 4i32;
56 //         goto -> bb12;
57 //     }
58 //     bb8: {
59 //         StorageDead(_3);
60 //         goto -> bb9;
61 //     }
62 //     bb9: {
63 //         StorageDead(_2);
64 //         goto -> bb2;
65 //     }
66 //     bb10: {
67 //         _4 = ();
68 //         unreachable;
69 //     }
70 //     bb11: {
71 //         goto -> bb12;
72 //     }
73 //     bb12: {
74 //         FakeRead(ForLet, _2);
75 //         StorageDead(_3);
76 //         StorageLive(_5);
77 //         StorageLive(_6);
78 //         _6 = &_2;
79 //         _5 = const std::mem::drop::<&i32>(move _6) -> [return: bb13, unwind: bb4];
80 //     }
81 //     bb13: {
82 //         StorageDead(_6);
83 //         StorageDead(_5);
84 //         _1 = ();
85 //         StorageDead(_2);
86 //         goto -> bb1;
87 //     }
88 //     bb14: {
89 //         return;
90 //     }
91 // }
92 // END rustc.main.mir_map.0.mir