diff --git a/bench-cargo-miri/slice-get-unchecked/Cargo.lock b/bench-cargo-miri/slice-get-unchecked/Cargo.lock new file mode 100644 index 00000000000..a375afaed30 --- /dev/null +++ b/bench-cargo-miri/slice-get-unchecked/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "slice-get-unchecked" +version = "0.1.0" diff --git a/bench-cargo-miri/slice-get-unchecked/Cargo.toml b/bench-cargo-miri/slice-get-unchecked/Cargo.toml new file mode 100644 index 00000000000..1ac2276866f --- /dev/null +++ b/bench-cargo-miri/slice-get-unchecked/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "slice-get-unchecked" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/bench-cargo-miri/slice-get-unchecked/src/main.rs b/bench-cargo-miri/slice-get-unchecked/src/main.rs new file mode 100644 index 00000000000..a72083bd9de --- /dev/null +++ b/bench-cargo-miri/slice-get-unchecked/src/main.rs @@ -0,0 +1,12 @@ +//! This is a stripped-down version of the code pattern that causes runtime blowup when printing +//! backtraces in a failed test under cargo miri test with -Zmiri-disable-isolation. +//! See https://github.com/rust-lang/miri/issues/2273 + +fn main() { + let x = vec![0u8; 4096]; + let mut i = 0; + while i < x.len() { + let _element = unsafe { *x.get_unchecked(i) }; + i += 1; + } +}