| - // MIR for `array_len_raw` before GVN | |
| + // MIR for `array_len_raw` after GVN | |
| fn array_len_raw(_1: [u8; N]) -> usize { | |
| debug arr => _1; | |
| let mut _0: usize; | |
| let _2: &[u8]; | |
| let mut _3: &[u8; N]; | |
| let _4: &[u8; N]; | |
| let mut _6: &[u8]; | |
| let _7: &[u8]; | |
| scope 1 { | |
| debug arr => _2; | |
| let _5: *const [u8]; | |
| scope 2 { | |
| debug arr => _5; | |
| } | |
| } | |
| bb0: { | |
| StorageLive(_2); | |
| StorageLive(_3); | |
| StorageLive(_4); | |
| _4 = &_1; | |
| _3 = &(*_4); | |
| _2 = move _3 as &[u8] (PointerCoercion(Unsize, Implicit)); | |
| StorageDead(_3); | |
| StorageDead(_4); | |
| StorageLive(_5); | |
| _5 = &raw const (*_2); | |
| StorageLive(_6); | |
| StorageLive(_7); | |
| _7 = &(*_5); | |
| _6 = &(*_7); | |
| - _0 = PtrMetadata(move _6); | |
| + _0 = const N; | |
| goto -> bb1; | |
| } | |
| bb1: { | |
| StorageDead(_6); | |
| StorageDead(_5); | |
| StorageDead(_2); | |
| StorageDead(_7); | |
| return; | |
| } | |
| } | |