mirsa 0.2.0

rust mir static analysis
#![allow(dead_code, unused_variables, unused_mut)]

// Inspired by:
// - hsivonen.encoding_rs/src/simd_funcs.rs/load16_unaligned/18
//
// # Safety
// `ptr` must be valid for reading 16 bytes.

use std::mem::MaybeUninit;
use std::ptr;

fn main() {
    let bad = [0u8; 8];
    unsafe {
        let mut simd = MaybeUninit::<[u8; 16]>::uninit();
        ptr::copy_nonoverlapping(bad.as_ptr(), simd.as_mut_ptr() as *mut u8, 16);
        let _bad = simd.assume_init();
    }

    let good = [0u8; 16];
    unsafe {
        let mut simd = MaybeUninit::<[u8; 16]>::uninit();
        ptr::copy_nonoverlapping(good.as_ptr(), simd.as_mut_ptr() as *mut u8, 16);
        let _good = simd.assume_init();
    }
}