]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/issue_62289.test.ElaborateDrops.before.mir
Auto merge of #83314 - Aaron1011:print-unstable-value, r=lcnr
[rust.git] / src / test / mir-opt / issue_62289.test.ElaborateDrops.before.mir
1 // MIR for `test` before ElaborateDrops
2
3 fn test() -> Option<Box<u32>> {
4     let mut _0: std::option::Option<std::boxed::Box<u32>>; // return place in scope 0 at $DIR/issue-62289.rs:8:14: 8:30
5     let mut _1: std::boxed::Box<u32>;    // in scope 0 at $DIR/issue-62289.rs:9:10: 9:21
6     let mut _2: std::boxed::Box<u32>;    // in scope 0 at $DIR/issue-62289.rs:9:10: 9:21
7     let mut _3: std::result::Result<u32, std::option::NoneError>; // in scope 0 at $DIR/issue-62289.rs:9:15: 9:20
8     let mut _4: std::option::Option<u32>; // in scope 0 at $DIR/issue-62289.rs:9:15: 9:19
9     let mut _5: isize;                   // in scope 0 at $DIR/issue-62289.rs:9:19: 9:20
10     let _6: std::option::NoneError;      // in scope 0 at $DIR/issue-62289.rs:9:19: 9:20
11     let mut _7: !;                       // in scope 0 at $DIR/issue-62289.rs:9:19: 9:20
12     let mut _8: std::option::NoneError;  // in scope 0 at $DIR/issue-62289.rs:9:19: 9:20
13     let mut _9: std::option::NoneError;  // in scope 0 at $DIR/issue-62289.rs:9:19: 9:20
14     let _10: u32;                        // in scope 0 at $DIR/issue-62289.rs:9:15: 9:20
15     scope 1 {
16         debug err => _6;                 // in scope 1 at $DIR/issue-62289.rs:9:19: 9:20
17         scope 2 {
18         }
19     }
20     scope 3 {
21         debug val => _10;                // in scope 3 at $DIR/issue-62289.rs:9:15: 9:20
22         scope 4 {
23         }
24     }
25
26     bb0: {
27         StorageLive(_1);                 // scope 0 at $DIR/issue-62289.rs:9:10: 9:21
28         StorageLive(_2);                 // scope 0 at $DIR/issue-62289.rs:9:10: 9:21
29         _2 = Box(u32);                   // scope 0 at $DIR/issue-62289.rs:9:10: 9:21
30         StorageLive(_3);                 // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
31         StorageLive(_4);                 // scope 0 at $DIR/issue-62289.rs:9:15: 9:19
32         _4 = Option::<u32>::None;        // scope 0 at $DIR/issue-62289.rs:9:15: 9:19
33         _3 = <Option<u32> as Try>::into_result(move _4) -> [return: bb1, unwind: bb12]; // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
34                                          // mir::Constant
35                                          // + span: $DIR/issue-62289.rs:9:15: 9:20
36                                          // + literal: Const { ty: fn(std::option::Option<u32>) -> std::result::Result<<std::option::Option<u32> as std::ops::Try>::Ok, <std::option::Option<u32> as std::ops::Try>::Error> {<std::option::Option<u32> as std::ops::Try>::into_result}, val: Value(Scalar(<ZST>)) }
37     }
38
39     bb1: {
40         StorageDead(_4);                 // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
41         _5 = discriminant(_3);           // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
42         switchInt(move _5) -> [0_isize: bb2, 1_isize: bb4, otherwise: bb3]; // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
43     }
44
45     bb2: {
46         StorageLive(_10);                // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
47         _10 = ((_3 as Ok).0: u32);       // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
48         (*_2) = _10;                     // scope 4 at $DIR/issue-62289.rs:9:15: 9:20
49         StorageDead(_10);                // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
50         _1 = move _2;                    // scope 0 at $DIR/issue-62289.rs:9:10: 9:21
51         drop(_2) -> [return: bb7, unwind: bb11]; // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
52     }
53
54     bb3: {
55         unreachable;                     // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
56     }
57
58     bb4: {
59         StorageLive(_6);                 // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
60         _6 = ((_3 as Err).0: std::option::NoneError); // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
61         StorageLive(_8);                 // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
62         StorageLive(_9);                 // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
63         _9 = _6;                         // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
64         _8 = <NoneError as From<NoneError>>::from(move _9) -> [return: bb5, unwind: bb12]; // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
65                                          // mir::Constant
66                                          // + span: $DIR/issue-62289.rs:9:19: 9:20
67                                          // + literal: Const { ty: fn(std::option::NoneError) -> std::option::NoneError {<std::option::NoneError as std::convert::From<std::option::NoneError>>::from}, val: Value(Scalar(<ZST>)) }
68     }
69
70     bb5: {
71         StorageDead(_9);                 // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
72         _0 = <Option<Box<u32>> as Try>::from_error(move _8) -> [return: bb6, unwind: bb12]; // scope 2 at $DIR/issue-62289.rs:9:15: 9:20
73                                          // mir::Constant
74                                          // + span: $DIR/issue-62289.rs:9:15: 9:20
75                                          // + literal: Const { ty: fn(<std::option::Option<std::boxed::Box<u32>> as std::ops::Try>::Error) -> std::option::Option<std::boxed::Box<u32>> {<std::option::Option<std::boxed::Box<u32>> as std::ops::Try>::from_error}, val: Value(Scalar(<ZST>)) }
76     }
77
78     bb6: {
79         StorageDead(_8);                 // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
80         StorageDead(_6);                 // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
81         drop(_2) -> bb9;                 // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
82     }
83
84     bb7: {
85         StorageDead(_2);                 // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
86         _0 = Option::<Box<u32>>::Some(move _1); // scope 0 at $DIR/issue-62289.rs:9:5: 9:22
87         drop(_1) -> bb8;                 // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
88     }
89
90     bb8: {
91         StorageDead(_1);                 // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
92         StorageDead(_3);                 // scope 0 at $DIR/issue-62289.rs:10:1: 10:2
93         goto -> bb10;                    // scope 0 at $DIR/issue-62289.rs:10:2: 10:2
94     }
95
96     bb9: {
97         StorageDead(_2);                 // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
98         StorageDead(_1);                 // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
99         StorageDead(_3);                 // scope 0 at $DIR/issue-62289.rs:10:1: 10:2
100         goto -> bb10;                    // scope 0 at $DIR/issue-62289.rs:10:2: 10:2
101     }
102
103     bb10: {
104         return;                          // scope 0 at $DIR/issue-62289.rs:10:2: 10:2
105     }
106
107     bb11 (cleanup): {
108         drop(_1) -> bb13;                // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
109     }
110
111     bb12 (cleanup): {
112         drop(_2) -> bb13;                // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
113     }
114
115     bb13 (cleanup): {
116         resume;                          // scope 0 at $DIR/issue-62289.rs:8:1: 10:2
117     }
118 }