diff options
| author | Ben Kimock <kimockb@gmail.com> | 2022-10-17 22:17:07 -0400 |
|---|---|---|
| committer | Ben Kimock <kimockb@gmail.com> | 2022-10-19 10:45:35 -0400 |
| commit | e7faf046c0aca0438d948461b8a39046281248ea (patch) | |
| tree | fe6326133e82b4835bbfdda2a6cbe8ccd734592d /src/tools/miri/tests/pass | |
| parent | 1c294d1de2ce2d884191451064bda46952cfb87b (diff) | |
| download | rust-e7faf046c0aca0438d948461b8a39046281248ea.tar.gz rust-e7faf046c0aca0438d948461b8a39046281248ea.zip | |
Never start the Stack::retain loop at offset 0 so that the left element is always inbounds
Diffstat (limited to 'src/tools/miri/tests/pass')
| -rw-r--r-- | src/tools/miri/tests/pass/stacked-borrows/unknown-bottom-gc.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/tools/miri/tests/pass/stacked-borrows/unknown-bottom-gc.rs b/src/tools/miri/tests/pass/stacked-borrows/unknown-bottom-gc.rs new file mode 100644 index 00000000000..e62ee528686 --- /dev/null +++ b/src/tools/miri/tests/pass/stacked-borrows/unknown-bottom-gc.rs @@ -0,0 +1,21 @@ +//@compile-flags: -Zmiri-permissive-provenance +#![feature(strict_provenance)] + +use std::ptr; + +fn main() { + let mut v = 1u8; + let ptr = &mut v as *mut u8; + + // Expose the allocation and use the exposed pointer, creating an unknown bottom + unsafe { + let p: *mut u8 = ptr::from_exposed_addr::<u8>(ptr.expose_addr()) as *mut u8; + *p = 1; + } + + // Pile on a lot of SharedReadOnly at the top of the stack + let r = &v; + for _ in 0..1024 { + let _x = &*r; + } +} |
