//@ test-mir-pass: ReferencePropagation #![feature(custom_mir, core_intrinsics)] #![allow(internal_features)] #![crate_type = "lib"] use std::intrinsics::mir::*; #[inline(never)] fn opaque(_: impl Sized, _: impl Sized) {} #[custom_mir(dialect = "runtime")] pub fn fn0() { // CHECK-LABEL: fn0 // CHECK: _9 = opaque::<&u8, &u64>(copy (_2.1: &u8), copy _6) -> [return: bb1, unwind unreachable]; mir! { let _1: (u8, u8); let _2: (u64, &u8); let _3: (u8, &&u64); let _4: u64; let _5: &u64; let _6: &u64; let _7: &u64; let _8: u64; let n: (); { _3.0 = 0; _1 = (0, _3.0); _4 = 0; _2.1 = &_1.0; _8 = 0; _5 = &_8; _5 = &_4; _6 = _5; _7 = _6; _3.1 = &_6; Call(n = opaque(_2.1, Move(_6)), ReturnTo(bb1), UnwindUnreachable()) } bb1 = { _2.0 = *_7; Return() } } }