| // This test checks that comparison operation | |
| // generated by #[derive(PartialOrd)] | |
| // doesn't contain jumps for C enums | |
| //@ compile-flags: -Copt-level=3 | |
| #![crate_type = "lib"] | |
| #[repr(u32)] | |
| #[derive(Copy, Clone, Eq, PartialEq, PartialOrd)] | |
| pub enum Foo { | |
| Zero, | |
| One, | |
| Two, | |
| } | |
| #[no_mangle] | |
| pub fn compare_less(a: Foo, b: Foo) -> bool { | |
| // CHECK-NOT: br {{.*}} | |
| a < b | |
| } | |
| #[no_mangle] | |
| pub fn compare_le(a: Foo, b: Foo) -> bool { | |
| // CHECK-NOT: br {{.*}} | |
| a <= b | |
| } | |
| #[no_mangle] | |
| pub fn compare_ge(a: Foo, b: Foo) -> bool { | |
| // CHECK-NOT: br {{.*}} | |
| a >= b | |
| } | |
| #[no_mangle] | |
| pub fn compare_greater(a: Foo, b: Foo) -> bool { | |
| // CHECK-NOT: br {{.*}} | |
| a > b | |
| } |