mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-29 02:03:53 +00:00
abc2c702af
When set, this flag skips the code that normally extracts coverage spans from MIR statements and terminators. That sometimes makes it easier to debug branch coverage and MC/DC coverage, because the coverage output is less noisy. For internal debugging only. If other code changes would make it hard to keep supporting this flag, remove it.
63 lines
1.0 KiB
Rust
63 lines
1.0 KiB
Rust
#![feature(coverage_attribute)]
|
|
//@ edition: 2021
|
|
//@ compile-flags: -Zcoverage-options=branch,no-mir-spans
|
|
//@ llvm-cov-flags: --show-branches=count
|
|
|
|
// Tests the behaviour of the `-Zcoverage-options=no-mir-spans` debugging flag.
|
|
// The actual code below is just some non-trivial code copied from another test
|
|
// (`while.rs`), and has no particular significance.
|
|
|
|
macro_rules! no_merge {
|
|
() => {
|
|
for _ in 0..1 {}
|
|
};
|
|
}
|
|
|
|
fn while_cond() {
|
|
no_merge!();
|
|
|
|
let mut a = 8;
|
|
while a > 0 {
|
|
a -= 1;
|
|
}
|
|
}
|
|
|
|
fn while_cond_not() {
|
|
no_merge!();
|
|
|
|
let mut a = 8;
|
|
while !(a == 0) {
|
|
a -= 1;
|
|
}
|
|
}
|
|
|
|
fn while_op_and() {
|
|
no_merge!();
|
|
|
|
let mut a = 8;
|
|
let mut b = 4;
|
|
while a > 0 && b > 0 {
|
|
a -= 1;
|
|
b -= 1;
|
|
}
|
|
}
|
|
|
|
fn while_op_or() {
|
|
no_merge!();
|
|
|
|
let mut a = 4;
|
|
let mut b = 8;
|
|
while a > 0 || b > 0 {
|
|
a -= 1;
|
|
b -= 1;
|
|
}
|
|
}
|
|
|
|
#[coverage(off)]
|
|
fn main() {
|
|
while_cond();
|
|
while_cond_not();
|
|
while_op_and();
|
|
while_op_or();
|
|
}
|