- // 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; 3];
      let _4: &[u32; 3];
      let _5: [u32; 3];
      let _6: usize;
      let mut _7: usize;
      let mut _8: bool;
      let mut _10: &[u32];
      let _11: usize;
      let mut _12: usize;
      let mut _13: bool;
      let mut _14: &[u32; 3];
      scope 1 {
          debug local => _1;
          let _9: u32;
          scope 2 {
              debug constant => _9;
          }
      }
  
      bb0: {
          StorageLive(_1);
          StorageLive(_2);
          StorageLive(_3);
          StorageLive(_4);
          _14 = const main::promoted[0];
          _4 = copy _14;
          _3 = copy _4;
          _2 = move _3 as &[u32] (PointerCoercion(Unsize, AsCast));
          StorageDead(_3);
          StorageLive(_6);
          _6 = const 1_usize;
-         _7 = Len((*_2));
-         _8 = Lt(copy _6, copy _7);
-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind continue];
+         _7 = const 3_usize;
+         _8 = const true;
+         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb1, unwind continue];
      }
  
      bb1: {
-         _1 = copy (*_2)[_6];
+         _1 = copy (*_2)[1 of 2];
          StorageDead(_6);
          StorageDead(_4);
          StorageDead(_2);
          StorageLive(_9);
          StorageLive(_10);
          _10 = const main::SLICE;
          StorageLive(_11);
          _11 = const 1_usize;
-         _12 = Len((*_10));
-         _13 = Lt(copy _11, copy _12);
-         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, copy _11) -> [success: bb2, unwind continue];
+         _12 = const 3_usize;
+         _13 = const true;
+         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb2, unwind continue];
      }
  
      bb2: {
-         _9 = copy (*_10)[_11];
+         _9 = copy (*_10)[1 of 2];
          StorageDead(_11);
          StorageDead(_10);
          _0 = const ();
          StorageDead(_9);
          StorageDead(_1);
          return;
      }
  }
  
