blob: b9d29d775ab84fb6e319827a4eb759bc01bcdbec [file] [log] [blame] [edit]
// 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;
}
}