]> git.lizzy.rs Git - rust.git/blob - tests/mir-opt/slice_filter.variant_a-{closure#0}.DestinationPropagation.diff
Auto merge of #107443 - cjgillot:generator-less-query, r=compiler-errors
[rust.git] / tests / mir-opt / slice_filter.variant_a-{closure#0}.DestinationPropagation.diff
1 - // MIR for `variant_a::{closure#0}` before DestinationPropagation
2 + // MIR for `variant_a::{closure#0}` after DestinationPropagation
3   
4   fn variant_a::{closure#0}(_1: &mut [closure@$DIR/slice_filter.rs:8:25: 8:39], _2: &&(usize, usize, usize, usize)) -> bool {
5       let mut _0: bool;                    // return place in scope 0 at $DIR/slice_filter.rs:+0:40: +0:40
6       let _3: &usize;                      // in scope 0 at $DIR/slice_filter.rs:+0:27: +0:28
7       let _4: &usize;                      // in scope 0 at $DIR/slice_filter.rs:+0:30: +0:31
8       let _5: &usize;                      // in scope 0 at $DIR/slice_filter.rs:+0:33: +0:34
9       let _6: &usize;                      // in scope 0 at $DIR/slice_filter.rs:+0:36: +0:37
10       let mut _7: bool;                    // in scope 0 at $DIR/slice_filter.rs:+0:40: +0:56
11       let mut _8: bool;                    // in scope 0 at $DIR/slice_filter.rs:+0:40: +0:46
12       let mut _9: &&usize;                 // in scope 0 at $DIR/slice_filter.rs:+0:40: +0:41
13       let mut _10: &&usize;                // in scope 0 at $DIR/slice_filter.rs:+0:45: +0:46
14       let _11: &usize;                     // in scope 0 at $DIR/slice_filter.rs:+0:45: +0:46
15       let mut _12: bool;                   // in scope 0 at $DIR/slice_filter.rs:+0:50: +0:56
16       let mut _13: &&usize;                // in scope 0 at $DIR/slice_filter.rs:+0:50: +0:51
17       let mut _14: &&usize;                // in scope 0 at $DIR/slice_filter.rs:+0:55: +0:56
18       let _15: &usize;                     // in scope 0 at $DIR/slice_filter.rs:+0:55: +0:56
19       let mut _16: bool;                   // in scope 0 at $DIR/slice_filter.rs:+0:60: +0:76
20       let mut _17: bool;                   // in scope 0 at $DIR/slice_filter.rs:+0:60: +0:66
21       let mut _18: &&usize;                // in scope 0 at $DIR/slice_filter.rs:+0:60: +0:61
22       let mut _19: &&usize;                // in scope 0 at $DIR/slice_filter.rs:+0:65: +0:66
23       let _20: &usize;                     // in scope 0 at $DIR/slice_filter.rs:+0:65: +0:66
24       let mut _21: bool;                   // in scope 0 at $DIR/slice_filter.rs:+0:70: +0:76
25       let mut _22: &&usize;                // in scope 0 at $DIR/slice_filter.rs:+0:70: +0:71
26       let mut _23: &&usize;                // in scope 0 at $DIR/slice_filter.rs:+0:75: +0:76
27       let _24: &usize;                     // in scope 0 at $DIR/slice_filter.rs:+0:75: +0:76
28       let mut _25: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:38
29       let mut _26: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:38
30       let mut _27: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:38
31       let mut _28: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:38
32       scope 1 {
33           debug a => _3;                   // in scope 1 at $DIR/slice_filter.rs:+0:27: +0:28
34           debug b => _4;                   // in scope 1 at $DIR/slice_filter.rs:+0:30: +0:31
35           debug c => _5;                   // in scope 1 at $DIR/slice_filter.rs:+0:33: +0:34
36           debug d => _6;                   // in scope 1 at $DIR/slice_filter.rs:+0:36: +0:37
37           scope 2 (inlined cmp::impls::<impl PartialOrd for &usize>::le) { // at $DIR/slice_filter.rs:8:40: 8:46
38               debug self => _9;            // in scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL
39               debug other => _10;          // in scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL
40               let mut _29: &usize;         // in scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL
41               let mut _30: &usize;         // in scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL
42               scope 3 (inlined cmp::impls::<impl PartialOrd for usize>::le) { // at $SRC_DIR/core/src/cmp.rs:LL:COL
43                   debug self => _29;       // in scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL
44                   debug other => _30;      // in scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL
45                   let mut _31: usize;      // in scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL
46                   let mut _32: usize;      // in scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL
47               }
48           }
49           scope 4 (inlined cmp::impls::<impl PartialOrd for &usize>::le) { // at $DIR/slice_filter.rs:8:60: 8:66
50               debug self => _18;           // in scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL
51               debug other => _19;          // in scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL
52               let mut _33: &usize;         // in scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL
53               let mut _34: &usize;         // in scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL
54               scope 5 (inlined cmp::impls::<impl PartialOrd for usize>::le) { // at $SRC_DIR/core/src/cmp.rs:LL:COL
55                   debug self => _33;       // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL
56                   debug other => _34;      // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL
57                   let mut _35: usize;      // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL
58                   let mut _36: usize;      // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL
59               }
60           }
61           scope 6 (inlined cmp::impls::<impl PartialOrd for &usize>::le) { // at $DIR/slice_filter.rs:8:50: 8:56
62               debug self => _13;           // in scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL
63               debug other => _14;          // in scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL
64               let mut _37: &usize;         // in scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL
65               let mut _38: &usize;         // in scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL
66               scope 7 (inlined cmp::impls::<impl PartialOrd for usize>::le) { // at $SRC_DIR/core/src/cmp.rs:LL:COL
67                   debug self => _37;       // in scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL
68                   debug other => _38;      // in scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL
69                   let mut _39: usize;      // in scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL
70                   let mut _40: usize;      // in scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL
71               }
72           }
73           scope 8 (inlined cmp::impls::<impl PartialOrd for &usize>::le) { // at $DIR/slice_filter.rs:8:70: 8:76
74               debug self => _22;           // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL
75               debug other => _23;          // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL
76               let mut _41: &usize;         // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL
77               let mut _42: &usize;         // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL
78               scope 9 (inlined cmp::impls::<impl PartialOrd for usize>::le) { // at $SRC_DIR/core/src/cmp.rs:LL:COL
79                   debug self => _41;       // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
80                   debug other => _42;      // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
81                   let mut _43: usize;      // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
82                   let mut _44: usize;      // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
83               }
84           }
85       }
86   
87       bb0: {
88           StorageLive(_3);                 // scope 0 at $DIR/slice_filter.rs:+0:27: +0:28
89           _25 = deref_copy (*_2);          // scope 0 at $DIR/slice_filter.rs:+0:27: +0:28
90           _3 = &((*_25).0: usize);         // scope 0 at $DIR/slice_filter.rs:+0:27: +0:28
91           StorageLive(_4);                 // scope 0 at $DIR/slice_filter.rs:+0:30: +0:31
92           _26 = deref_copy (*_2);          // scope 0 at $DIR/slice_filter.rs:+0:30: +0:31
93           _4 = &((*_26).1: usize);         // scope 0 at $DIR/slice_filter.rs:+0:30: +0:31
94           StorageLive(_5);                 // scope 0 at $DIR/slice_filter.rs:+0:33: +0:34
95           _27 = deref_copy (*_2);          // scope 0 at $DIR/slice_filter.rs:+0:33: +0:34
96           _5 = &((*_27).2: usize);         // scope 0 at $DIR/slice_filter.rs:+0:33: +0:34
97           StorageLive(_6);                 // scope 0 at $DIR/slice_filter.rs:+0:36: +0:37
98           _28 = deref_copy (*_2);          // scope 0 at $DIR/slice_filter.rs:+0:36: +0:37
99           _6 = &((*_28).3: usize);         // scope 0 at $DIR/slice_filter.rs:+0:36: +0:37
100 -         StorageLive(_7);                 // scope 1 at $DIR/slice_filter.rs:+0:40: +0:56
101 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:40: +0:56
102           StorageLive(_8);                 // scope 1 at $DIR/slice_filter.rs:+0:40: +0:46
103           StorageLive(_9);                 // scope 1 at $DIR/slice_filter.rs:+0:40: +0:41
104           _9 = &_3;                        // scope 1 at $DIR/slice_filter.rs:+0:40: +0:41
105           StorageLive(_10);                // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46
106           StorageLive(_11);                // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46
107           _11 = _5;                        // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46
108           _10 = &_11;                      // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46
109           _29 = deref_copy (*_9);          // scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL
110           _30 = deref_copy (*_10);         // scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL
111           StorageLive(_31);                // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL
112           _31 = (*_29);                    // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL
113           StorageLive(_32);                // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL
114           _32 = (*_30);                    // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL
115           _8 = Le(move _31, move _32);     // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL
116           StorageDead(_32);                // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL
117           StorageDead(_31);                // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL
118           StorageDead(_11);                // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46
119           StorageDead(_10);                // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46
120           StorageDead(_9);                 // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46
121           switchInt(move _8) -> [0: bb4, otherwise: bb5]; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:56
122       }
123   
124       bb1: {
125           _0 = const true;                 // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76
126           goto -> bb3;                     // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76
127       }
128   
129       bb2: {
130 -         StorageLive(_16);                // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76
131 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76
132           StorageLive(_17);                // scope 1 at $DIR/slice_filter.rs:+0:60: +0:66
133           StorageLive(_18);                // scope 1 at $DIR/slice_filter.rs:+0:60: +0:61
134           _18 = &_5;                       // scope 1 at $DIR/slice_filter.rs:+0:60: +0:61
135           StorageLive(_19);                // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66
136           StorageLive(_20);                // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66
137           _20 = _3;                        // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66
138           _19 = &_20;                      // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66
139           _33 = deref_copy (*_18);         // scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL
140           _34 = deref_copy (*_19);         // scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL
141           StorageLive(_35);                // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL
142           _35 = (*_33);                    // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL
143           StorageLive(_36);                // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL
144           _36 = (*_34);                    // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL
145           _17 = Le(move _35, move _36);    // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL
146           StorageDead(_36);                // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL
147           StorageDead(_35);                // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL
148           StorageDead(_20);                // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66
149           StorageDead(_19);                // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66
150           StorageDead(_18);                // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66
151           switchInt(move _17) -> [0: bb6, otherwise: bb7]; // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76
152       }
153   
154       bb3: {
155 -         StorageDead(_16);                // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
156 -         StorageDead(_7);                 // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
157 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
158 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
159           return;                          // scope 0 at $DIR/slice_filter.rs:+0:76: +0:76
160       }
161   
162       bb4: {
163 -         StorageDead(_12);                // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
164 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
165           StorageDead(_8);                 // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
166           goto -> bb2;                     // scope 1 at $DIR/slice_filter.rs:+0:40: +0:56
167       }
168   
169       bb5: {
170 -         StorageLive(_12);                // scope 1 at $DIR/slice_filter.rs:+0:50: +0:56
171 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:50: +0:56
172           StorageLive(_13);                // scope 1 at $DIR/slice_filter.rs:+0:50: +0:51
173           _13 = &_6;                       // scope 1 at $DIR/slice_filter.rs:+0:50: +0:51
174           StorageLive(_14);                // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
175           StorageLive(_15);                // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
176           _15 = _4;                        // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
177           _14 = &_15;                      // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
178           _37 = deref_copy (*_13);         // scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL
179           _38 = deref_copy (*_14);         // scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL
180           StorageLive(_39);                // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL
181           _39 = (*_37);                    // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL
182           StorageLive(_40);                // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL
183           _40 = (*_38);                    // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL
184           _12 = Le(move _39, move _40);    // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL
185           StorageDead(_40);                // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL
186           StorageDead(_39);                // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL
187           StorageDead(_15);                // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
188           StorageDead(_14);                // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
189           StorageDead(_13);                // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
190 -         _7 = move _12;                   // scope 1 at $DIR/slice_filter.rs:+0:40: +0:56
191 -         StorageDead(_12);                // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
192 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:40: +0:56
193 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
194           StorageDead(_8);                 // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56
195 -         switchInt(move _7) -> [0: bb2, otherwise: bb1]; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76
196 +         switchInt(move _12) -> [0: bb2, otherwise: bb1]; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76
197       }
198   
199       bb6: {
200 -         _16 = const false;               // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76
201 +         _0 = const false;                // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76
202           goto -> bb8;                     // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76
203       }
204   
205       bb7: {
206 -         StorageLive(_21);                // scope 1 at $DIR/slice_filter.rs:+0:70: +0:76
207 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:70: +0:76
208           StorageLive(_22);                // scope 1 at $DIR/slice_filter.rs:+0:70: +0:71
209           _22 = &_4;                       // scope 1 at $DIR/slice_filter.rs:+0:70: +0:71
210           StorageLive(_23);                // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
211           StorageLive(_24);                // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
212           _24 = _6;                        // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
213           _23 = &_24;                      // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
214           _41 = deref_copy (*_22);         // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL
215           _42 = deref_copy (*_23);         // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL
216           StorageLive(_43);                // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
217           _43 = (*_41);                    // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
218           StorageLive(_44);                // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
219           _44 = (*_42);                    // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
220 -         _21 = Le(move _43, move _44);    // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
221 +         _0 = Le(move _43, move _44);     // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
222           StorageDead(_44);                // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
223           StorageDead(_43);                // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL
224           StorageDead(_24);                // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
225           StorageDead(_23);                // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
226           StorageDead(_22);                // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
227 -         _16 = move _21;                  // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76
228 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76
229           goto -> bb8;                     // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76
230       }
231   
232       bb8: {
233 -         StorageDead(_21);                // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
234 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
235           StorageDead(_17);                // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76
236 -         _0 = move _16;                   // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76
237 +         nop;                             // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76
238           goto -> bb3;                     // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76
239       }
240   }
241