diff options
| author | Scott McMurray <scottmcm@users.noreply.github.com> | 2024-04-11 17:16:28 -0700 |
|---|---|---|
| committer | Scott McMurray <scottmcm@users.noreply.github.com> | 2024-04-21 11:08:36 -0700 |
| commit | 5800dc1faa391d878077cd79ac4820055ca6c0e4 (patch) | |
| tree | b539f4a0f266119911fc17d1474086b0fe0a5219 | |
| parent | aa31bad26b6bbf71c2072465ddb0dfe807c2b7d5 (diff) | |
| download | rust-5800dc1faa391d878077cd79ac4820055ca6c0e4.tar.gz rust-5800dc1faa391d878077cd79ac4820055ca6c0e4.zip | |
New slice indexing pre-codegen MIR test
3 files changed, 47 insertions, 0 deletions
diff --git a/tests/mir-opt/pre-codegen/slice_index.rs b/tests/mir-opt/pre-codegen/slice_index.rs index c9dd72d8be2..04bbbff57b3 100644 --- a/tests/mir-opt/pre-codegen/slice_index.rs +++ b/tests/mir-opt/pre-codegen/slice_index.rs @@ -3,6 +3,7 @@ // EMIT_MIR_FOR_EACH_PANIC_STRATEGY #![crate_type = "lib"] +#![feature(slice_ptr_get)] use std::ops::Range; @@ -25,3 +26,11 @@ pub fn slice_index_range(slice: &[u32], index: Range<usize>) -> &[u32] { pub unsafe fn slice_get_unchecked_mut_range(slice: &mut [u32], index: Range<usize>) -> &mut [u32] { slice.get_unchecked_mut(index) } + +// EMIT_MIR slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.mir +pub unsafe fn slice_ptr_get_unchecked_range( + slice: *const [u32], + index: Range<usize>, +) -> *const [u32] { + slice.get_unchecked(index) +} diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-abort.mir new file mode 100644 index 00000000000..79c6a05b48d --- /dev/null +++ b/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-abort.mir @@ -0,0 +1,19 @@ +// MIR for `slice_ptr_get_unchecked_range` after PreCodegen + +fn slice_ptr_get_unchecked_range(_1: *const [u32], _2: std::ops::Range<usize>) -> *const [u32] { + debug slice => _1; + debug index => _2; + let mut _0: *const [u32]; + scope 1 (inlined std::ptr::const_ptr::<impl *const [u32]>::get_unchecked::<std::ops::Range<usize>>) { + debug self => _1; + debug index => _2; + } + + bb0: { + _0 = <std::ops::Range<usize> as SliceIndex<[u32]>>::get_unchecked(move _2, move _1) -> [return: bb1, unwind unreachable]; + } + + bb1: { + return; + } +} diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-unwind.mir new file mode 100644 index 00000000000..5231f858d04 --- /dev/null +++ b/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-unwind.mir @@ -0,0 +1,19 @@ +// MIR for `slice_ptr_get_unchecked_range` after PreCodegen + +fn slice_ptr_get_unchecked_range(_1: *const [u32], _2: std::ops::Range<usize>) -> *const [u32] { + debug slice => _1; + debug index => _2; + let mut _0: *const [u32]; + scope 1 (inlined std::ptr::const_ptr::<impl *const [u32]>::get_unchecked::<std::ops::Range<usize>>) { + debug self => _1; + debug index => _2; + } + + bb0: { + _0 = <std::ops::Range<usize> as SliceIndex<[u32]>>::get_unchecked(move _2, move _1) -> [return: bb1, unwind continue]; + } + + bb1: { + return; + } +} |
