diff options
| author | Ralf Jung <post@ralfj.de> | 2023-08-03 14:14:14 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2023-08-03 14:15:14 +0200 |
| commit | 3c39dc2cba7434e88e580274d20e5d4ae0f8ab1c (patch) | |
| tree | f88bc3aedfeab59c68895de0174e430a3c4e8a5f | |
| parent | 460e92b6a9108ae3a8d020022d8dac2c73ba1904 (diff) | |
| download | rust-3c39dc2cba7434e88e580274d20e5d4ae0f8ab1c.tar.gz rust-3c39dc2cba7434e88e580274d20e5d4ae0f8ab1c.zip | |
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(); } |
