- // 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::::as_ptr(move _1) -> [return: bb1, unwind: bb2]; } bb1: { - StorageDead(_5); - StorageDead(_3); StorageDead(_1); return; } bb2 (cleanup): { resume; } } - - ALLOC0 (extern static: X)