- // MIR for `reference_propagation_mut` before ReferencePropagation + // MIR for `reference_propagation_mut` after ReferencePropagation fn reference_propagation_mut(_1: &mut T, _2: &mut T) -> () { debug single => _1; debug multiple => _2; let mut _0: (); let _3: (); let mut _4: usize; let _7: (); let mut _8: (); let _9: (); let mut _10: usize; let mut _13: &mut usize; let mut _14: &mut usize; let _16: (); let mut _17: (); let _18: (); let mut _19: usize; let _23: (); let mut _24: &&mut usize; let _25: (); let mut _26: usize; let _30: (); let mut _31: *mut &mut usize; let _32: (); let mut _33: usize; let _36: (); let mut _37: &mut usize; let _38: (); let mut _39: usize; let _45: (); let mut _46: &mut usize; let _47: (); let _48: &mut T; let _50: (); let mut _51: (); let _52: (); let _53: &mut T; let mut _54: &mut T; let mut _55: &mut T; let _57: (); let mut _58: (); let _59: (); let mut _60: usize; let _64: (); let mut _65: (); let mut _66: usize; let _70: (); let mut _71: (); scope 1 { debug a => _4; let _5: &mut usize; scope 2 { debug b => _5; let _6: usize; scope 3 { debug c => _6; } } } scope 4 { debug a => _10; let mut _11: usize; scope 5 { debug a2 => _11; let mut _12: &mut usize; scope 6 { debug b => _12; let _15: usize; scope 7 { debug c => _15; } } } } scope 8 { debug a => _19; let _20: &mut usize; scope 9 { debug b => _20; let _21: &&mut usize; scope 10 { debug d => _21; let _22: usize; scope 11 { debug c => _22; } } } } scope 12 { debug a => _26; let mut _27: &mut usize; scope 13 { debug b => _27; let _28: *mut &mut usize; scope 14 { debug d => _28; let _29: usize; scope 15 { debug c => _29; } } } } scope 16 { debug a => _33; let _34: &mut usize; scope 17 { debug b => _34; let _35: usize; scope 18 { debug c => _35; } } } scope 19 { debug a => _39; let _40: &mut usize; scope 20 { debug b1 => _40; let _41: usize; scope 21 { debug c => _41; let _42: &mut usize; scope 22 { debug b2 => _42; let _43: usize; scope 23 { debug c2 => _43; let _44: &mut usize; scope 24 { debug b3 => _44; } } } } } } scope 25 { - debug a => _48; + debug a => _1; let _49: T; scope 26 { debug b => _49; } } scope 27 { debug a => _53; let _56: T; scope 28 { debug b => _56; } } scope 29 { debug a => _60; let _61: &mut usize; scope 30 { debug b => _61; let _62: &&mut usize; scope 31 { debug d => _62; let _63: usize; scope 32 { debug c => _63; } } } } scope 33 { debug a => _66; let mut _67: &mut usize; scope 34 { debug b => _67; let _68: &mut &mut usize; scope 35 { debug d => _68; let _69: usize; scope 36 { debug c => _69; } } } } bb0: { - StorageLive(_3); StorageLive(_4); _4 = const 5_usize; StorageLive(_5); _5 = &mut _4; StorageLive(_6); - _6 = (*_5); + _6 = _4; StorageLive(_7); StorageLive(_8); _8 = (); _7 = opaque::<()>(move _8) -> [return: bb1, unwind continue]; } bb1: { StorageDead(_8); StorageDead(_7); - _3 = const (); StorageDead(_6); StorageDead(_5); StorageDead(_4); - StorageDead(_3); - StorageLive(_9); StorageLive(_10); _10 = const 5_usize; StorageLive(_11); _11 = const 7_usize; StorageLive(_12); _12 = &mut _10; StorageLive(_13); - StorageLive(_14); - _14 = &mut _11; - _13 = &mut (*_14); + _13 = &mut _11; _12 = move _13; StorageDead(_13); - StorageDead(_14); StorageLive(_15); _15 = (*_12); StorageLive(_16); StorageLive(_17); _17 = (); _16 = opaque::<()>(move _17) -> [return: bb2, unwind continue]; } bb2: { StorageDead(_17); StorageDead(_16); - _9 = const (); StorageDead(_15); StorageDead(_12); StorageDead(_11); StorageDead(_10); - StorageDead(_9); - StorageLive(_18); StorageLive(_19); _19 = const 5_usize; StorageLive(_20); _20 = &mut _19; StorageLive(_21); _21 = &_20; StorageLive(_22); _22 = (*_20); StorageLive(_23); StorageLive(_24); _24 = _21; _23 = opaque::<&&mut usize>(move _24) -> [return: bb3, unwind continue]; } bb3: { StorageDead(_24); StorageDead(_23); - _18 = const (); StorageDead(_22); StorageDead(_21); StorageDead(_20); StorageDead(_19); - StorageDead(_18); - StorageLive(_25); StorageLive(_26); _26 = const 5_usize; StorageLive(_27); _27 = &mut _26; StorageLive(_28); _28 = &raw mut _27; StorageLive(_29); _29 = (*_27); StorageLive(_30); StorageLive(_31); _31 = _28; _30 = opaque::<*mut &mut usize>(move _31) -> [return: bb4, unwind continue]; } bb4: { StorageDead(_31); StorageDead(_30); - _25 = const (); StorageDead(_29); StorageDead(_28); StorageDead(_27); StorageDead(_26); - StorageDead(_25); - StorageLive(_32); StorageLive(_33); _33 = const 7_usize; StorageLive(_34); _34 = &mut _33; StorageLive(_35); _35 = (*_34); StorageLive(_36); StorageLive(_37); _37 = move _34; _36 = opaque::<&mut usize>(move _37) -> [return: bb5, unwind continue]; } bb5: { StorageDead(_37); StorageDead(_36); - _32 = const (); StorageDead(_35); StorageDead(_34); StorageDead(_33); - StorageDead(_32); - StorageLive(_38); StorageLive(_39); _39 = const 7_usize; StorageLive(_40); _40 = &mut _39; StorageLive(_41); _41 = (*_40); StorageLive(_42); _42 = move _40; StorageLive(_43); _43 = (*_42); StorageLive(_44); _44 = move _42; StorageLive(_45); StorageLive(_46); _46 = move _44; _45 = opaque::<&mut usize>(move _46) -> [return: bb6, unwind continue]; } bb6: { StorageDead(_46); StorageDead(_45); - _38 = const (); StorageDead(_44); StorageDead(_43); StorageDead(_42); StorageDead(_41); StorageDead(_40); StorageDead(_39); - StorageDead(_38); - StorageLive(_47); - StorageLive(_48); - _48 = &mut (*_1); StorageLive(_49); - _49 = (*_48); + _49 = (*_1); StorageLive(_50); StorageLive(_51); _51 = (); _50 = opaque::<()>(move _51) -> [return: bb7, unwind continue]; } bb7: { StorageDead(_51); StorageDead(_50); - _47 = const (); StorageDead(_49); - StorageDead(_48); - StorageDead(_47); - StorageLive(_52); StorageLive(_53); _53 = &mut (*_2); StorageLive(_54); - StorageLive(_55); - _55 = &mut (*_1); - _54 = &mut (*_55); + _54 = &mut (*_1); _2 = move _54; StorageDead(_54); - StorageDead(_55); StorageLive(_56); _56 = (*_53); StorageLive(_57); StorageLive(_58); _58 = (); _57 = opaque::<()>(move _58) -> [return: bb8, unwind continue]; } bb8: { StorageDead(_58); StorageDead(_57); - _52 = const (); StorageDead(_56); StorageDead(_53); - StorageDead(_52); - StorageLive(_59); StorageLive(_60); _60 = const 5_usize; StorageLive(_61); _61 = &mut _60; StorageLive(_62); _62 = &_61; StorageLive(_63); _63 = (*_61); StorageLive(_64); StorageLive(_65); _65 = (); _64 = opaque::<()>(move _65) -> [return: bb9, unwind continue]; } bb9: { StorageDead(_65); StorageDead(_64); - _59 = const (); StorageDead(_63); StorageDead(_62); StorageDead(_61); StorageDead(_60); - StorageDead(_59); StorageLive(_66); _66 = const 5_usize; StorageLive(_67); _67 = &mut _66; StorageLive(_68); _68 = &mut _67; StorageLive(_69); _69 = (*_67); StorageLive(_70); StorageLive(_71); _71 = (); _70 = opaque::<()>(move _71) -> [return: bb10, unwind continue]; } bb10: { StorageDead(_71); StorageDead(_70); _0 = const (); StorageDead(_69); StorageDead(_68); StorageDead(_67); StorageDead(_66); return; } }