//@ test-mir-pass: Inline //@ revisions: PRESERVE FULL NONE LIMITED //@ [PRESERVE]compile-flags: -O -C debuginfo=0 -Zinline-mir-preserve-debug //@ [FULL]compile-flags: -O -C debuginfo=2 //@ [NONE]compile-flags: -O -C debuginfo=0 //@ [LIMITED]compile-flags: -O -C debuginfo=1 #[inline(always)] fn inline_fn1(arg1: i32) -> i32 { let local1 = arg1 + 1; let _local2 = 10; arg1 + local1 } #[inline(always)] fn inline_fn2(binding: i32) -> i32 { { let binding = inline_fn1(binding); binding } } #[inline(never)] fn test() -> i32 { // CHECK-LABEL: fn test inline_fn2(1) // CHECK-LABEL: (inlined inline_fn2) // PRESERVE: debug binding => // FULL: debug binding => // NONE-NOT: debug binding => // LIMITED-NOT: debug binding => // CHECK-LABEL: (inlined inline_fn1) // PRESERVE: debug arg1 => // FULL: debug arg1 => // NONE-NOT: debug arg1 => // LIMITED-NOT: debug arg1 => // PRESERVE: debug local1 => // FULL: debug local1 => // NONE-NOT: debug local1 => // LIMITED-NOT: debug local1 => // PRESERVE: debug _local2 => // FULL: debug _local2 => // NONE-NOT: debug _local2 => // LIMITED-NOT: debug _local2 => }