- // MIR for `maybe_dead` before ReferencePropagation
+ // MIR for `maybe_dead` after ReferencePropagation
  
  fn maybe_dead(_1: bool) -> () {
      let mut _0: ();
      let mut _2: i32;
      let mut _3: i32;
      let mut _4: &i32;
      let mut _5: &mut i32;
      let mut _6: i32;
      let mut _7: i32;
      let mut _8: i32;
  
      bb0: {
          StorageLive(_2);
          StorageLive(_3);
          _2 = const 5_i32;
          _3 = const 5_i32;
          _4 = &_2;
          _5 = &mut _3;
          (*_5) = const 7_i32;
-         _6 = copy (*_4);
+         _6 = copy _2;
          switchInt(copy _1) -> [1: bb1, otherwise: bb2];
      }
  
      bb1: {
          StorageDead(_2);
          StorageDead(_3);
          _0 = opaque::<i32>(copy _6) -> [return: bb2, unwind continue];
      }
  
      bb2: {
          _7 = copy (*_4);
          _0 = opaque::<i32>(copy _7) -> [return: bb3, unwind continue];
      }
  
      bb3: {
          _8 = copy (*_5);
          _0 = opaque::<i32>(copy _8) -> [return: bb4, unwind continue];
      }
  
      bb4: {
          return;
      }
  }
  
