| // This is a test for optimal Ord trait implementation for bool. | |
| // See <https://github.com/rust-lang/rust/issues/66780> for more info. | |
| //@ compile-flags: -C opt-level=3 | |
| #![crate_type = "lib"] | |
| use std::cmp::Ordering; | |
| // CHECK-LABEL: @cmp_bool | |
| #[no_mangle] | |
| pub fn cmp_bool(a: bool, b: bool) -> Ordering { | |
| // LLVM 10 produces (zext a) + (sext b), but the final lowering is (zext a) - (zext b). | |
| // CHECK: zext i1 | |
| // CHECK: {{z|s}}ext i1 | |
| // CHECK: {{sub|add}} nsw | |
| a.cmp(&b) | |
| } |