- // MIR for `redundant` before InstCombine + // MIR for `redundant` after InstCombine fn redundant(_1: *const &u8) -> *const &u8 { debug x => _1; // in scope 0 at $DIR/casts.rs:+0:30: +0:31 let mut _0: *const &u8; // return place in scope 0 at $DIR/casts.rs:+0:51: +0:64 let mut _2: *const &u8; // in scope 0 at $DIR/casts.rs:+1:5: +1:55 let mut _3: *const &u8; // in scope 0 at $DIR/casts.rs:+1:36: +1:37 scope 1 (inlined generic_cast::<&u8, &u8>) { // at $DIR/casts.rs:6:5: 6:38 debug x => _3; // in scope 1 at $DIR/casts.rs:10:23: 10:24 } bb0: { StorageLive(_2); // scope 0 at $DIR/casts.rs:+1:5: +1:55 StorageLive(_3); // scope 0 at $DIR/casts.rs:+1:36: +1:37 _3 = _1; // scope 0 at $DIR/casts.rs:+1:36: +1:37 - _2 = _3 as *const &u8 (PtrToPtr); // scope 1 at $DIR/casts.rs:11:5: 11:18 + _2 = _3; // scope 1 at $DIR/casts.rs:11:5: 11:18 StorageDead(_3); // scope 0 at $DIR/casts.rs:+1:37: +1:38 _0 = _2; // scope 0 at $DIR/casts.rs:+1:5: +1:55 StorageDead(_2); // scope 0 at $DIR/casts.rs:+2:1: +2:2 return; // scope 0 at $DIR/casts.rs:+2:2: +2:2 } }