]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.mir
Rollup merge of #104318 - c410-f3r:moar-errors, r=petrochenkov
[rust.git] / src / test / mir-opt / retag.main.SimplifyCfg-elaborate-drops.after.mir
1 // MIR for `main` after SimplifyCfg-elaborate-drops
2
3 fn main() -> () {
4     let mut _0: ();                      // return place in scope 0 at $DIR/retag.rs:+0:11: +0:11
5     let mut _1: i32;                     // in scope 0 at $DIR/retag.rs:+1:9: +1:14
6     let _2: ();                          // in scope 0 at $DIR/retag.rs:+2:5: +8:6
7     let mut _4: &Test;                   // in scope 0 at $DIR/retag.rs:+3:17: +3:36
8     let _5: Test;                        // in scope 0 at $DIR/retag.rs:+3:17: +3:24
9     let mut _6: &mut i32;                // in scope 0 at $DIR/retag.rs:+3:29: +3:35
10     let mut _7: &mut i32;                // in scope 0 at $DIR/retag.rs:+3:29: +3:35
11     let mut _9: &mut i32;                // in scope 0 at $DIR/retag.rs:+4:19: +4:20
12     let mut _12: *mut i32;               // in scope 0 at $DIR/retag.rs:+7:18: +7:29
13     let mut _14: [closure@main::{closure#0}]; // in scope 0 at $DIR/retag.rs:+11:31: +14:6
14     let mut _16: for<'a> fn(&'a i32) -> &'a i32; // in scope 0 at $DIR/retag.rs:+15:14: +15:15
15     let mut _17: &i32;                   // in scope 0 at $DIR/retag.rs:+15:16: +15:18
16     let _18: &i32;                       // in scope 0 at $DIR/retag.rs:+15:16: +15:18
17     let _19: &i32;                       // in scope 0 at $DIR/retag.rs:+18:5: +18:24
18     let mut _20: &Test;                  // in scope 0 at $DIR/retag.rs:+18:5: +18:24
19     let _21: Test;                       // in scope 0 at $DIR/retag.rs:+18:5: +18:12
20     let mut _22: &i32;                   // in scope 0 at $DIR/retag.rs:+18:21: +18:23
21     let _23: &i32;                       // in scope 0 at $DIR/retag.rs:+18:21: +18:23
22     let _24: i32;                        // in scope 0 at $DIR/retag.rs:+18:22: +18:23
23     let mut _26: *const i32;             // in scope 0 at $DIR/retag.rs:+21:14: +21:28
24     let _27: ();                         // in scope 0 at $DIR/retag.rs:+23:5: +23:18
25     scope 1 {
26         debug x => _1;                   // in scope 1 at $DIR/retag.rs:+1:9: +1:14
27         let _3: &mut i32;                // in scope 1 at $DIR/retag.rs:+3:13: +3:14
28         let _13: for<'a> fn(&'a i32) -> &'a i32; // in scope 1 at $DIR/retag.rs:+11:9: +11:10
29         scope 2 {
30             debug v => _3;               // in scope 2 at $DIR/retag.rs:+3:13: +3:14
31             let _8: &mut i32;            // in scope 2 at $DIR/retag.rs:+4:13: +4:14
32             scope 3 {
33                 debug w => _8;           // in scope 3 at $DIR/retag.rs:+4:13: +4:14
34                 let _10: &mut i32;       // in scope 3 at $DIR/retag.rs:+5:13: +5:14
35                 scope 4 {
36                     debug w => _10;      // in scope 4 at $DIR/retag.rs:+5:13: +5:14
37                     let _11: *mut i32;   // in scope 4 at $DIR/retag.rs:+7:13: +7:15
38                     scope 5 {
39                         debug _w => _11; // in scope 5 at $DIR/retag.rs:+7:13: +7:15
40                     }
41                 }
42             }
43         }
44         scope 6 {
45             debug c => _13;              // in scope 6 at $DIR/retag.rs:+11:9: +11:10
46             let _15: &i32;               // in scope 6 at $DIR/retag.rs:+15:9: +15:11
47             scope 7 {
48                 debug _w => _15;         // in scope 7 at $DIR/retag.rs:+15:9: +15:11
49                 let _25: *const i32;     // in scope 7 at $DIR/retag.rs:+21:9: +21:11
50                 let mut _28: &i32;       // in scope 7 at $DIR/retag.rs:+18:21: +18:23
51                 scope 8 {
52                     debug _w => _25;     // in scope 8 at $DIR/retag.rs:+21:9: +21:11
53                 }
54             }
55         }
56     }
57
58     bb0: {
59         StorageLive(_1);                 // scope 0 at $DIR/retag.rs:+1:9: +1:14
60         _1 = const 0_i32;                // scope 0 at $DIR/retag.rs:+1:17: +1:18
61         StorageLive(_2);                 // scope 1 at $DIR/retag.rs:+2:5: +8:6
62         StorageLive(_3);                 // scope 1 at $DIR/retag.rs:+3:13: +3:14
63         StorageLive(_4);                 // scope 1 at $DIR/retag.rs:+3:17: +3:36
64         StorageLive(_5);                 // scope 1 at $DIR/retag.rs:+3:17: +3:24
65         Deinit(_5);                      // scope 1 at $DIR/retag.rs:+3:17: +3:24
66         (_5.0: i32) = const 0_i32;       // scope 1 at $DIR/retag.rs:+3:17: +3:24
67         _4 = &_5;                        // scope 1 at $DIR/retag.rs:+3:17: +3:36
68         Retag(_4);                       // scope 1 at $DIR/retag.rs:+3:17: +3:36
69         StorageLive(_6);                 // scope 1 at $DIR/retag.rs:+3:29: +3:35
70         StorageLive(_7);                 // scope 1 at $DIR/retag.rs:+3:29: +3:35
71         _7 = &mut _1;                    // scope 1 at $DIR/retag.rs:+3:29: +3:35
72         Retag(_7);                       // scope 1 at $DIR/retag.rs:+3:29: +3:35
73         _6 = &mut (*_7);                 // scope 1 at $DIR/retag.rs:+3:29: +3:35
74         Retag([2phase] _6);              // scope 1 at $DIR/retag.rs:+3:29: +3:35
75         _3 = Test::foo(move _4, move _6) -> [return: bb1, unwind: bb8]; // scope 1 at $DIR/retag.rs:+3:17: +3:36
76                                          // mir::Constant
77                                          // + span: $DIR/retag.rs:33:25: 33:28
78                                          // + literal: Const { ty: for<'a, 'x> fn(&'a Test, &'x mut i32) -> &'x mut i32 {Test::foo}, val: Value(<ZST>) }
79     }
80
81     bb1: {
82         Retag(_3);                       // scope 1 at $DIR/retag.rs:+3:17: +3:36
83         StorageDead(_6);                 // scope 1 at $DIR/retag.rs:+3:35: +3:36
84         StorageDead(_4);                 // scope 1 at $DIR/retag.rs:+3:35: +3:36
85         StorageDead(_7);                 // scope 1 at $DIR/retag.rs:+3:36: +3:37
86         drop(_5) -> [return: bb2, unwind: bb9]; // scope 1 at $DIR/retag.rs:+3:36: +3:37
87     }
88
89     bb2: {
90         StorageDead(_5);                 // scope 1 at $DIR/retag.rs:+3:36: +3:37
91         StorageLive(_8);                 // scope 2 at $DIR/retag.rs:+4:13: +4:14
92         StorageLive(_9);                 // scope 2 at $DIR/retag.rs:+4:19: +4:20
93         _9 = move _3;                    // scope 2 at $DIR/retag.rs:+4:19: +4:20
94         Retag(_9);                       // scope 2 at $DIR/retag.rs:+4:19: +4:20
95         _8 = &mut (*_9);                 // scope 2 at $DIR/retag.rs:+4:19: +4:20
96         Retag(_8);                       // scope 2 at $DIR/retag.rs:+4:19: +4:20
97         StorageDead(_9);                 // scope 2 at $DIR/retag.rs:+4:22: +4:23
98         StorageLive(_10);                // scope 3 at $DIR/retag.rs:+5:13: +5:14
99         _10 = move _8;                   // scope 3 at $DIR/retag.rs:+5:17: +5:18
100         Retag(_10);                      // scope 3 at $DIR/retag.rs:+5:17: +5:18
101         StorageLive(_11);                // scope 4 at $DIR/retag.rs:+7:13: +7:15
102         StorageLive(_12);                // scope 4 at $DIR/retag.rs:+7:18: +7:29
103         _12 = &raw mut (*_10);           // scope 4 at $DIR/retag.rs:+7:18: +7:19
104         Retag([raw] _12);                // scope 4 at $DIR/retag.rs:+7:18: +7:19
105         _11 = _12;                       // scope 4 at $DIR/retag.rs:+7:18: +7:29
106         StorageDead(_12);                // scope 4 at $DIR/retag.rs:+7:29: +7:30
107         _2 = const ();                   // scope 1 at $DIR/retag.rs:+2:5: +8:6
108         StorageDead(_11);                // scope 4 at $DIR/retag.rs:+8:5: +8:6
109         StorageDead(_10);                // scope 3 at $DIR/retag.rs:+8:5: +8:6
110         StorageDead(_8);                 // scope 2 at $DIR/retag.rs:+8:5: +8:6
111         StorageDead(_3);                 // scope 1 at $DIR/retag.rs:+8:5: +8:6
112         StorageDead(_2);                 // scope 1 at $DIR/retag.rs:+8:5: +8:6
113         StorageLive(_13);                // scope 1 at $DIR/retag.rs:+11:9: +11:10
114         StorageLive(_14);                // scope 1 at $DIR/retag.rs:+11:31: +14:6
115         Deinit(_14);                     // scope 1 at $DIR/retag.rs:+11:31: +14:6
116         Retag(_14);                      // scope 1 at $DIR/retag.rs:+11:31: +14:6
117         _13 = move _14 as for<'a> fn(&'a i32) -> &'a i32 (Pointer(ClosureFnPointer(Normal))); // scope 1 at $DIR/retag.rs:+11:31: +14:6
118         StorageDead(_14);                // scope 1 at $DIR/retag.rs:+11:47: +11:48
119         StorageLive(_15);                // scope 6 at $DIR/retag.rs:+15:9: +15:11
120         StorageLive(_16);                // scope 6 at $DIR/retag.rs:+15:14: +15:15
121         _16 = _13;                       // scope 6 at $DIR/retag.rs:+15:14: +15:15
122         StorageLive(_17);                // scope 6 at $DIR/retag.rs:+15:16: +15:18
123         StorageLive(_18);                // scope 6 at $DIR/retag.rs:+15:16: +15:18
124         _18 = &_1;                       // scope 6 at $DIR/retag.rs:+15:16: +15:18
125         Retag(_18);                      // scope 6 at $DIR/retag.rs:+15:16: +15:18
126         _17 = &(*_18);                   // scope 6 at $DIR/retag.rs:+15:16: +15:18
127         Retag(_17);                      // scope 6 at $DIR/retag.rs:+15:16: +15:18
128         _15 = move _16(move _17) -> bb3; // scope 6 at $DIR/retag.rs:+15:14: +15:19
129     }
130
131     bb3: {
132         Retag(_15);                      // scope 6 at $DIR/retag.rs:+15:14: +15:19
133         StorageDead(_17);                // scope 6 at $DIR/retag.rs:+15:18: +15:19
134         StorageDead(_16);                // scope 6 at $DIR/retag.rs:+15:18: +15:19
135         StorageDead(_18);                // scope 6 at $DIR/retag.rs:+15:19: +15:20
136         StorageLive(_19);                // scope 7 at $DIR/retag.rs:+18:5: +18:24
137         StorageLive(_20);                // scope 7 at $DIR/retag.rs:+18:5: +18:24
138         StorageLive(_21);                // scope 7 at $DIR/retag.rs:+18:5: +18:12
139         Deinit(_21);                     // scope 7 at $DIR/retag.rs:+18:5: +18:12
140         (_21.0: i32) = const 0_i32;      // scope 7 at $DIR/retag.rs:+18:5: +18:12
141         _20 = &_21;                      // scope 7 at $DIR/retag.rs:+18:5: +18:24
142         Retag(_20);                      // scope 7 at $DIR/retag.rs:+18:5: +18:24
143         StorageLive(_22);                // scope 7 at $DIR/retag.rs:+18:21: +18:23
144         StorageLive(_23);                // scope 7 at $DIR/retag.rs:+18:21: +18:23
145         _28 = const _;                   // scope 7 at $DIR/retag.rs:+18:21: +18:23
146                                          // mir::Constant
147                                          // + span: $DIR/retag.rs:48:21: 48:23
148                                          // + literal: Const { ty: &i32, val: Unevaluated(main, [], Some(promoted[0])) }
149         Retag(_28);                      // scope 7 at $DIR/retag.rs:+18:21: +18:23
150         _23 = &(*_28);                   // scope 7 at $DIR/retag.rs:+18:21: +18:23
151         Retag(_23);                      // scope 7 at $DIR/retag.rs:+18:21: +18:23
152         _22 = &(*_23);                   // scope 7 at $DIR/retag.rs:+18:21: +18:23
153         Retag(_22);                      // scope 7 at $DIR/retag.rs:+18:21: +18:23
154         _19 = Test::foo_shr(move _20, move _22) -> [return: bb4, unwind: bb7]; // scope 7 at $DIR/retag.rs:+18:5: +18:24
155                                          // mir::Constant
156                                          // + span: $DIR/retag.rs:48:13: 48:20
157                                          // + literal: Const { ty: for<'a, 'x> fn(&'a Test, &'x i32) -> &'x i32 {Test::foo_shr}, val: Value(<ZST>) }
158     }
159
160     bb4: {
161         Retag(_19);                      // scope 7 at $DIR/retag.rs:+18:5: +18:24
162         StorageDead(_22);                // scope 7 at $DIR/retag.rs:+18:23: +18:24
163         StorageDead(_20);                // scope 7 at $DIR/retag.rs:+18:23: +18:24
164         StorageDead(_23);                // scope 7 at $DIR/retag.rs:+18:24: +18:25
165         drop(_21) -> [return: bb5, unwind: bb9]; // scope 7 at $DIR/retag.rs:+18:24: +18:25
166     }
167
168     bb5: {
169         StorageDead(_21);                // scope 7 at $DIR/retag.rs:+18:24: +18:25
170         StorageDead(_19);                // scope 7 at $DIR/retag.rs:+18:24: +18:25
171         StorageLive(_25);                // scope 7 at $DIR/retag.rs:+21:9: +21:11
172         StorageLive(_26);                // scope 7 at $DIR/retag.rs:+21:14: +21:28
173         _26 = &raw const (*_15);         // scope 7 at $DIR/retag.rs:+21:14: +21:16
174         Retag([raw] _26);                // scope 7 at $DIR/retag.rs:+21:14: +21:16
175         _25 = _26;                       // scope 7 at $DIR/retag.rs:+21:14: +21:28
176         StorageDead(_26);                // scope 7 at $DIR/retag.rs:+21:28: +21:29
177         StorageLive(_27);                // scope 8 at $DIR/retag.rs:+23:5: +23:18
178         _27 = array_casts() -> bb6;      // scope 8 at $DIR/retag.rs:+23:5: +23:18
179                                          // mir::Constant
180                                          // + span: $DIR/retag.rs:53:5: 53:16
181                                          // + literal: Const { ty: fn() {array_casts}, val: Value(<ZST>) }
182     }
183
184     bb6: {
185         StorageDead(_27);                // scope 8 at $DIR/retag.rs:+23:18: +23:19
186         _0 = const ();                   // scope 0 at $DIR/retag.rs:+0:11: +24:2
187         StorageDead(_25);                // scope 7 at $DIR/retag.rs:+24:1: +24:2
188         StorageDead(_15);                // scope 6 at $DIR/retag.rs:+24:1: +24:2
189         StorageDead(_13);                // scope 1 at $DIR/retag.rs:+24:1: +24:2
190         StorageDead(_1);                 // scope 0 at $DIR/retag.rs:+24:1: +24:2
191         return;                          // scope 0 at $DIR/retag.rs:+24:2: +24:2
192     }
193
194     bb7 (cleanup): {
195         drop(_21) -> bb9;                // scope 7 at $DIR/retag.rs:+18:24: +18:25
196     }
197
198     bb8 (cleanup): {
199         drop(_5) -> bb9;                 // scope 1 at $DIR/retag.rs:+3:36: +3:37
200     }
201
202     bb9 (cleanup): {
203         resume;                          // scope 0 at $DIR/retag.rs:+0:1: +24:2
204     }
205 }