2023-08-15 21:42:33 -05:00
|
|
|
LL| |#![feature(or_patterns)]
|
|
|
|
LL| |
|
|
|
|
LL| 1|fn main() {
|
|
|
|
LL| 1| // Initialize test constants in a way that cannot be determined at compile time, to ensure
|
|
|
|
LL| 1| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from
|
|
|
|
LL| 1| // dependent conditions.
|
|
|
|
LL| 1| let is_true = std::env::args().len() == 1;
|
|
|
|
LL| 1|
|
|
|
|
LL| 1| let mut a: u8 = 0;
|
|
|
|
LL| 1| let mut b: u8 = 0;
|
|
|
|
LL| 1| if is_true {
|
|
|
|
LL| 1| a = 2;
|
|
|
|
LL| 1| b = 0;
|
|
|
|
LL| 1| }
|
2020-12-11 20:28:37 -06:00
|
|
|
^0
|
2023-08-15 21:42:33 -05:00
|
|
|
LL| 1| match (a, b) {
|
|
|
|
LL| | // Or patterns generate MIR `SwitchInt` with multiple targets to the same `BasicBlock`.
|
|
|
|
LL| | // This test confirms a fix for Issue #79569.
|
|
|
|
LL| 0| (0 | 1, 2 | 3) => {}
|
|
|
|
LL| 1| _ => {}
|
|
|
|
LL| | }
|
|
|
|
LL| 1| if is_true {
|
|
|
|
LL| 1| a = 0;
|
|
|
|
LL| 1| b = 0;
|
|
|
|
LL| 1| }
|
2020-12-11 20:28:37 -06:00
|
|
|
^0
|
2023-08-15 21:42:33 -05:00
|
|
|
LL| 1| match (a, b) {
|
|
|
|
LL| 0| (0 | 1, 2 | 3) => {}
|
|
|
|
LL| 1| _ => {}
|
|
|
|
LL| | }
|
|
|
|
LL| 1| if is_true {
|
|
|
|
LL| 1| a = 2;
|
|
|
|
LL| 1| b = 2;
|
|
|
|
LL| 1| }
|
2020-12-11 20:28:37 -06:00
|
|
|
^0
|
2023-08-15 21:42:33 -05:00
|
|
|
LL| 1| match (a, b) {
|
|
|
|
LL| 0| (0 | 1, 2 | 3) => {}
|
|
|
|
LL| 1| _ => {}
|
|
|
|
LL| | }
|
|
|
|
LL| 1| if is_true {
|
|
|
|
LL| 1| a = 0;
|
|
|
|
LL| 1| b = 2;
|
|
|
|
LL| 1| }
|
2020-12-11 20:28:37 -06:00
|
|
|
^0
|
2023-08-15 21:42:33 -05:00
|
|
|
LL| 1| match (a, b) {
|
|
|
|
LL| 1| (0 | 1, 2 | 3) => {}
|
|
|
|
LL| 0| _ => {}
|
|
|
|
LL| | }
|
|
|
|
LL| 1|}
|
2020-12-11 20:28:37 -06:00
|
|
|
|