about summary refs log tree commit diff
path: root/tests/codegen/option-niche-unfixed/option-nonzero-eq.rs
blob: 308856cfb7e9db9c97e1018e87b09fa9d0936d13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//@ should-fail
//@ compile-flags: -Copt-level=3 -Zmerge-functions=disabled
//! FIXME(#49892)
//! Test that the derived implementation of `PartialEq` for `Option` is not fully
//! optimized by LLVM. If this starts passing, the test and manual impl should
//! be removed.
#![crate_type = "lib"]

use std::num::NonZero;

#[derive(Copy, Clone, PartialEq, Eq)]
pub enum Option<T> {
    None,
    Some(T),
}

// CHECK-LABEL: @non_zero_eq
#[no_mangle]
pub fn non_zero_eq(l: Option<NonZero<u32>>, r: Option<NonZero<u32>>) -> bool {
    // CHECK: start:
    // CHECK-NEXT: icmp eq i32
    // CHECK-NEXT: ret i1
    l == r
}