mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-30 02:33:55 +00:00
72b721f48e
When one of these tests fails, any compiler warnings will be printed to the console, which makes it harder to track down the actual reason for failure. (The outstanding warnings were found by temporarily adding `-Dwarnings` to the compiler arguments for `RunCoverage` in `src/tools/compiletest/src/runtest.rs`.)
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) => {}
|
|
_ => {}
|
|
}
|
|
}
|