blob: 95042579adb6b65f20c909bfc650c22d390c4f67 [file] [log] [blame]
// min-llvm-version: 12.0.0
// compile-flags: -O
#![crate_type = "lib"]
// Test that LLVM can eliminate the unreachable `Variant::Zero` branch.
#[derive(Copy, Clone, Eq, PartialEq)]
pub enum Variant {
Zero,
One,
Two,
}
extern {
fn exf1();
fn exf2();
}
pub static mut GLOBAL: Variant = Variant::Zero;
// CHECK-LABEL: @issue_77812
#[no_mangle]
pub unsafe fn issue_77812() {
let g = GLOBAL;
if g != Variant::Zero {
match g {
Variant::One => exf1(),
Variant::Two => exf2(),
// CHECK-NOT: panic
Variant::Zero => panic!(),
}
}
}