@0,1,2,3⦊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⦉@0,1,2,3 @4,6⦊{ a = 2; b = 0; }⦉@4,6@5⦊⦉@5 match @7⦊(a, b)⦉@7 { // Or patterns generate MIR `SwitchInt` with multiple targets to the same `BasicBlock`. // This test confirms a fix for Issue #79569. (0 | 1, 2 | 3) => @10,11⦊{}⦉@10,11 _ => @8⦊{}⦉@8 } if @12⦊is_true⦉@12 @13,15⦊{ a = 0; b = 0; }⦉@13,15@14⦊⦉@14 match @16⦊(a, b)⦉@16 { (0 | 1, 2 | 3) => @19,20⦊{}⦉@19,20 _ => @17⦊{}⦉@17 } if @21⦊is_true⦉@21 @22,24⦊{ a = 2; b = 2; }⦉@22,24@23⦊⦉@23 match @25⦊(a, b)⦉@25 { (0 | 1, 2 | 3) => @28,29⦊{}⦉@28,29 _ => @26⦊{}⦉@26 } if @30⦊is_true⦉@30 @31,33⦊{ a = 0; b = 2; }⦉@31,33@32⦊⦉@32 match @34⦊(a, b)⦉@34 { (0 | 1, 2 | 3) => @37,38⦊{}⦉@37,38 _ => @35⦊{}⦉@35 } }@39⦊⦉@39