| - // MIR for `slice_const_length` before GVN |
| + // MIR for `slice_const_length` after GVN |
| |
| fn slice_const_length(_1: &[i32]) -> *const [i32] { |
| debug x => _1; |
| let mut _0: *const [i32]; |
| let _2: *const i32; |
| let mut _3: &[i32]; |
| let mut _5: *const i32; |
| let mut _6: usize; |
| scope 1 { |
| debug ptr => _2; |
| let _4: usize; |
| scope 2 { |
| debug len => _4; |
| } |
| } |
| |
| bb0: { |
| - StorageLive(_2); |
| + nop; |
| StorageLive(_3); |
| _3 = &(*_1); |
| _2 = core::slice::<impl [i32]>::as_ptr(move _3) -> [return: bb1, unwind continue]; |
| } |
| |
| bb1: { |
| StorageDead(_3); |
| - StorageLive(_4); |
| + nop; |
| _4 = const 123_usize; |
| StorageLive(_5); |
| _5 = copy _2; |
| StorageLive(_6); |
| - _6 = copy _4; |
| - _0 = *const [i32] from (move _5, move _6); |
| + _6 = const 123_usize; |
| + _0 = *const [i32] from (copy _2, const 123_usize); |
| StorageDead(_6); |
| StorageDead(_5); |
| - StorageDead(_4); |
| - StorageDead(_2); |
| + nop; |
| + nop; |
| return; |
| } |
| } |
| |