// Verify that additional discriminators are emitted for profiling with `-Zdebuginfo-for-profiling`: // - 0 discriminators are emitted without the flag in the test below // - at least 1 discriminator is emitted with the flag in the test below // // //@ add-minicore //@ revisions: DEFAULT DEBUGINFO //@ compile-flags: -Copt-level=2 -Cdebuginfo=line-tables-only //@ [DEBUGINFO] compile-flags: -Zdebuginfo-for-profiling // DEFAULT-NOT: discriminator // DEBUGINFO-COUNT-1: discriminator #![feature(no_core)] #![no_std] #![no_core] #![crate_type = "lib"] extern crate minicore; use minicore::*; extern "C" { fn add(_x: i32, _y: i32) -> i32; fn mul(_x: i32, _y: i32) -> i32; fn compute(_x: i32) -> i32; fn cond() -> bool; } #[no_mangle] pub fn f(limit: i32) -> i32 { unsafe { let mut sum = 0; let mut i = 1; while cond() { if cond() { sum = add(sum, compute(i)); } else { sum = add(sum, mul(compute(i), 2)); } i = add(i, 1); } sum } }