|  | 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) => {} | 
|  | _ => {} | 
|  | } | 
|  | } |