about summary refs log tree commit diff
path: root/tests/ui/precondition-checks/write_volatile.rs
diff options
context:
space:
mode:
authorBen Kimock <kimockb@gmail.com>2024-10-07 19:34:25 -0400
committerBen Kimock <kimockb@gmail.com>2024-10-09 19:34:27 -0400
commit84dacc18829e24ec5d61087a233de68ef57dfabc (patch)
treedcafff34c26232cd7c2fddb27977e9060e221f31 /tests/ui/precondition-checks/write_volatile.rs
parent0c41c3414c0e89ccb19310a4ec423ac83a48f039 (diff)
downloadrust-84dacc18829e24ec5d61087a233de68ef57dfabc.tar.gz
rust-84dacc18829e24ec5d61087a233de68ef57dfabc.zip
Add more precondition check tests
Diffstat (limited to 'tests/ui/precondition-checks/write_volatile.rs')
-rw-r--r--tests/ui/precondition-checks/write_volatile.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/ui/precondition-checks/write_volatile.rs b/tests/ui/precondition-checks/write_volatile.rs
new file mode 100644
index 00000000000..ac0b89b5ecf
--- /dev/null
+++ b/tests/ui/precondition-checks/write_volatile.rs
@@ -0,0 +1,17 @@
+//@ run-fail
+//@ compile-flags: -Copt-level=3 -Cdebug-assertions=no -Zub-checks=yes
+//@ error-pattern: unsafe precondition(s) violated: ptr::write_volatile requires
+//@ revisions: null misaligned
+
+use std::ptr;
+
+fn main() {
+    let mut dst = [0u16; 2];
+    let mut dst = dst.as_mut_ptr();
+    unsafe {
+        #[cfg(null)]
+        ptr::write_volatile(ptr::null_mut::<u8>(), 1u8);
+        #[cfg(misaligned)]
+        ptr::write_volatile(dst.byte_add(1), 1u16);
+    }
+}