|  | - // MIR for `bar` before PostAnalysisNormalize | 
|  | + // MIR for `bar` after PostAnalysisNormalize | 
|  |  | 
|  | fn bar(_1: P) -> () { | 
|  | debug _baz => _1; | 
|  | let mut _0: (); | 
|  | let _2: (); | 
|  | -     let mut _3: &impl Fn(); | 
|  | -     let _4: impl Fn(); | 
|  | +     let mut _3: &fn() {foo}; | 
|  | +     let _4: fn() {foo}; | 
|  | let mut _5: (); | 
|  |  | 
|  | bb0: { | 
|  | StorageLive(_2); | 
|  | StorageLive(_3); | 
|  | StorageLive(_4); | 
|  | _4 = hide_foo() -> [return: bb1, unwind: bb6]; | 
|  | } | 
|  |  | 
|  | bb1: { | 
|  | _3 = &_4; | 
|  | StorageLive(_5); | 
|  | _5 = (); | 
|  | -         _2 = <impl Fn() as Fn<()>>::call(move _3, move _5) -> [return: bb2, unwind: bb5]; | 
|  | +         _2 = <fn() {foo} as Fn<()>>::call(move _3, move _5) -> [return: bb2, unwind: bb5]; | 
|  | } | 
|  |  | 
|  | bb2: { | 
|  | StorageDead(_5); | 
|  | StorageDead(_3); | 
|  | drop(_4) -> [return: bb3, unwind: bb6]; | 
|  | } | 
|  |  | 
|  | bb3: { | 
|  | StorageDead(_4); | 
|  | StorageDead(_2); | 
|  | _0 = const (); | 
|  | drop(_1) -> [return: bb4, unwind: bb7]; | 
|  | } | 
|  |  | 
|  | bb4: { | 
|  | return; | 
|  | } | 
|  |  | 
|  | bb5 (cleanup): { | 
|  | drop(_4) -> [return: bb6, unwind terminate(cleanup)]; | 
|  | } | 
|  |  | 
|  | bb6 (cleanup): { | 
|  | drop(_1) -> [return: bb7, unwind terminate(cleanup)]; | 
|  | } | 
|  |  | 
|  | bb7 (cleanup): { | 
|  | resume; | 
|  | } | 
|  | } | 
|  |  |