@@ -17,26 +17,25 @@ pub enum SmallEnum {
17
17
// CHECK-LABEL: @check_to_enum(
18
18
#[ no_mangle]
19
19
pub unsafe fn check_to_enum ( x : i8 ) -> SmallEnum {
20
+ // CHECK-NOT: icmp
21
+ // CHECK-NOT: assume
20
22
// OPT: %0 = icmp uge i8 %x, 10
21
23
// OPT: call void @llvm.assume(i1 %0)
22
24
// OPT: %1 = icmp ule i8 %x, 12
23
25
// OPT: call void @llvm.assume(i1 %1)
24
- // DBG -NOT: icmp
25
- // DBG -NOT: assume
26
+ // CHECK -NOT: icmp
27
+ // CHECK -NOT: assume
26
28
// CHECK: ret i8 %x
27
29
28
30
transmute ( x)
29
31
}
30
32
31
33
// CHECK-LABEL: @check_from_enum(
34
+ // OPT-SAME: range(i8 10, 13){{.+}}%x
32
35
#[ no_mangle]
33
36
pub unsafe fn check_from_enum ( x : SmallEnum ) -> i8 {
34
- // OPT: %0 = icmp uge i8 %x, 10
35
- // OPT: call void @llvm.assume(i1 %0)
36
- // OPT: %1 = icmp ule i8 %x, 12
37
- // OPT: call void @llvm.assume(i1 %1)
38
- // DBG-NOT: icmp
39
- // DBG-NOT: assume
37
+ // CHECK-NOT: icmp
38
+ // CHECK-NOT: assume
40
39
// CHECK: ret i8 %x
41
40
42
41
transmute ( x)
@@ -45,26 +44,25 @@ pub unsafe fn check_from_enum(x: SmallEnum) -> i8 {
45
44
// CHECK-LABEL: @check_to_ordering(
46
45
#[ no_mangle]
47
46
pub unsafe fn check_to_ordering ( x : u8 ) -> std:: cmp:: Ordering {
47
+ // CHECK-NOT: icmp
48
+ // CHECK-NOT: assume
48
49
// OPT: %0 = icmp uge i8 %x, -1
49
50
// OPT: %1 = icmp ule i8 %x, 1
50
51
// OPT: %2 = or i1 %0, %1
51
52
// OPT: call void @llvm.assume(i1 %2)
52
- // DBG -NOT: icmp
53
- // DBG -NOT: assume
53
+ // CHECK -NOT: icmp
54
+ // CHECK -NOT: assume
54
55
// CHECK: ret i8 %x
55
56
56
57
transmute ( x)
57
58
}
58
59
59
60
// CHECK-LABEL: @check_from_ordering(
61
+ // OPT-SAME: range(i8 -1, 2){{.+}}%x
60
62
#[ no_mangle]
61
63
pub unsafe fn check_from_ordering ( x : std:: cmp:: Ordering ) -> u8 {
62
- // OPT: %0 = icmp uge i8 %x, -1
63
- // OPT: %1 = icmp ule i8 %x, 1
64
- // OPT: %2 = or i1 %0, %1
65
- // OPT: call void @llvm.assume(i1 %2)
66
- // DBG-NOT: icmp
67
- // DBG-NOT: assume
64
+ // CHECK-NOT: icmp
65
+ // CHECK-NOT: assume
68
66
// CHECK: ret i8 %x
69
67
70
68
transmute ( x)
@@ -96,50 +94,50 @@ pub enum Minus100ToPlus100 {
96
94
}
97
95
98
96
// CHECK-LABEL: @check_enum_from_char(
97
+ // OPT-SAME: range(i32 0, 1114112){{.+}}%x
99
98
#[ no_mangle]
100
99
pub unsafe fn check_enum_from_char ( x : char ) -> Minus100ToPlus100 {
101
- // OPT: %0 = icmp ule i32 %x, 1114111
102
- // OPT: call void @llvm. assume(i1 %0)
103
- // OPT: %1 = icmp uge i32 %x, -100
104
- // OPT: %2 = icmp ule i32 %x, 100
105
- // OPT: %3 = or i1 %1 , %2
106
- // OPT: call void @llvm.assume(i1 %3 )
107
- // DBG -NOT: icmp
108
- // DBG -NOT: assume
100
+ // CHECK-NOT: icmp
101
+ // CHECK-NOT: assume
102
+ // OPT: %0 = icmp uge i32 %x, -100
103
+ // OPT: %1 = icmp ule i32 %x, 100
104
+ // OPT: %2 = or i1 %0 , %1
105
+ // OPT: call void @llvm.assume(i1 %2 )
106
+ // CHECK -NOT: icmp
107
+ // CHECK -NOT: assume
109
108
// CHECK: ret i32 %x
110
109
111
110
transmute ( x)
112
111
}
113
112
114
113
// CHECK-LABEL: @check_enum_to_char(
114
+ // OPT-SAME: range(i32 -100, 101){{.+}}%x
115
115
#[ no_mangle]
116
116
pub unsafe fn check_enum_to_char ( x : Minus100ToPlus100 ) -> char {
117
- // OPT: %0 = icmp uge i32 %x, -100
118
- // OPT: %1 = icmp ule i32 %x, 100
119
- // OPT: %2 = or i1 %0, %1
120
- // OPT: call void @llvm.assume(i1 %2)
121
- // OPT: %3 = icmp ule i32 %x, 1114111
122
- // OPT: call void @llvm.assume(i1 %3)
123
- // DBG-NOT: icmp
124
- // DBG-NOT: assume
117
+ // CHECK-NOT: icmp
118
+ // CHECK-NOT: assume
119
+ // OPT: %0 = icmp ule i32 %x, 1114111
120
+ // OPT: call void @llvm.assume(i1 %0)
121
+ // CHECK-NOT: icmp
122
+ // CHECK-NOT: assume
125
123
// CHECK: ret i32 %x
126
124
127
125
transmute ( x)
128
126
}
129
127
130
128
// CHECK-LABEL: @check_swap_pair(
129
+ // OPT-SAME: range(i32 0, 1114112){{.+}}%x.0
130
+ // OPT-SAME: range(i32 1, 0){{.+}}%x.1
131
131
#[ no_mangle]
132
132
pub unsafe fn check_swap_pair ( x : ( char , NonZero < u32 > ) ) -> ( NonZero < u32 > , char ) {
133
- // OPT: %0 = icmp ule i32 %x.0, 1114111
133
+ // CHECK-NOT: icmp
134
+ // CHECK-NOT: assume
135
+ // OPT: %0 = icmp uge i32 %x.0, 1
134
136
// OPT: call void @llvm.assume(i1 %0)
135
- // OPT: %1 = icmp uge i32 %x.0, 1
137
+ // OPT: %1 = icmp ule i32 %x.1, 1114111
136
138
// OPT: call void @llvm.assume(i1 %1)
137
- // OPT: %2 = icmp uge i32 %x.1, 1
138
- // OPT: call void @llvm.assume(i1 %2)
139
- // OPT: %3 = icmp ule i32 %x.1, 1114111
140
- // OPT: call void @llvm.assume(i1 %3)
141
- // DBG-NOT: icmp
142
- // DBG-NOT: assume
139
+ // CHECK-NOT: icmp
140
+ // CHECK-NOT: assume
143
141
// CHECK: %[[P1:.+]] = insertvalue { i32, i32 } poison, i32 %x.0, 0
144
142
// CHECK: %[[P2:.+]] = insertvalue { i32, i32 } %[[P1]], i32 %x.1, 1
145
143
// CHECK: ret { i32, i32 } %[[P2]]
@@ -148,34 +146,34 @@ pub unsafe fn check_swap_pair(x: (char, NonZero<u32>)) -> (NonZero<u32>, char) {
148
146
}
149
147
150
148
// CHECK-LABEL: @check_bool_from_ordering(
149
+ // OPT-SAME: range(i8 -1, 2){{.+}}%x
151
150
#[ no_mangle]
152
151
pub unsafe fn check_bool_from_ordering ( x : std:: cmp:: Ordering ) -> bool {
153
- // OPT: %0 = icmp uge i8 %x, -1
154
- // OPT: %1 = icmp ule i8 %x, 1
155
- // OPT: %2 = or i1 %0, %1
156
- // OPT: call void @llvm.assume(i1 %2)
157
- // OPT: %3 = icmp ule i8 %x, 1
158
- // OPT: call void @llvm.assume(i1 %3)
159
- // DBG-NOT: icmp
160
- // DBG-NOT: assume
152
+ // CHECK-NOT: icmp
153
+ // CHECK-NOT: assume
154
+ // OPT: %0 = icmp ule i8 %x, 1
155
+ // OPT: call void @llvm.assume(i1 %0)
156
+ // CHECK-NOT: icmp
157
+ // CHECK-NOT: assume
161
158
// CHECK: %[[R:.+]] = trunc i8 %x to i1
162
159
// CHECK: ret i1 %[[R]]
163
160
164
161
transmute ( x)
165
162
}
166
163
167
164
// CHECK-LABEL: @check_bool_to_ordering(
165
+ // OPT-SAME: i1 {{.+}} %x
168
166
#[ no_mangle]
169
167
pub unsafe fn check_bool_to_ordering ( x : bool ) -> std:: cmp:: Ordering {
170
168
// CHECK: %_0 = zext i1 %x to i8
171
- // OPT: %0 = icmp ule i8 %_0, 1
172
- // OPT: call void @llvm. assume(i1 %0)
173
- // OPT: %1 = icmp uge i8 %_0, -1
174
- // OPT: %2 = icmp ule i8 %_0, 1
175
- // OPT: %3 = or i1 %1 , %2
176
- // OPT: call void @llvm.assume(i1 %3 )
177
- // DBG -NOT: icmp
178
- // DBG -NOT: assume
169
+ // CHECK-NOT: icmp
170
+ // CHECK-NOT: assume
171
+ // OPT: %0 = icmp uge i8 %_0, -1
172
+ // OPT: %1 = icmp ule i8 %_0, 1
173
+ // OPT: %2 = or i1 %0 , %1
174
+ // OPT: call void @llvm.assume(i1 %2 )
175
+ // CHECK -NOT: icmp
176
+ // CHECK -NOT: assume
179
177
// CHECK: ret i8 %_0
180
178
181
179
transmute ( x)
0 commit comments