1
1
//! This test checks that compiler don't generate useless compares to zeros
2
- //! for NonZero integer types.
3
-
2
+ //! for ` NonZero` integer types.
3
+ //!
4
4
//@ compile-flags: -O --edition=2021 -Zmerge-functions=disabled
5
5
//@ only-64bit (because the LLVM type of i64 for usize shows up)
6
-
7
6
#![ crate_type = "lib" ]
7
+ #![ feature( generic_nonzero) ]
8
8
9
- use core:: num:: * ;
10
9
use core:: ptr:: NonNull ;
10
+ use core:: num:: NonZero ;
11
11
12
12
// CHECK-LABEL: @check_non_null
13
13
#[ no_mangle]
@@ -18,7 +18,7 @@ pub fn check_non_null(x: NonNull<u8>) -> bool {
18
18
19
19
// CHECK-LABEL: @equals_zero_is_false_u8
20
20
#[ no_mangle]
21
- pub fn equals_zero_is_false_u8 ( x : NonZeroU8 ) -> bool {
21
+ pub fn equals_zero_is_false_u8 ( x : NonZero < u8 > ) -> bool {
22
22
// CHECK-NOT: br
23
23
// CHECK: ret i1 false
24
24
// CHECK-NOT: br
@@ -27,7 +27,7 @@ pub fn equals_zero_is_false_u8(x: NonZeroU8) -> bool {
27
27
28
28
// CHECK-LABEL: @not_equals_zero_is_true_u8
29
29
#[ no_mangle]
30
- pub fn not_equals_zero_is_true_u8 ( x : NonZeroU8 ) -> bool {
30
+ pub fn not_equals_zero_is_true_u8 ( x : NonZero < u8 > ) -> bool {
31
31
// CHECK-NOT: br
32
32
// CHECK: ret i1 true
33
33
// CHECK-NOT: br
@@ -36,7 +36,7 @@ pub fn not_equals_zero_is_true_u8(x: NonZeroU8) -> bool {
36
36
37
37
// CHECK-LABEL: @equals_zero_is_false_i8
38
38
#[ no_mangle]
39
- pub fn equals_zero_is_false_i8 ( x : NonZeroI8 ) -> bool {
39
+ pub fn equals_zero_is_false_i8 ( x : NonZero < i8 > ) -> bool {
40
40
// CHECK-NOT: br
41
41
// CHECK: ret i1 false
42
42
// CHECK-NOT: br
@@ -45,7 +45,7 @@ pub fn equals_zero_is_false_i8(x: NonZeroI8) -> bool {
45
45
46
46
// CHECK-LABEL: @not_equals_zero_is_true_i8
47
47
#[ no_mangle]
48
- pub fn not_equals_zero_is_true_i8 ( x : NonZeroI8 ) -> bool {
48
+ pub fn not_equals_zero_is_true_i8 ( x : NonZero < i8 > ) -> bool {
49
49
// CHECK-NOT: br
50
50
// CHECK: ret i1 true
51
51
// CHECK-NOT: br
@@ -54,7 +54,7 @@ pub fn not_equals_zero_is_true_i8(x: NonZeroI8) -> bool {
54
54
55
55
// CHECK-LABEL: @usize_try_from_u32
56
56
#[ no_mangle]
57
- pub fn usize_try_from_u32 ( x : NonZeroU32 ) -> NonZeroUsize {
57
+ pub fn usize_try_from_u32 ( x : NonZero < u32 > ) -> NonZero < usize > {
58
58
// CHECK-NOT: br
59
59
// CHECK: zext i32 %{{.*}} to i64
60
60
// CHECK-NOT: br
@@ -64,7 +64,7 @@ pub fn usize_try_from_u32(x: NonZeroU32) -> NonZeroUsize {
64
64
65
65
// CHECK-LABEL: @isize_try_from_i32
66
66
#[ no_mangle]
67
- pub fn isize_try_from_i32 ( x : NonZeroI32 ) -> NonZeroIsize {
67
+ pub fn isize_try_from_i32 ( x : NonZero < i32 > ) -> NonZero < isize > {
68
68
// CHECK-NOT: br
69
69
// CHECK: sext i32 %{{.*}} to i64
70
70
// CHECK-NOT: br
@@ -74,7 +74,7 @@ pub fn isize_try_from_i32(x: NonZeroI32) -> NonZeroIsize {
74
74
75
75
// CHECK-LABEL: @u64_from_nonzero_is_not_zero
76
76
#[ no_mangle]
77
- pub fn u64_from_nonzero_is_not_zero ( x : NonZeroU64 ) ->bool {
77
+ pub fn u64_from_nonzero_is_not_zero ( x : NonZero < u64 > ) ->bool {
78
78
// CHECK-NOT: br
79
79
// CHECK: ret i1 false
80
80
// CHECK-NOT: br
0 commit comments