- // MIR for `main` before DataflowConstProp + // MIR for `main` after DataflowConstProp fn main() -> () { let mut _0: (); let _1: A; let mut _2: std::boxed::Box<[bool]>; scope 1 { debug a => _1; } scope 2 (inlined as Default>::default) { let _3: std::ptr::Unique<[bool]>; let mut _4: std::ptr::Unique<[bool; 0]>; scope 3 { } scope 4 (inlined Unique::<[bool; 0]>::dangling) { let mut _5: std::ptr::NonNull<[bool; 0]>; scope 5 (inlined NonNull::<[bool; 0]>::dangling) { let _6: *mut [bool; 0]; scope 6 { scope 10 (inlined NonNull::<[bool; 0]>::new_unchecked) { let mut _8: bool; let _9: (); let mut _10: *mut (); let mut _11: *const [bool; 0]; scope 11 (inlined core::ub_checks::check_language_ub) { scope 12 (inlined core::ub_checks::check_language_ub::runtime) { } } } } scope 7 (inlined dangling_mut::<[bool; 0]>) { let mut _7: usize; scope 8 (inlined align_of::<[bool; 0]>) { } scope 9 (inlined without_provenance_mut::<[bool; 0]>) { } } } } } bb0: { StorageLive(_1); StorageLive(_2); StorageLive(_3); StorageLive(_9); StorageLive(_4); StorageLive(_5); StorageLive(_6); StorageLive(_7); _7 = const 1_usize; _6 = const {0x1 as *mut [bool; 0]}; StorageDead(_7); StorageLive(_11); StorageLive(_8); _8 = UbChecks(); switchInt(move _8) -> [0: bb5, otherwise: bb3]; } bb1: { StorageDead(_1); return; } bb2 (cleanup): { resume; } bb3: { StorageLive(_10); _10 = const {0x1 as *mut ()}; _9 = NonNull::::new_unchecked::precondition_check(const {0x1 as *mut ()}) -> [return: bb4, unwind unreachable]; } bb4: { StorageDead(_10); goto -> bb5; } bb5: { StorageDead(_8); _11 = const {0x1 as *const [bool; 0]}; _5 = const NonNull::<[bool; 0]> {{ pointer: {0x1 as *const [bool; 0]} }}; StorageDead(_11); StorageDead(_6); _4 = const Unique::<[bool; 0]> {{ pointer: NonNull::<[bool; 0]> {{ pointer: {0x1 as *const [bool; 0]} }}, _marker: PhantomData::<[bool; 0]> }}; StorageDead(_5); _3 = const Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }}; StorageDead(_4); _2 = const Box::<[bool]>(Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }}, std::alloc::Global); StorageDead(_9); StorageDead(_3); _1 = const A {{ foo: Box::<[bool]>(Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC2, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }}, std::alloc::Global) }}; StorageDead(_2); _0 = const (); drop(_1) -> [return: bb1, unwind: bb2]; } } ALLOC2 (size: 8, align: 4) { 01 00 00 00 00 00 00 00 │ ........ } ALLOC1 (size: 8, align: 4) { 01 00 00 00 00 00 00 00 │ ........ } ALLOC0 (size: 8, align: 4) { 01 00 00 00 00 00 00 00 │ ........ }