blob: f7e401415ac7e589a3583002500a1b84d09d9f49 [file]
// 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
}
}