// EMIT_MIR_FOR_EACH_PANIC_STRATEGY //@ compile-flags: -O --crate-type lib // To avoid MIR blow-up, don't inline large callees into simple shim callers, // but *do* inline other trivial things. extern "Rust" { fn other_thing(x: i32); } #[inline] unsafe fn call_twice(x: i32) { unsafe { other_thing(x); other_thing(x); } } // EMIT_MIR inline_more_in_non_inline.monomorphic_not_inline.Inline.after.mir #[no_mangle] pub unsafe fn monomorphic_not_inline(x: i32) { // CHECK-LABEL: monomorphic_not_inline // CHECK: other_thing // CHECK: other_thing unsafe { call_twice(x) }; } // EMIT_MIR inline_more_in_non_inline.marked_inline_direct.Inline.after.mir #[inline] pub unsafe fn marked_inline_direct(x: i32) { // CHECK-LABEL: marked_inline_direct // CHECK-NOT: other_thing // CHECK: call_twice // CHECK-NOT: other_thing unsafe { call_twice(x) }; } // EMIT_MIR inline_more_in_non_inline.marked_inline_indirect.Inline.after.mir #[inline] pub unsafe fn marked_inline_indirect(x: i32) { // CHECK-LABEL: marked_inline_indirect // CHECK-NOT: other_thing // CHECK: call_twice // CHECK-NOT: other_thing unsafe { marked_inline_direct(x) }; }