Skip to content

Commit f0d5854

Browse files
committed
miri: add test for overlapping typed_swap
1 parent 0c1f85b commit f0d5854

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#![feature(core_intrinsics)]
2+
#![feature(rustc_attrs)]
3+
4+
use std::intrinsics::typed_swap;
5+
use std::ptr::addr_of_mut;
6+
7+
fn main() {
8+
let mut a = [0_u8; 100];
9+
unsafe {
10+
let a = addr_of_mut!(a);
11+
typed_swap(a, a); //~ERROR: called on overlapping ranges
12+
}
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
error: Undefined Behavior: `copy_nonoverlapping` called on overlapping ranges
2+
--> tests/fail/intrinsics/typed-swap-overlap.rs:LL:CC
3+
|
4+
LL | typed_swap(a, a);
5+
| ^^^^^^^^^^^^^^^^ `copy_nonoverlapping` called on overlapping ranges
6+
|
7+
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
8+
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
9+
= note: BACKTRACE:
10+
= note: inside `main` at tests/fail/intrinsics/typed-swap-overlap.rs:LL:CC
11+
12+
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
13+
14+
error: aborting due to 1 previous error
15+

0 commit comments

Comments
 (0)