- // MIR for `main` before GVN
+ // MIR for `main` after GVN
  
  fn main() -> () {
      let mut _0: ();
      let _1: u8;
      let mut _2: u8;
      let mut _3: (u8, bool);
      scope 1 {
          debug x => _1;
      }
  
      bb0: {
          StorageLive(_1);
          StorageLive(_2);
-         _2 = const 2_u32 as u8 (IntToInt);
-         _3 = AddWithOverflow(copy _2, const 1_u8);
-         assert(!move (_3.1: bool), "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> [success: bb1, unwind continue];
+         _2 = const 2_u8;
+         _3 = const (3_u8, false);
+         assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_u8, const 1_u8) -> [success: bb1, unwind continue];
      }
  
      bb1: {
-         _1 = move (_3.0: u8);
+         _1 = const 3_u8;
          StorageDead(_2);
          _0 = const ();
          StorageDead(_1);
          return;
      }
+ }
+ 
+ ALLOC0 (size: 2, align: 1) {
+     03 00                                           │ ..
  }
  
