3141177995
The output of these tests is too complicated to comfortably verify by hand, but we can still use them to observe changes to the underlying mappings produced by codegen/LLVM. If these tests fail due to non-coverage changes (e.g. in HIR-to-MIR lowering or MIR optimizations), it should usually be OK to just `--bless` them, as long as the `run-coverage` test suite still works.
44 lines
966 B
Rust
44 lines
966 B
Rust
fn main() {
|
|
// Initialize test constants in a way that cannot be determined at compile time, to ensure
|
|
// rustc and LLVM cannot optimize out statements (or coverage counters) downstream from
|
|
// dependent conditions.
|
|
let is_true = std::env::args().len() == 1;
|
|
|
|
let mut a: u8 = 0;
|
|
let mut b: u8 = 0;
|
|
if is_true {
|
|
a = 2;
|
|
b = 0;
|
|
}
|
|
match (a, b) {
|
|
// Or patterns generate MIR `SwitchInt` with multiple targets to the same `BasicBlock`.
|
|
// This test confirms a fix for Issue #79569.
|
|
(0 | 1, 2 | 3) => {}
|
|
_ => {}
|
|
}
|
|
if is_true {
|
|
a = 0;
|
|
b = 0;
|
|
}
|
|
match (a, b) {
|
|
(0 | 1, 2 | 3) => {}
|
|
_ => {}
|
|
}
|
|
if is_true {
|
|
a = 2;
|
|
b = 2;
|
|
}
|
|
match (a, b) {
|
|
(0 | 1, 2 | 3) => {}
|
|
_ => {}
|
|
}
|
|
if is_true {
|
|
a = 0;
|
|
b = 2;
|
|
}
|
|
match (a, b) {
|
|
(0 | 1, 2 | 3) => {}
|
|
_ => {}
|
|
}
|
|
}
|