diff options
| author | bors <bors@rust-lang.org> | 2023-08-03 12:15:39 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-08-03 12:15:39 +0000 |
| commit | b8cfa7633acf4c29be32d09484c7c746c859bbef (patch) | |
| tree | f88bc3aedfeab59c68895de0174e430a3c4e8a5f | |
| parent | 460e92b6a9108ae3a8d020022d8dac2c73ba1904 (diff) | |
| parent | 3c39dc2cba7434e88e580274d20e5d4ae0f8ab1c (diff) | |
| download | rust-b8cfa7633acf4c29be32d09484c7c746c859bbef.tar.gz rust-b8cfa7633acf4c29be32d09484c7c746c859bbef.zip | |
Auto merge of #3010 - RalfJung:assign_overlapping, r=RalfJung
add test checking that overlapping assignments work
| -rw-r--r-- | src/tools/miri/tests/pass/ptr_raw.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/tools/miri/tests/pass/ptr_raw.rs b/src/tools/miri/tests/pass/ptr_raw.rs index 3ba0fba9a94..2f184358907 100644 --- a/src/tools/miri/tests/pass/ptr_raw.rs +++ b/src/tools/miri/tests/pass/ptr_raw.rs @@ -20,6 +20,15 @@ fn basic_raw() { assert_eq!(*x, 23); } +fn assign_overlapping() { + // Test an assignment where LHS and RHS alias. + // In Mir, that's UB (see `fail/overlapping_assignment.rs`), but in surface Rust this is allowed. + let mut mem = [0u32; 4]; + let ptr = &mut mem as *mut [u32; 4]; + unsafe { *ptr = *ptr }; +} + fn main() { basic_raw(); + assign_overlapping(); } |
