- // MIR for `drop` before Inline + // MIR for `drop` after Inline fn drop(_1: *mut Vec, _2: *mut Option) -> () { debug a => _1; debug b => _2; let mut _0: (); let _3: (); let mut _4: *mut std::vec::Vec; let mut _5: *mut std::option::Option; scope 1 { } scope 2 { + scope 3 (inlined std::ptr::drop_in_place::> - shim(Some(Option))) { + let mut _6: isize; + let mut _7: isize; + } } bb0: { StorageLive(_3); StorageLive(_4); _4 = _1; _3 = std::ptr::drop_in_place::>(move _4) -> [return: bb1, unwind continue]; } bb1: { StorageDead(_4); StorageDead(_3); StorageLive(_5); _5 = _2; - _0 = std::ptr::drop_in_place::>(move _5) -> [return: bb2, unwind continue]; + StorageLive(_6); + StorageLive(_7); + _6 = discriminant((*_5)); + switchInt(move _6) -> [0: bb2, otherwise: bb3]; } bb2: { + StorageDead(_7); + StorageDead(_6); StorageDead(_5); return; + } + + bb3: { + drop((((*_5) as Some).0: B)) -> [return: bb2, unwind continue]; } }