- // 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); + nop; 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); + nop; StorageDead(_7); return; } }