- // MIR for `main` before DataflowConstProp
+ // MIR for `main` after DataflowConstProp
  
  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 = copy _2[2 of 3];
          StorageDead(_3);
          StorageDead(_2);
          _0 = const ();
          StorageDead(_1);
          return;
      }
  }
  
