about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBen Kimock <kimockb@gmail.com>2023-05-27 14:52:14 -0400
committerBen Kimock <kimockb@gmail.com>2023-05-27 14:52:14 -0400
commitde4dddf155ca599ca4c888bb4ee29989394c24d6 (patch)
treed8736b0ba2b244622169848319af384a55b5ebe8
parent1a5f8bce74ee432f7cc3aa131bc3d6920e06de10 (diff)
downloadrust-de4dddf155ca599ca4c888bb4ee29989394c24d6.tar.gz
rust-de4dddf155ca599ca4c888bb4ee29989394c24d6.zip
Add a test for misaligned pointer derefs inside addr_of!
-rw-r--r--tests/ui/mir/addrof_alignment.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/ui/mir/addrof_alignment.rs b/tests/ui/mir/addrof_alignment.rs
new file mode 100644
index 00000000000..892638bfb92
--- /dev/null
+++ b/tests/ui/mir/addrof_alignment.rs
@@ -0,0 +1,15 @@
+// run-pass
+// ignore-wasm32-bare: No panic messages
+// compile-flags: -C debug-assertions
+
+struct Misalignment {
+    a: u32,
+}
+
+fn main() {
+    let items: [Misalignment; 2] = [Misalignment { a: 0 }, Misalignment { a: 1 }];
+    unsafe {
+        let ptr: *const Misalignment = items.as_ptr().cast::<u8>().add(1).cast::<Misalignment>();
+        let _ptr = core::ptr::addr_of!((*ptr).a);
+    }
+}