- // MIR for `main` before GVN
+ // MIR for `main` after GVN
  
  fn main() -> () {
      let mut _0: ();
      let _1: u32;
      let mut _2: [u32; 4];
      let _3: usize;
      let mut _4: bool;
      scope 1 {
          debug x => _1;
      }
  
      bb0: {
          StorageLive(_1);
          StorageLive(_2);
          _2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32];
          StorageLive(_3);
          _3 = const 2_usize;
-         _4 = Lt(copy _3, const 4_usize);
-         assert(move _4, "index out of bounds: the length is {} but the index is {}", const 4_usize, copy _3) -> [success: bb1, unwind continue];
+         _4 = const true;
+         assert(const true, "index out of bounds: the length is {} but the index is {}", const 4_usize, const 2_usize) -> [success: bb1, unwind continue];
      }
  
      bb1: {
-         _1 = copy _2[_3];
+         _1 = const 2_u32;
          StorageDead(_3);
          StorageDead(_2);
          _0 = const ();
          StorageDead(_1);
          return;
      }
  }
  
