- // MIR for `manual_slice_mut_len` before GVN + // MIR for `manual_slice_mut_len` after GVN fn manual_slice_mut_len(_1: &mut [i32]) -> usize { debug x => _1; let mut _0: usize; let _2: *mut [i32]; let mut _4: *mut [i32]; let mut _5: *const [i32]; scope 1 { debug x => _2; let _3: *const [i32]; scope 2 { debug x => _3; } } bb0: { - StorageLive(_2); + nop; _2 = &raw mut (*_1); - StorageLive(_3); + nop; StorageLive(_4); _4 = _2; - _3 = move _4 as *const [i32] (PtrToPtr); + _3 = _2 as *const [i32] (PtrToPtr); StorageDead(_4); StorageLive(_5); _5 = _3; - _0 = PtrMetadata(move _5); + _0 = PtrMetadata(_1); StorageDead(_5); - StorageDead(_3); - StorageDead(_2); + nop; + nop; return; } }