//@ compile-flags: -O | |
#![crate_type = "lib"] | |
pub enum Enum { | |
A(u32), | |
B(u32), | |
C(u32), | |
} | |
#[no_mangle] | |
pub fn foo(lhs: &Enum, rhs: &Enum) -> bool { | |
// CHECK-LABEL: define{{.*}}i1 @foo( | |
// CHECK-NOT: switch | |
// CHECK-NOT: br | |
// CHECK: [[SELECT:%.*]] = select | |
// CHECK-NEXT: ret i1 [[SELECT]] | |
// CHECK-NEXT: } | |
match (lhs, rhs) { | |
(Enum::A(lhs), Enum::A(rhs)) => lhs == rhs, | |
(Enum::B(lhs), Enum::B(rhs)) => lhs == rhs, | |
(Enum::C(lhs), Enum::C(rhs)) => lhs == rhs, | |
_ => false, | |
} | |
} |