// Optimized MIR shouldn't have critical call edges // // build-fail // edition: 2021 // compile-flags: --crate-type=lib // failure-status: 101 // dont-check-compiler-stderr // error-pattern: encountered critical edge in `Call` terminator #![feature(custom_mir, core_intrinsics)] use core::intrinsics::mir::*; #[custom_mir(dialect = "runtime", phase = "optimized")] #[inline(always)] pub fn f(a: u32) -> u32 { mir!( { match a { 0 => bb1, _ => bb2, } } bb1 = { Call(RET = f(1), bb2, UnwindTerminate(ReasonAbi)) } bb2 = { RET = 2; Return() } ) }