@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