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