]> git.lizzy.rs Git - rust.git/blob - tests/codegen/option-nonzero-eq.rs
Rollup merge of #107022 - scottmcm:ordering-option-eq, r=m-ou-se
[rust.git] / tests / codegen / option-nonzero-eq.rs
1 // compile-flags: -O -Zmerge-functions=disabled
2
3 #![crate_type = "lib"]
4
5 extern crate core;
6 use core::cmp::Ordering;
7 use core::num::{NonZeroU32, NonZeroI64};
8 use core::ptr::NonNull;
9
10 // CHECK-lABEL: @non_zero_eq
11 #[no_mangle]
12 pub fn non_zero_eq(l: Option<NonZeroU32>, r: Option<NonZeroU32>) -> bool {
13     // CHECK: start:
14     // CHECK-NEXT: icmp eq i32
15     // CHECK-NEXT: ret i1
16     l == r
17 }
18
19 // CHECK-lABEL: @non_zero_signed_eq
20 #[no_mangle]
21 pub fn non_zero_signed_eq(l: Option<NonZeroI64>, r: Option<NonZeroI64>) -> bool {
22     // CHECK: start:
23     // CHECK-NEXT: icmp eq i64
24     // CHECK-NEXT: ret i1
25     l == r
26 }
27
28 // CHECK-lABEL: @non_null_eq
29 #[no_mangle]
30 pub fn non_null_eq(l: Option<NonNull<u8>>, r: Option<NonNull<u8>>) -> bool {
31     // CHECK: start:
32     // CHECK-NEXT: icmp eq {{(i8\*|ptr)}}
33     // CHECK-NEXT: ret i1
34     l == r
35 }
36
37 // CHECK-lABEL: @ordering_eq
38 #[no_mangle]
39 pub fn ordering_eq(l: Option<Ordering>, r: Option<Ordering>) -> bool {
40     // CHECK: start:
41     // CHECK-NEXT: icmp eq i8
42     // CHECK-NEXT: ret i1
43     l == r
44 }