// 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
    }
}
