- // 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: usize;
      let mut _5: 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 = Len(_2);
-         _5 = Lt(copy _3, copy _4);
-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind continue];
+         _4 = const 4_usize;
+         _5 = 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;
      }
  }
  
