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