diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-04-12 17:04:32 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-12 17:04:32 +0200 |
| commit | bb037e6fa776f9c8e28e4f0668adeb2824c415f7 (patch) | |
| tree | cab7a0d458f1a610f1ffed45dbc1d521bff01053 /tests | |
| parent | 2118667ffa35e4e5dd1c31fd5d8011d3bf6bd5ab (diff) | |
| parent | cecb901e683cdc1a2ffbb1e331ba4f262e2215c0 (diff) | |
| download | rust-bb037e6fa776f9c8e28e4f0668adeb2824c415f7.tar.gz rust-bb037e6fa776f9c8e28e4f0668adeb2824c415f7.zip | |
Rollup merge of #110190 - cbeuw:mir-offset, r=oli-obk
Custom MIR: Support `BinOp::Offset` Since offset doesn't have an infix operator, a new function `Offset` is added which is lowered to `Rvalue::BinaryOp(BinOp::Offset, ..)` r? ```@oli-obk``` or ```@tmiasko``` or ```@JakobDegen```
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir | 10 | ||||
| -rw-r--r-- | tests/mir-opt/building/custom/references.rs | 11 |
2 files changed, 21 insertions, 0 deletions
diff --git a/tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir b/tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir new file mode 100644 index 00000000000..f614aef4029 --- /dev/null +++ b/tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir @@ -0,0 +1,10 @@ +// MIR for `raw_pointer_offset` after built + +fn raw_pointer_offset(_1: *const i32) -> *const i32 { + let mut _0: *const i32; // return place in scope 0 at $DIR/references.rs:+0:45: +0:55 + + bb0: { + _0 = Offset(_1, const 1_isize); // scope 0 at $DIR/references.rs:+2:9: +2:33 + return; // scope 0 at $DIR/references.rs:+3:9: +3:17 + } +} diff --git a/tests/mir-opt/building/custom/references.rs b/tests/mir-opt/building/custom/references.rs index a1c896de04c..f87f6664c7a 100644 --- a/tests/mir-opt/building/custom/references.rs +++ b/tests/mir-opt/building/custom/references.rs @@ -45,11 +45,22 @@ pub fn raw_pointer(x: *const i32) -> *const i32 { }) } +// EMIT_MIR references.raw_pointer_offset.built.after.mir +#[custom_mir(dialect = "built")] +pub fn raw_pointer_offset(x: *const i32) -> *const i32 { + mir!({ + RET = Offset(x, 1_isize); + Return() + }) +} + fn main() { let mut x = 5; + let arr = [1, 2]; assert_eq!(*mut_ref(&mut x), 5); assert_eq!(*immut_ref(&x), 5); unsafe { assert_eq!(*raw_pointer(addr_of!(x)), 5); + assert_eq!(*raw_pointer_offset(addr_of!(arr[0])), 2); } } |
