- // MIR for `main` before Inline + // MIR for `main` after Inline fn main() -> () { let mut _0: (); let _1: (); + let mut _2: fn() {g}; + let mut _5: (); + scope 1 (inlined f::) { + debug g => _2; + let mut _3: &fn() {g}; + let _4: (); + scope 2 (inlined >::call - shim(fn() {g})) { + scope 3 (inlined g) { + scope 4 (inlined f::) { + debug g => main; + let _6: (); + scope 5 (inlined >::call - shim(fn() {main})) { + } + } + } + } + } bb0: { StorageLive(_1); - _1 = f::(g) -> [return: bb1, unwind continue]; + StorageLive(_2); + _2 = g; + StorageLive(_4); + StorageLive(_3); + _3 = &_2; + StorageLive(_5); + _5 = const (); + StorageLive(_6); + _6 = main() -> [return: bb4, unwind: bb2]; } bb1: { + StorageDead(_4); + StorageDead(_2); StorageDead(_1); _0 = const (); return; + } + + bb2 (cleanup): { + drop(_2) -> [return: bb3, unwind terminate]; + } + + bb3 (cleanup): { + resume; + } + + bb4: { + StorageDead(_6); + StorageDead(_5); + StorageDead(_3); + drop(_2) -> [return: bb1, unwind continue]; } }