- // 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));
          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;
      }
  }
  
