]> git.lizzy.rs Git - rust.git/blobdiff - tests/compile-fail/intptrcast_alignment_check.rs
Auto merge of #1308 - RalfJung:miri, r=RalfJung
[rust.git] / tests / compile-fail / intptrcast_alignment_check.rs
index 4e12a8a9e25e18ee872c5bd9c99aaf7609069ac8..1a8df5eacede810bc6b4871c527e6427c0b989ad 100644 (file)
@@ -1,6 +1,3 @@
-// Validation makes this fail in the wrong place
-// compile-flags: -Zmiri-disable-validation
-
 // Even with intptrcast and without validation, we want to be *sure* to catch bugs
 // that arise from pointers being insufficiently aligned. The only way to achieve
 // that is not not let programs exploit integer information for alignment, so here
@@ -8,11 +5,8 @@
 fn main() {
     let x = &mut [0u8; 3];
     let base_addr = x as *mut _ as usize;
-    let u16_ref = unsafe { if base_addr % 2 == 0 {
-        &mut *(base_addr as *mut u16)
-    } else {
-        &mut *((base_addr+1) as *mut u16)
-    } };
-    *u16_ref = 2; //~ ERROR tried to access memory with alignment 1, but alignment 2 is required
+    let base_addr_aligned = if base_addr % 2 == 0 { base_addr } else { base_addr+1 };
+    let u16_ptr = base_addr_aligned as *mut u16;
+    unsafe { *u16_ptr = 2; } //~ ERROR memory with alignment 1, but alignment 2 is required
     println!("{:?}", x);
 }