- // MIR for `call` before Inline + // MIR for `call` after Inline fn call(_1: Box) -> () { debug x => _1; let mut _0: (); let _2: (); let mut _3: &std::boxed::Box; let mut _4: (i32,); + scope 1 (inlined as Fn<(i32,)>>::call) { + let mut _5: &dyn std::ops::Fn(i32); + let mut _6: std::boxed::Box; + let mut _7: *const dyn std::ops::Fn(i32); + } bb0: { StorageLive(_2); StorageLive(_3); _3 = &_1; StorageLive(_4); _4 = (const 1_i32,); - _2 = as Fn<(i32,)>>::call(move _3, move _4) -> [return: bb1, unwind unreachable]; + StorageLive(_6); + StorageLive(_7); + StorageLive(_5); + _6 = copy (*_3); + _7 = copy ((_6.0: std::ptr::Unique).0: std::ptr::NonNull) as *const dyn std::ops::Fn(i32) (Transmute); + _5 = &(*_7); + _2 = >::call(move _5, move _4) -> [return: bb2, unwind unreachable]; } bb1: { + return; + } + + bb2: { + StorageDead(_5); + StorageDead(_7); + StorageDead(_6); StorageDead(_4); StorageDead(_3); StorageDead(_2); _0 = const (); - drop(_1) -> [return: bb2, unwind unreachable]; - } - - bb2: { - return; + drop(_1) -> [return: bb1, unwind unreachable]; } }