| // 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 |
| } |