- // MIR for `g` before Inline + // MIR for `g` after Inline fn g() -> () { let mut _0: (); let _1: (); + let mut _2: fn() {main}; + let mut _5: (); + scope 1 (inlined f::) { + debug g => _2; + let mut _3: &fn() {main}; + let _4: (); + scope 2 (inlined >::call - shim(fn() {main})) { + } + } bb0: { StorageLive(_1); - _1 = f::(main) -> [return: bb1, unwind continue]; + StorageLive(_2); + _2 = main; + StorageLive(_4); + StorageLive(_3); + _3 = &_2; + StorageLive(_5); + _5 = const (); + _4 = move (*_3)() -> [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(_5); + StorageDead(_3); + drop(_2) -> [return: bb1, unwind continue]; } }