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