- // MIR for `main` before Inline + // MIR for `main` after Inline fn main() -> () { let mut _0: (); let _1: std::boxed::Box>; let mut _2: std::vec::Vec; scope 1 { debug _x => _1; } + scope 2 (inlined Vec::::new) { + let mut _3: alloc::raw_vec::RawVec; + } + scope 3 (inlined Box::>::new) { + debug x => _2; + let mut _4: usize; + let mut _5: usize; + let mut _6: *mut u8; + let mut _7: *const std::vec::Vec; + scope 4 { + scope 5 (inlined alloc::alloc::exchange_malloc) { + debug size => _4; + debug align => _5; + let _8: std::alloc::Layout; + let mut _9: std::result::Result, std::alloc::AllocError>; + let mut _10: isize; + let mut _12: !; + scope 6 { + debug layout => _8; + let _11: std::ptr::NonNull<[u8]>; + let mut _13: &std::alloc::Global; + scope 8 { + debug ptr => _11; + scope 18 (inlined NonNull::<[u8]>::as_mut_ptr) { + debug self => _11; + let mut _15: std::ptr::NonNull; + scope 19 (inlined NonNull::<[u8]>::as_non_null_ptr) { + debug self => _11; + let mut _16: *mut u8; + let mut _17: *mut [u8]; + scope 20 { + scope 21 (inlined NonNull::<[u8]>::as_ptr) { + debug self => _11; + let mut _18: *const [u8]; + } + scope 22 (inlined ptr::mut_ptr::::as_mut_ptr) { + debug self => _17; + } + scope 23 (inlined NonNull::::new_unchecked) { + debug ptr => _16; + let mut _19: *const u8; + scope 24 { + scope 25 (inlined NonNull::::new_unchecked::runtime::) { + debug ptr => _16; + scope 26 (inlined ptr::mut_ptr::::is_null) { + debug self => _16; + let mut _20: *mut u8; + scope 27 { + scope 28 (inlined ptr::mut_ptr::::is_null::runtime_impl) { + debug ptr => _20; + scope 29 (inlined ptr::mut_ptr::::addr) { + debug self => _20; + scope 30 { + scope 31 (inlined ptr::mut_ptr::::cast::<()>) { + debug self => _20; + } + } + } + } + } + } + } + } + } + } + } + scope 32 (inlined NonNull::::as_ptr) { + debug self => _15; + let mut _21: *const u8; + } + } + } + scope 17 (inlined ::allocate) { + debug self => const _; + debug layout => _8; + } + } + scope 7 { + scope 9 (inlined Layout::from_size_align_unchecked) { + debug size => _4; + debug align => _5; + let mut _14: std::ptr::Alignment; + scope 10 { + scope 11 (inlined std::ptr::Alignment::new_unchecked) { + debug align => _5; + scope 12 { + scope 14 (inlined std::ptr::Alignment::new_unchecked::runtime) { + debug align => _5; + scope 15 (inlined core::num::::is_power_of_two) { + debug self => _5; + scope 16 (inlined core::num::::count_ones) { + debug self => _5; + } + } + } + } + scope 13 { + } + } + } + } + } + } + } + } bb0: { StorageLive(_1); StorageLive(_2); - _2 = Vec::::new() -> bb1; + StorageLive(_3); + _3 = const _; + _2 = Vec:: { buf: move _3, len: const 0_usize }; + StorageDead(_3); + _4 = SizeOf(std::vec::Vec); + _5 = AlignOf(std::vec::Vec); + StorageLive(_8); + StorageLive(_11); + StorageLive(_12); + StorageLive(_13); + StorageLive(_14); + _14 = _5 as std::ptr::Alignment (Transmute); + _8 = Layout { size: _4, align: move _14 }; + StorageDead(_14); + StorageLive(_9); + _13 = const _; + _9 = std::alloc::Global::alloc_impl(_13, _8, const false) -> [return: bb7, unwind: bb3]; } bb1: { - _1 = Box::>::new(move _2) -> [return: bb2, unwind: bb4]; + StorageDead(_1); + return; } - bb2: { - StorageDead(_2); - _0 = const (); - drop(_1) -> [return: bb3, unwind: bb4]; + bb2 (cleanup): { + resume; } - bb3: { - StorageDead(_1); - return; + bb3 (cleanup): { + drop(_2) -> [return: bb2, unwind terminate]; } - bb4 (cleanup): { - resume; + bb4: { + _12 = handle_alloc_error(_8) -> bb3; + } + + bb5: { + unreachable; + } + + bb6: { + _11 = ((_9 as Ok).0: std::ptr::NonNull<[u8]>); + StorageLive(_15); + StorageLive(_16); + StorageLive(_17); + StorageLive(_18); + _18 = (_11.0: *const [u8]); + _17 = move _18 as *mut [u8] (PtrToPtr); + StorageDead(_18); + _16 = _17 as *mut u8 (PtrToPtr); + StorageDead(_17); + StorageLive(_19); + StorageLive(_20); + _19 = _16 as *const u8 (Pointer(MutToConstPointer)); + _15 = NonNull:: { pointer: _19 }; + StorageDead(_20); + StorageDead(_19); + StorageDead(_16); + StorageLive(_21); + _21 = (_15.0: *const u8); + _6 = move _21 as *mut u8 (PtrToPtr); + StorageDead(_21); + StorageDead(_15); + StorageDead(_9); + StorageDead(_13); + StorageDead(_12); + StorageDead(_11); + StorageDead(_8); + _1 = ShallowInitBox(move _6, std::vec::Vec); + _7 = (((_1.0: std::ptr::Unique>).0: std::ptr::NonNull>).0: *const std::vec::Vec); + (*_7) = move _2; + StorageDead(_2); + _0 = const (); + drop(_1) -> [return: bb1, unwind: bb2]; + } + + bb7: { + _10 = discriminant(_9); + switchInt(move _10) -> [0: bb6, 1: bb4, otherwise: bb5]; } }