- // MIR for `FOO` before PromoteTemps
+ // MIR for `FOO` after PromoteTemps
  
  static mut FOO: *const &i32 = {
      let mut _0: *const &i32;
      let mut _1: &[&i32];
      let mut _2: &[&i32; 1];
      let _3: [&i32; 1];
      let mut _4: &i32;
      let _5: *const i32;
+     let mut _6: &[&i32; 1];
  
      bb0: {
          StorageLive(_1);
          StorageLive(_2);
-         StorageLive(_3);
-         StorageLive(_4);
-         StorageLive(_5);
-         _5 = const {ALLOC0: *const i32};
-         _4 = &(*_5);
-         _3 = [move _4];
-         _2 = &_3;
+         _6 = const FOO::promoted[0];
+         _2 = &(*_6);
          _1 = move _2 as &[&i32] (PointerCoercion(Unsize, Implicit));
-         StorageDead(_4);
          StorageDead(_2);
          _0 = core::slice::<impl [&i32]>::as_ptr(move _1) -> [return: bb1, unwind: bb2];
      }
  
      bb1: {
-         StorageDead(_5);
-         StorageDead(_3);
          StorageDead(_1);
          return;
      }
  
      bb2 (cleanup): {
          resume;
      }
  }
- 
- ALLOC0 (extern static: X)
  
