Skip to content

Commit 7188e5f

Browse files
committed
Reorganize a bit
1 parent 06183c7 commit 7188e5f

11 files changed

+64
-54
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//@ run-fail
2+
//@ compile-flags: -Copt-level=3 -Cdebug-assertions=no -Zub-checks=yes
3+
//@ error-pattern: unsafe precondition(s) violated: ptr::copy_nonoverlapping
4+
//@ ignore-debug
5+
//@ revisions: null_src null_dst misaligned_src misaligned_dst overlapping
6+
7+
use std::ptr;
8+
9+
fn main() {
10+
let src = [0u16; 3];
11+
let mut dst = [0u16; 3];
12+
let src = src.as_ptr();
13+
let dst = dst.as_mut_ptr();
14+
unsafe {
15+
#[cfg(null_src)]
16+
ptr::copy_nonoverlapping(ptr::null(), dst, 1);
17+
#[cfg(null_dst)]
18+
ptr::copy_nonoverlapping(src, ptr::null_mut(), 1);
19+
#[cfg(misaligned_src)]
20+
ptr::copy_nonoverlapping(src.byte_add(1), dst, 1);
21+
#[cfg(misaligned_dst)]
22+
ptr::copy_nonoverlapping(src, dst.byte_add(1), 1);
23+
#[cfg(overlapping)]
24+
ptr::copy_nonoverlapping(dst, dst.add(1), 2);
25+
}
26+
}

tests/ui/precondition-checks/layout-overflow-isize.rs renamed to tests/ui/precondition-checks/layout.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@
22
//@ compile-flags: -Copt-level=3 -Cdebug-assertions=no -Zub-checks=yes
33
//@ error-pattern: unsafe precondition(s) violated: Layout::from_size_align_unchecked
44
//@ ignore-debug
5+
//@ revisions: toolarge badalign
6+
//@[toolarge] compile-flags: --cfg toolarge
7+
//@[badalign] compile-flags: --cfg badalign
58

69
fn main() {
710
unsafe {
11+
#[cfg(toolarge)]
812
std::alloc::Layout::from_size_align_unchecked(isize::MAX as usize, 2);
13+
#[cfg(badalign)]
14+
std::alloc::Layout::from_size_align_unchecked(1, 3);
915
}
1016
}

tests/ui/precondition-checks/misaligned-slice.rs

Lines changed: 0 additions & 10 deletions
This file was deleted.

tests/ui/precondition-checks/nonoverlapping-misaligned.rs

Lines changed: 0 additions & 14 deletions
This file was deleted.

tests/ui/precondition-checks/nonoverlapping-null.rs

Lines changed: 0 additions & 8 deletions
This file was deleted.

tests/ui/precondition-checks/nonoverlapping-overlapping.rs

Lines changed: 0 additions & 12 deletions
This file was deleted.

tests/ui/precondition-checks/null-slice.rs

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//@ run-fail
2+
//@ compile-flags: -Copt-level=3 -Cdebug-assertions=no -Zub-checks=yes
3+
//@ error-pattern: unsafe precondition(s) violated: slice::from_raw_parts_mut
4+
//@ ignore-debug
5+
//@ revisions: null misaligned toolarge
6+
7+
fn main() {
8+
unsafe {
9+
#[cfg(null)]
10+
let _s: &mut [u8] = std::slice::from_raw_parts_mut(std::ptr::null_mut(), 0);
11+
#[cfg(misaligned)]
12+
let _s: &mut [u16] = std::slice::from_raw_parts_mut(1usize as *mut u16, 0);
13+
#[cfg(toolarge)]
14+
let _s: &mut [u16] = std::slice::from_raw_parts_mut(2usize as *mut u16, isize::MAX as usize);
15+
}
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//@ run-fail
2+
//@ compile-flags: -Copt-level=3 -Cdebug-assertions=no -Zub-checks=yes
3+
//@ error-pattern: unsafe precondition(s) violated: slice::from_raw_parts
4+
//@ ignore-debug
5+
//@ revisions: null misaligned toolarge
6+
7+
fn main() {
8+
unsafe {
9+
#[cfg(null)]
10+
let _s: &[u8] = std::slice::from_raw_parts(std::ptr::null(), 0);
11+
#[cfg(misaligned)]
12+
let _s: &[u16] = std::slice::from_raw_parts(1usize as *const u16, 0);
13+
#[cfg(toolarge)]
14+
let _s: &[u16] = std::slice::from_raw_parts(2usize as *const u16, isize::MAX as usize);
15+
}
16+
}

0 commit comments

Comments
 (0)