- // MIR for `main` before DataflowConstProp
+ // MIR for `main` after DataflowConstProp
  
  fn main() -> () {
      let mut _0: ();
      let mut _1: (u8, u8);
      let _2: ();
      let mut _4: *mut u8;
      let mut _5: *mut u8;
      scope 1 {
          debug x => _1;
          let _3: *mut u8;
          let _6: u8;
          scope 2 {
              debug p => _3;
          }
          scope 3 {
              debug x1 => _6;
          }
      }
  
      bb0: {
          StorageLive(_1);
          _1 = (const 0_u8, const 0_u8);
          StorageLive(_2);
          StorageLive(_3);
          _3 = &raw mut (_1.0: u8);
          StorageLive(_4);
          StorageLive(_5);
          _5 = copy _3;
          _4 = std::ptr::mut_ptr::<impl *mut u8>::add(move _5, const 1_usize) -> [return: bb1, unwind unreachable];
      }
  
      bb1: {
          StorageDead(_5);
          (*_4) = const 1_u8;
          StorageDead(_4);
          _2 = const ();
          StorageDead(_3);
          StorageDead(_2);
          StorageLive(_6);
          _6 = copy (_1.1: u8);
          _0 = const ();
          StorageDead(_6);
          StorageDead(_1);
          return;
      }
  }
  
