6
6
7
7
// Check each of the 3 cases for `codegen_get_discr`.
8
8
9
+ // FIXME: once our min-bar LLVM has `range` attributes, update the various
10
+ // tests here to no longer have the `range`s and `nsw`s as optional.
11
+
9
12
// Case 0: One tagged variant.
10
13
pub enum Enum0 {
11
14
A ( bool ) ,
@@ -144,7 +147,7 @@ pub enum MiddleNiche {
144
147
145
148
// CHECK-LABEL: define noundef{{( range\(i8 -?[0-9]+, -?[0-9]+\))?}} i8 @match4(i8{{.+}}%0)
146
149
// CHECK-NEXT: start:
147
- // CHECK-NEXT: %[[REL_VAR:.+]] = add nsw i8 %0, -2
150
+ // CHECK-NEXT: %[[REL_VAR:.+]] = add{{( nsw)?}} i8 %0, -2
148
151
// CHECK-NEXT: %[[IS_NICHE:.+]] = icmp ult i8 %[[REL_VAR]], 5
149
152
// CHECK-NEXT: %[[NOT_IMPOSSIBLE:.+]] = icmp ne i8 %[[REL_VAR]], 2
150
153
// CHECK-NEXT: call void @llvm.assume(i1 %[[NOT_IMPOSSIBLE]])
@@ -164,7 +167,7 @@ pub fn match4(e: MiddleNiche) -> u8 {
164
167
165
168
// CHECK-LABEL: define{{.+}}i1 @match4_is_c(i8{{.+}}%e)
166
169
// CHECK-NEXT: start
167
- // CHECK-NEXT: %[[REL_VAR:.+]] = add nsw i8 %e, -2
170
+ // CHECK-NEXT: %[[REL_VAR:.+]] = add{{( nsw)?}} i8 %e, -2
168
171
// CHECK-NEXT: %[[NOT_NICHE:.+]] = icmp ugt i8 %[[REL_VAR]], 4
169
172
// CHECK-NEXT: %[[NOT_IMPOSSIBLE:.+]] = icmp ne i8 %[[REL_VAR]], 2
170
173
// CHECK-NEXT: call void @llvm.assume(i1 %[[NOT_IMPOSSIBLE]])
@@ -448,7 +451,7 @@ pub enum HugeVariantIndex {
448
451
449
452
// CHECK-LABEL: define noundef{{( range\(i8 [0-9]+, [0-9]+\))?}} i8 @match5(i8{{.+}}%0)
450
453
// CHECK-NEXT: start:
451
- // CHECK-NEXT: %[[REL_VAR:.+]] = add nsw i8 %0, -2
454
+ // CHECK-NEXT: %[[REL_VAR:.+]] = add{{( nsw)?}} i8 %0, -2
452
455
// CHECK-NEXT: %[[REL_VAR_WIDE:.+]] = zext i8 %[[REL_VAR]] to i64
453
456
// CHECK-NEXT: %[[IS_NICHE:.+]] = icmp ult i8 %[[REL_VAR]], 3
454
457
// CHECK-NEXT: %[[NOT_IMPOSSIBLE:.+]] = icmp ne i8 %[[REL_VAR]], 1
0 commit comments