@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