// Make sure we find these even with many checks disabled.
// compile-flags: -Zmiri-disable-alignment-check -Zmiri-disable-stacked-borrows -Zmiri-disable-validation

// Test what happens when we overwrite parts of a pointer.
// Also see <https://github.com/rust-lang/miri/issues/2181>.

fn main() {
    let mut p = &42;
    unsafe {
        let ptr: *mut _ = &mut p;
        *(ptr as *mut u8) = 123; // if we ever support 8 bit pointers, this is gonna cause
        // "attempted to interpret some raw bytes as a pointer address" instead of
        // "attempted to read undefined bytes"
    }
    let x = *p; //~ ERROR this operation requires initialized memory
    panic!("this should never print: {}", x);
}