mirsa 0.2.0

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

use std::ptr::NonNull;

fn main() {
    let mut value0 = 1u8;
    let mut value1 = 2u8;
    let mut value2 = 3u8;

    let n0 = std::ptr::null_mut::<u8>();
    let n1 = std::ptr::null_mut::<u8>();
    let p0 = &mut value0 as *mut u8;
    let p1 = &mut value1 as *mut u8;
    let p2 = &mut value2 as *mut u8;

    let a = [n0, p0, n1];
    let b = &a[0];
    let bb = &&b;

    let mut c = p2;
    c = ***bb;
    c = a[1];
    let from_tail = &a[2];
    c = *from_tail;

    let mut d = (a, c);
    d.1 = d.0[1];
    let d1_ref = &d.1;
    let mut saved_nonnull = *d1_ref;
    d.1 = *from_tail;

    let e = &&d.0[1];
    let mut f = **e;
    f = d.1;

    let mut nested = ((d.0, d.1), [f, saved_nonnull, p1]);
    let from_nested_null = &&nested.0 .0[2];
    let mut h = **from_nested_null;
    h = nested.1[1];
    nested.1[1] = h;
    nested.1[2] = **e;
    nested.0 .1 = *from_tail;

    let q_ref = &&nested.1[0];
    let q = **q_ref;

    let mut slots = [p2, p0, p1];
    let slot0 = &mut slots[0];
    *slot0 = q;

    let precise = ((n0, p0), (n1, p1));
    let precise_ref = &&precise.1 .0;
    let precise_null = **precise_ref;

    let _bad = unsafe { NonNull::new_unchecked(precise_null) };
}