@@ -4,28 +4,30 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
4
4
debug slice => _1;
5
5
debug f => _2;
6
6
let mut _0: ( ) ;
7
- let mut _11 : std::slice::Iter<'_, T>;
8
- let mut _12 : std::iter::Enumerate<std::slice::Iter<'_, T>> ;
9
- let mut _13 : std::iter::Enumerate<std::slice::Iter<'_, T>> ;
10
- let mut _21 : std::option::Option<(usize, &T)>;
11
- let mut _24 : &impl Fn(usize, &T);
12
- let mut _25 : (usize, &T);
13
- let _26 : ();
7
+ let mut _11: std:: ptr :: NonNull < T > ;
8
+ let mut _12: * const T ;
9
+ let mut _13: usize ;
10
+ let mut _32 : std:: option:: Option < ( usize , & T ) > ;
11
+ let mut _35 : & impl Fn ( usize , & T ) ;
12
+ let mut _36 : ( usize , & T ) ;
13
+ let _37 : ( ) ;
14
14
scope 1 {
15
- debug iter => _13;
16
- let _22 : usize;
17
- let _23 : &T;
15
+ debug ( ( ( iter: Enumerate <std:: slice:: Iter <' _, T >>) . 0 : std :: slice:: Iter <' _, T >) . 0 : std :: ptr:: NonNull <T >) => _11;
16
+ debug ( ( ( iter: Enumerate <std:: slice:: Iter <' _, T >>) . 0 : std :: slice:: Iter <' _, T >) . 1 : * const T ) => _12;
17
+ debug ( ( ( iter: Enumerate <std:: slice:: Iter <' _, T >>) . 0 : std :: slice:: Iter <' _, T >) . 2 : std :: marker:: PhantomData <& T >) => const ZeroSized : PhantomData <& T >;
18
+ debug ( ( iter: Enumerate <std:: slice:: Iter <' _, T >>) . 1 : usize ) => _13;
19
+ let _33: usize;
20
+ let _34: & T ;
18
21
scope 2 {
19
- debug i => _22 ;
20
- debug x => _23 ;
22
+ debug i => _33 ;
23
+ debug x => _34 ;
21
24
}
22
25
scope 19 ( inlined <Enumerate <std:: slice:: Iter <' _, T >> as Iterator >:: next) {
23
- let mut _14 : &mut std::slice::Iter<'_, T>;
24
- let mut _15 : std::option::Option<&T>;
25
- let mut _19 : (usize, bool);
26
- let mut _20 : (usize, &T);
26
+ let mut _27: std:: option:: Option < & T > ;
27
+ let mut _30: ( usize , bool ) ;
28
+ let mut _31: ( usize , & T ) ;
27
29
scope 20 {
28
- let _18 : usize;
30
+ let _29 : usize;
29
31
scope 25 {
30
32
}
31
33
}
@@ -40,11 +42,59 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
40
42
}
41
43
}
42
44
scope 26 ( inlined <Option <& T > as Try >:: branch) {
43
- let mut _16 : isize;
44
- let _17 : &T;
45
+ let _28: & T ;
45
46
scope 27 {
46
47
}
47
48
}
49
+ scope 29 ( inlined <std:: slice:: Iter <' _, T > as Iterator >:: next) {
50
+ let _14: std:: ptr:: NonNull < T > ;
51
+ let _16: std:: ptr:: NonNull < T > ;
52
+ let mut _19: bool ;
53
+ let mut _22: std:: ptr:: NonNull < T > ;
54
+ let mut _24: usize ;
55
+ let _26: & T ;
56
+ scope 30 {
57
+ let _15: * const T ;
58
+ scope 31 {
59
+ let _23: usize;
60
+ scope 32 {
61
+ scope 35 ( inlined core:: num:: <impl usize >:: unchecked_sub) {
62
+ scope 36 ( inlined core:: ub_checks:: check_language_ub) {
63
+ scope 37 ( inlined core:: ub_checks:: check_language_ub:: runtime) {
64
+ }
65
+ }
66
+ }
67
+ scope 38 ( inlined without_provenance_mut :: < T > ) {
68
+ }
69
+ }
70
+ scope 33 ( inlined std:: ptr:: const_ptr:: < impl * const T > :: addr) {
71
+ scope 34 ( inlined std:: ptr:: const_ptr:: <impl * const T >:: cast :: < ( ) > ) {
72
+ }
73
+ }
74
+ scope 39 ( inlined <NonNull <T > as PartialEq >:: eq) {
75
+ let mut _17: * mut T ;
76
+ let mut _18: * mut T ;
77
+ scope 40 ( inlined NonNull :: < T > :: as_ptr) {
78
+ }
79
+ scope 41 ( inlined NonNull :: < T > :: as_ptr) {
80
+ }
81
+ }
82
+ scope 42 ( inlined NonNull :: < T > :: add) {
83
+ let mut _20: * const T ;
84
+ let mut _21: * const T ;
85
+ scope 43 ( inlined NonNull :: < T > :: as_ptr) {
86
+ }
87
+ }
88
+ scope 44 ( inlined NonNull :: < T > :: as_ref :: < ' _ > ) {
89
+ let _25: * const T ;
90
+ scope 45 ( inlined NonNull :: < T > :: as_ptr) {
91
+ }
92
+ scope 46 ( inlined std:: ptr:: mut_ptr:: < impl * mut T > :: cast_const) {
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
48
98
}
49
99
}
50
100
scope 3 ( inlined core:: slice:: < impl [ T ] > :: iter) {
@@ -89,9 +139,7 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
89
139
}
90
140
91
141
bb0 : {
92
- StorageLive(_11);
93
142
StorageLive ( _3) ;
94
- StorageLive(_6);
95
143
StorageLive ( _4) ;
96
144
_3 = PtrMetadata ( copy _1) ;
97
145
_4 = & raw const ( * _1) ;
@@ -120,86 +168,150 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
120
168
}
121
169
122
170
bb3: {
123
- StorageLive(_10);
124
171
_10 = copy _9;
125
- _11 = std::slice::Iter::<'_, T> { ptr : copy _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
126
- StorageDead(_10);
127
172
StorageDead ( _9) ;
128
173
StorageDead ( _4) ;
129
- StorageDead(_6);
130
174
StorageDead ( _3) ;
131
- _12 = Enumerate::<std::slice::Iter<'_, T>> { iter : copy _11, count: const 0_usize } ;
132
- StorageDead(_11 );
175
+ StorageLive ( _11) ;
176
+ StorageLive ( _12 ) ;
133
177
StorageLive ( _13) ;
134
- _13 = copy _12;
178
+ _11 = copy _6;
179
+ _12 = copy _10;
180
+ _13 = const 0_usize ;
135
181
goto -> bb4;
136
182
}
137
183
138
184
bb4 : {
139
- StorageLive(_21 );
140
- StorageLive(_18 );
141
- StorageLive(_19 );
142
- StorageLive(_15 );
185
+ StorageLive ( _32 ) ;
186
+ StorageLive ( _29 ) ;
187
+ StorageLive ( _30 ) ;
188
+ StorageLive ( _27 ) ;
143
189
StorageLive ( _14) ;
144
- _14 = &mut (_13.0 : std::slice::Iter<'_, T>);
145
- _15 = <std::slice::Iter<'_, T> as Iterator>::next(move _14) -> [return : bb5, unwind unreachable];
190
+ StorageLive ( _15) ;
191
+ StorageLive ( _23) ;
192
+ StorageLive ( _24) ;
193
+ StorageLive ( _16) ;
194
+ StorageLive ( _26) ;
195
+ _14 = copy _11;
196
+ _15 = copy _12;
197
+ switchInt ( const <T as std:: mem:: SizedTypeProperties >:: IS_ZST ) -> [ 0 : bb5, otherwise: bb8] ;
146
198
}
147
199
148
200
bb5 : {
149
- StorageDead(_14);
150
- StorageLive(_16);
151
- _16 = discriminant(_15);
152
- switchInt(move _16) -> [0 : bb6, 1: bb8, otherwise: bb11];
201
+ StorageLive ( _19) ;
202
+ _16 = copy _15 as std:: ptr:: NonNull < T > ( Transmute ) ;
203
+ StorageLive ( _17) ;
204
+ _17 = copy _14 as * mut T ( Transmute ) ;
205
+ StorageLive ( _18) ;
206
+ _18 = copy _16 as * mut T ( Transmute ) ;
207
+ _19 = Eq ( move _17, move _18) ;
208
+ StorageDead ( _18) ;
209
+ StorageDead ( _17) ;
210
+ switchInt ( move _19) -> [ 0 : bb6, otherwise: bb7] ;
153
211
}
154
212
155
213
bb6 : {
156
- StorageDead(_16);
157
- StorageDead(_15);
158
214
StorageDead ( _19) ;
159
- StorageDead(_18);
215
+ StorageLive ( _22) ;
216
+ StorageLive ( _21) ;
217
+ StorageLive ( _20) ;
218
+ _20 = copy _14 as * const T ( Transmute ) ;
219
+ _21 = Offset ( move _20, const 1_usize ) ;
220
+ StorageDead ( _20) ;
221
+ _22 = NonNull :: < T > { pointer : move _21 } ;
160
222
StorageDead ( _21) ;
161
- StorageDead(_13);
162
- drop(_2) -> [return : bb7, unwind unreachable];
223
+ _11 = move _22;
224
+ StorageDead ( _22) ;
225
+ goto -> bb13;
163
226
}
164
227
165
228
bb7 : {
166
- return;
229
+ StorageDead ( _19) ;
230
+ StorageDead ( _26) ;
231
+ StorageDead ( _16) ;
232
+ StorageDead ( _24) ;
233
+ StorageDead ( _23) ;
234
+ StorageDead ( _15) ;
235
+ StorageDead ( _14) ;
236
+ goto -> bb10;
167
237
}
168
238
169
239
bb8: {
170
- _17 = move ((_15 as Some).0 : &T);
171
- StorageDead(_16);
172
- StorageDead(_15);
173
- _18 = copy (_13.1 : usize);
174
- _19 = AddWithOverflow(copy (_13.1 : usize), const 1_usize);
175
- assert(!move (_19.1 : bool), "attempt to compute `{} + {}`, which would overflow", copy (_13.1: usize), const 1_usize) -> [success: bb9, unwind unreachable];
240
+ _23 = copy _15 as usize ( Transmute ) ;
241
+ switchInt ( copy _23) -> [ 0 : bb9, otherwise: bb12] ;
176
242
}
177
243
178
244
bb9 : {
179
- (_13.1 : usize) = move (_19.0: usize);
180
- StorageLive(_20);
181
- _20 = (copy _18, copy _17);
182
- _21 = Option::<(usize, &T)>::Some(move _20);
183
- StorageDead(_20);
184
- StorageDead(_19);
185
- StorageDead(_18);
186
- _22 = copy (((_21 as Some).0 : (usize, &T)).0: usize);
187
- _23 = copy (((_21 as Some).0 : (usize, &T)).1: &T);
188
- StorageLive(_24);
189
- _24 = &_2;
190
- StorageLive(_25);
191
- _25 = (copy _22, copy _23);
192
- _26 = <impl Fn(usize, &T) as Fn<(usize, &T)>>::call(move _24, move _25) -> [return : bb10, unwind unreachable];
245
+ StorageDead ( _26) ;
246
+ StorageDead ( _16) ;
247
+ StorageDead ( _24) ;
248
+ StorageDead ( _23) ;
249
+ StorageDead ( _15) ;
250
+ StorageDead ( _14) ;
251
+ goto -> bb10;
193
252
}
194
253
195
254
bb10 : {
255
+ StorageDead ( _27) ;
256
+ StorageDead ( _30) ;
257
+ StorageDead ( _29) ;
258
+ StorageDead ( _32) ;
259
+ StorageDead ( _11) ;
260
+ StorageDead ( _12) ;
261
+ StorageDead ( _13) ;
262
+ drop ( _2) -> [ return : bb11, unwind unreachable] ;
263
+ }
264
+
265
+ bb11 : {
266
+ return;
267
+ }
268
+
269
+ bb12 : {
270
+ _24 = SubUnchecked ( copy _23, const 1_usize ) ;
271
+ _12 = copy _24 as * const T ( Transmute ) ;
272
+ goto -> bb13;
273
+ }
274
+
275
+ bb13: {
276
+ StorageLive ( _25) ;
277
+ _25 = copy _14 as * const T ( Transmute ) ;
278
+ _26 = & ( * _25) ;
196
279
StorageDead ( _25) ;
280
+ _27 = Option :: < & T > :: Some ( copy _26) ;
281
+ StorageDead ( _26) ;
282
+ StorageDead ( _16) ;
197
283
StorageDead ( _24) ;
198
- StorageDead(_21);
199
- goto -> bb4;
284
+ StorageDead ( _23) ;
285
+ StorageDead ( _15) ;
286
+ StorageDead ( _14) ;
287
+ _28 = move ( ( _27 as Some ) . 0 : & T ) ;
288
+ StorageDead ( _27) ;
289
+ _29 = copy _13;
290
+ _30 = AddWithOverflow ( copy _13, const 1_usize ) ;
291
+ assert ( !move ( _30. 1 : bool ) , "attempt to compute `{} + {}`, which would overflow" , copy _13, const 1_usize ) -> [ success: bb14, unwind unreachable] ;
200
292
}
201
293
202
- bb11 : {
203
- unreachable;
294
+ bb14: {
295
+ _13 = move ( _30. 0 : usize) ;
296
+ StorageLive ( _31) ;
297
+ _31 = ( copy _29, copy _28) ;
298
+ _32 = Option :: < ( usize , & T ) > :: Some ( move _31) ;
299
+ StorageDead ( _31) ;
300
+ StorageDead ( _30) ;
301
+ StorageDead ( _29) ;
302
+ _33 = copy ( ( ( _32 as Some ) . 0 : ( usize, & T ) ) . 0 : usize ) ;
303
+ _34 = copy ( ( ( _32 as Some ) . 0 : ( usize, & T ) ) . 1 : & T ) ;
304
+ StorageLive ( _35) ;
305
+ _35 = & _2;
306
+ StorageLive ( _36) ;
307
+ _36 = ( copy _33, copy _34) ;
308
+ _37 = <impl Fn ( usize , & T ) as Fn < ( usize , & T ) > >:: call ( move _35, move _36) -> [ return : bb15, unwind unreachable] ;
309
+ }
310
+
311
+ bb15 : {
312
+ StorageDead ( _36) ;
313
+ StorageDead ( _35) ;
314
+ StorageDead ( _32) ;
315
+ goto -> bb4;
204
316
}
205
317
}
0 commit comments