| - // MIR for `indirect_ref_2` before GVN |
| + // MIR for `indirect_ref_2` after GVN |
| |
| fn indirect_ref_2(_1: &(&i32,), _2: for<'a> fn(&'a i32), _3: fn()) -> () { |
| debug x => _1; |
| debug out => _2; |
| debug clobber => _3; |
| let mut _0: (); |
| let _4: (&i32,); |
| let _5: (); |
| let mut _6: for<'a> fn(&'a i32); |
| let mut _7: &i32; |
| let _8: (); |
| let mut _9: fn(); |
| let _11: (); |
| let mut _12: for<'a> fn(&'a i32); |
| let mut _13: &i32; |
| let mut _14: &i32; |
| let mut _15: &i32; |
| scope 1 { |
| debug y1 => _4; |
| let _10: (&i32,); |
| scope 2 { |
| debug y2 => _10; |
| } |
| } |
| |
| bb0: { |
| StorageLive(_4); |
| _4 = copy (*_1); |
| StorageLive(_5); |
| StorageLive(_6); |
| _6 = copy _2; |
| StorageLive(_7); |
| _14 = no_retag copy (_4.0: &i32); |
| _7 = &(*_14); |
| - _5 = move _6(move _7) -> [return: bb1, unwind unreachable]; |
| + _5 = copy _2(move _7) -> [return: bb1, unwind unreachable]; |
| } |
| |
| bb1: { |
| StorageDead(_7); |
| StorageDead(_6); |
| StorageDead(_5); |
| StorageLive(_8); |
| StorageLive(_9); |
| _9 = copy _3; |
| - _8 = move _9() -> [return: bb2, unwind unreachable]; |
| + _8 = copy _3() -> [return: bb2, unwind unreachable]; |
| } |
| |
| bb2: { |
| StorageDead(_9); |
| StorageDead(_8); |
| StorageLive(_10); |
| _10 = copy (*_1); |
| StorageLive(_11); |
| StorageLive(_12); |
| _12 = copy _2; |
| StorageLive(_13); |
| _15 = no_retag copy (_10.0: &i32); |
| _13 = &(*_15); |
| - _11 = move _12(move _13) -> [return: bb3, unwind unreachable]; |
| + _11 = copy _2(move _13) -> [return: bb3, unwind unreachable]; |
| } |
| |
| bb3: { |
| StorageDead(_13); |
| StorageDead(_12); |
| StorageDead(_11); |
| _0 = const (); |
| StorageDead(_10); |
| StorageDead(_4); |
| return; |
| } |
| } |
| |