- // MIR for `mut_raw_then_mut_shr` before ReferencePropagation + // MIR for `mut_raw_then_mut_shr` after ReferencePropagation fn mut_raw_then_mut_shr() -> (i32, i32) { let mut _0: (i32, i32); let mut _1: i32; let mut _4: *mut i32; let mut _5: &mut i32; let _8: (); let mut _9: i32; let mut _10: i32; scope 1 { debug x => _1; let _2: &mut i32; scope 2 { debug xref => _2; let _3: *mut i32; scope 3 { - debug xraw => _3; + debug xraw => _2; let _6: &i32; scope 4 { - debug xshr => _6; + debug xshr => _2; let _7: i32; scope 5 { debug a => _7; } } } } } bb0: { StorageLive(_1); _1 = const 2_i32; - StorageLive(_2); _2 = &mut _1; - StorageLive(_3); - StorageLive(_4); - StorageLive(_5); - _5 = &mut (*_2); - _4 = &raw mut (*_5); - _3 = copy _4; - StorageDead(_5); - StorageDead(_4); - StorageLive(_6); - _6 = &(*_2); StorageLive(_7); - _7 = copy (*_6); - StorageLive(_8); - (*_3) = const 4_i32; - _8 = const (); - StorageDead(_8); + _7 = copy _1; + _1 = const 4_i32; StorageLive(_9); _9 = copy _7; StorageLive(_10); _10 = copy _1; _0 = (move _9, move _10); StorageDead(_10); StorageDead(_9); StorageDead(_7); - StorageDead(_6); - StorageDead(_3); - StorageDead(_2); StorageDead(_1); return; } }