@@ -33,11 +33,6 @@ pub unsafe fn check_to_enum(x: i8) -> SmallEnum {
33
33
// CHECK-LABEL: @check_from_enum(
34
34
#[ no_mangle]
35
35
pub unsafe fn check_from_enum ( x : SmallEnum ) -> i8 {
36
- // CHECK-NOT: icmp
37
- // CHECK-NOT: assume
38
- // OPT: %0 = sub i8 %x, 10
39
- // OPT: %1 = icmp ule i8 %0, 2
40
- // OPT: call void @llvm.assume(i1 %1)
41
36
// CHECK-NOT: icmp
42
37
// CHECK-NOT: assume
43
38
// CHECK: ret i8 %x
@@ -63,11 +58,6 @@ pub unsafe fn check_to_ordering(x: u8) -> std::cmp::Ordering {
63
58
// CHECK-LABEL: @check_from_ordering(
64
59
#[ no_mangle]
65
60
pub unsafe fn check_from_ordering ( x : std:: cmp:: Ordering ) -> u8 {
66
- // CHECK-NOT: icmp
67
- // CHECK-NOT: assume
68
- // OPT: %0 = sub i8 %x, -1
69
- // OPT: %1 = icmp ule i8 %0, 2
70
- // OPT: call void @llvm.assume(i1 %1)
71
61
// CHECK-NOT: icmp
72
62
// CHECK-NOT: assume
73
63
// CHECK: ret i8 %x
@@ -105,11 +95,9 @@ pub enum Minus100ToPlus100 {
105
95
pub unsafe fn check_enum_from_char ( x : char ) -> Minus100ToPlus100 {
106
96
// CHECK-NOT: icmp
107
97
// CHECK-NOT: assume
108
- // OPT: %0 = icmp ule i32 %x, 1114111
109
- // OPT: call void @llvm.assume(i1 %0)
110
- // OPT: %1 = sub i32 %x, -100
111
- // OPT: %2 = icmp ule i32 %1, 200
112
- // OPT: call void @llvm.assume(i1 %2)
98
+ // OPT: %0 = sub i32 %x, -100
99
+ // OPT: %1 = icmp ule i32 %0, 200
100
+ // OPT: call void @llvm.assume(i1 %1)
113
101
// CHECK-NOT: icmp
114
102
// CHECK-NOT: assume
115
103
// CHECK: ret i32 %x
@@ -122,11 +110,8 @@ pub unsafe fn check_enum_from_char(x: char) -> Minus100ToPlus100 {
122
110
pub unsafe fn check_enum_to_char ( x : Minus100ToPlus100 ) -> char {
123
111
// CHECK-NOT: icmp
124
112
// CHECK-NOT: assume
125
- // OPT: %0 = sub i32 %x, -100
126
- // OPT: %1 = icmp ule i32 %0, 200
127
- // OPT: call void @llvm.assume(i1 %1)
128
- // OPT: %2 = icmp ule i32 %x, 1114111
129
- // OPT: call void @llvm.assume(i1 %2)
113
+ // OPT: %0 = icmp ule i32 %x, 1114111
114
+ // OPT: call void @llvm.assume(i1 %0)
130
115
// CHECK-NOT: icmp
131
116
// CHECK-NOT: assume
132
117
// CHECK: ret i32 %x
@@ -139,16 +124,11 @@ pub unsafe fn check_enum_to_char(x: Minus100ToPlus100) -> char {
139
124
pub unsafe fn check_swap_pair ( x : ( char , NonZero < u32 > ) ) -> ( NonZero < u32 > , char ) {
140
125
// CHECK-NOT: icmp
141
126
// CHECK-NOT: assume
142
- // OPT: %0 = icmp ule i32 %x.0, 1114111
143
- // OPT: call void @llvm.assume(i1 %0)
144
- // OPT: %1 = sub i32 %x.0, 1
145
- // OPT: %2 = icmp ule i32 %1, -2
127
+ // OPT: %0 = sub i32 %x.0, 1
128
+ // OPT: %1 = icmp ule i32 %0, -2
129
+ // OPT: call void @llvm.assume(i1 %1)
130
+ // OPT: %2 = icmp ule i32 %x. 1, 1114111
146
131
// OPT: call void @llvm.assume(i1 %2)
147
- // OPT: %3 = sub i32 %x.1, 1
148
- // OPT: %4 = icmp ule i32 %3, -2
149
- // OPT: call void @llvm.assume(i1 %4)
150
- // OPT: %5 = icmp ule i32 %x.1, 1114111
151
- // OPT: call void @llvm.assume(i1 %5)
152
132
// CHECK-NOT: icmp
153
133
// CHECK-NOT: assume
154
134
// CHECK: %[[P1:.+]] = insertvalue { i32, i32 } poison, i32 %x.0, 0
@@ -161,13 +141,6 @@ pub unsafe fn check_swap_pair(x: (char, NonZero<u32>)) -> (NonZero<u32>, char) {
161
141
// CHECK-LABEL: @check_bool_from_ordering(
162
142
#[ no_mangle]
163
143
pub unsafe fn check_bool_from_ordering ( x : std:: cmp:: Ordering ) -> bool {
164
- // CHECK-NOT: icmp
165
- // CHECK-NOT: assume
166
- // OPT: %0 = sub i8 %x, -1
167
- // OPT: %1 = icmp ule i8 %0, 2
168
- // OPT: call void @llvm.assume(i1 %1)
169
- // OPT: %2 = icmp ule i8 %x, 1
170
- // OPT: call void @llvm.assume(i1 %2)
171
144
// CHECK-NOT: icmp
172
145
// CHECK-NOT: assume
173
146
// CHECK: %[[R:.+]] = trunc{{( nuw)?}} i8 %x to i1
@@ -182,11 +155,9 @@ pub unsafe fn check_bool_to_ordering(x: bool) -> std::cmp::Ordering {
182
155
// CHECK: %_0 = zext i1 %x to i8
183
156
// CHECK-NOT: icmp
184
157
// CHECK-NOT: assume
185
- // OPT: %0 = icmp ule i8 %_0, 1
186
- // OPT: call void @llvm.assume(i1 %0)
187
- // OPT: %1 = sub i8 %_0, -1
188
- // OPT: %2 = icmp ule i8 %1, 2
189
- // OPT: call void @llvm.assume(i1 %2)
158
+ // OPT: %0 = sub i8 %_0, -1
159
+ // OPT: %1 = icmp ule i8 %0, 2
160
+ // OPT: call void @llvm.assume(i1 %1)
190
161
// CHECK-NOT: icmp
191
162
// CHECK-NOT: assume
192
163
// CHECK: ret i8 %_0
@@ -197,10 +168,7 @@ pub unsafe fn check_bool_to_ordering(x: bool) -> std::cmp::Ordering {
197
168
// CHECK-LABEL: @check_nonnull_to_ptr(
198
169
#[ no_mangle]
199
170
pub unsafe fn check_nonnull_to_ptr ( x : NonNull < u8 > ) -> * const u8 {
200
- // CHECK-NOT: icmp
201
- // CHECK-NOT: assume
202
- // OPT: %0 = icmp ne ptr %x, null
203
- // OPT: call void @llvm.assume(i1 %0)
171
+ // CHECK: start
204
172
// CHECK-NOT: icmp
205
173
// CHECK-NOT: assume
206
174
// CHECK: ret ptr %x
0 commit comments