// This should fail even without SB //@compile-flags: -Zmiri-disable-stacked-borrows -Cdebug-assertions=no #![allow(dead_code, unused_variables)] use std::{mem, ptr}; #[repr(packed)] struct Foo { x: i32, y: i32, } unsafe fn raw_to_ref<'a, T>(x: *const T) -> &'a T { mem::transmute(x) //~ERROR: required 4 byte alignment } fn main() { // Try many times as this might work by chance. for _ in 0..20 { let foo = Foo { x: 42, y: 99 }; let p: &i32 = unsafe { raw_to_ref(ptr::addr_of!(foo.x)) }; let i = *p; } }