blob: b2536290910852f9d7cf0d020339b886948e8883 [file] [edit]
// Matching a signed non-zero value against -1 or 1 should not require
// branching code.
//@ compile-flags: -Copt-level=3
#![crate_type = "lib"]
use std::num::NonZeroI32;
// CHECK-LABEL: @signed_nonzero_matches
#[no_mangle]
pub fn signed_nonzero_matches(n: NonZeroI32) -> bool {
// CHECK-NOT: br i1
// CHECK: ret i1
matches!(n.get(), -1 | 1)
}
// CHECK-LABEL: @signed_nonzero_eq
#[no_mangle]
pub fn signed_nonzero_eq(n: NonZeroI32) -> bool {
// CHECK-NOT: br i1
// CHECK: ret i1
n.get() == -1 || n.get() == 1
}