miri: add test for overlapping typed_swap

This commit is contained in:
Ralf Jung 2024-12-25 10:45:48 +01:00
parent 6de3a2e3a9
commit 00dfa3ba2d
3 changed files with 29 additions and 1 deletions

View file

@ -0,0 +1,13 @@
#![feature(core_intrinsics)]
#![feature(rustc_attrs)]
use std::intrinsics::typed_swap;
use std::ptr::addr_of_mut;
fn main() {
let mut a = [0_u8; 100];
unsafe {
let a = addr_of_mut!(a);
typed_swap(a, a); //~ERROR: called on overlapping ranges
}
}

View file

@ -0,0 +1,15 @@
error: Undefined Behavior: `copy_nonoverlapping` called on overlapping ranges
--> tests/fail/intrinsics/typed-swap-overlap.rs:LL:CC
|
LL | typed_swap(a, a);
| ^^^^^^^^^^^^^^^^ `copy_nonoverlapping` called on overlapping ranges
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
= note: BACKTRACE:
= note: inside `main` at tests/fail/intrinsics/typed-swap-overlap.rs:LL:CC
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
error: aborting due to 1 previous error