rust/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.diff
Scott McMurray 05a665f21a Lower intrinsics::offset to mir::BinOp::Offset
They're semantically the same, so this means the backends don't need to handle the intrinsic and means fewer MIR basic blocks in pointer arithmetic code.
2023-04-25 19:23:45 -07:00

31 lines
2.0 KiB
Diff

- // MIR for `ptr_offset` before LowerIntrinsics
+ // MIR for `ptr_offset` after LowerIntrinsics
fn ptr_offset(_1: *const i32, _2: isize) -> *const i32 {
debug p => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:26: +0:27
debug d => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:41: +0:42
let mut _0: *const i32; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:54: +0:64
let mut _3: *const i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31
let mut _4: isize; // in scope 0 at $DIR/lower_intrinsics.rs:+1:33: +1:34
bb0: {
StorageLive(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31
_3 = _1; // scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31
StorageLive(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:33: +1:34
_4 = _2; // scope 0 at $DIR/lower_intrinsics.rs:+1:33: +1:34
- _0 = offset::<i32>(move _3, move _4) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:35
- // mir::Constant
- // + span: $DIR/lower_intrinsics.rs:140:5: 140:29
- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const i32, isize) -> *const i32 {offset::<i32>}, val: Value(<ZST>) }
+ _0 = Offset(move _3, move _4); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:35
+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:35
}
bb1: {
StorageDead(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:34: +1:35
StorageDead(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:34: +1:35
return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2
}
}