66
77// Check each of the 3 cases for `codegen_get_discr`.
88
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+
912// Case 0: One tagged variant.
1013pub enum Enum0 {
1114 A ( bool ) ,
@@ -144,7 +147,7 @@ pub enum MiddleNiche {
144147
145148// CHECK-LABEL: define noundef{{( range\(i8 -?[0-9]+, -?[0-9]+\))?}} i8 @match4(i8{{.+}}%0)
146149// CHECK-NEXT: start:
147- // CHECK-NEXT: %[[REL_VAR:.+]] = add nsw i8 %0, -2
150+ // CHECK-NEXT: %[[REL_VAR:.+]] = add{{( nsw)?}} i8 %0, -2
148151// CHECK-NEXT: %[[IS_NICHE:.+]] = icmp ult i8 %[[REL_VAR]], 5
149152// CHECK-NEXT: %[[NOT_IMPOSSIBLE:.+]] = icmp ne i8 %[[REL_VAR]], 2
150153// CHECK-NEXT: call void @llvm.assume(i1 %[[NOT_IMPOSSIBLE]])
@@ -164,7 +167,7 @@ pub fn match4(e: MiddleNiche) -> u8 {
164167
165168// CHECK-LABEL: define{{.+}}i1 @match4_is_c(i8{{.+}}%e)
166169// CHECK-NEXT: start
167- // CHECK-NEXT: %[[REL_VAR:.+]] = add nsw i8 %e, -2
170+ // CHECK-NEXT: %[[REL_VAR:.+]] = add{{( nsw)?}} i8 %e, -2
168171// CHECK-NEXT: %[[NOT_NICHE:.+]] = icmp ugt i8 %[[REL_VAR]], 4
169172// CHECK-NEXT: %[[NOT_IMPOSSIBLE:.+]] = icmp ne i8 %[[REL_VAR]], 2
170173// CHECK-NEXT: call void @llvm.assume(i1 %[[NOT_IMPOSSIBLE]])
@@ -448,7 +451,7 @@ pub enum HugeVariantIndex {
448451
449452// CHECK-LABEL: define noundef{{( range\(i8 [0-9]+, [0-9]+\))?}} i8 @match5(i8{{.+}}%0)
450453// CHECK-NEXT: start:
451- // CHECK-NEXT: %[[REL_VAR:.+]] = add nsw i8 %0, -2
454+ // CHECK-NEXT: %[[REL_VAR:.+]] = add{{( nsw)?}} i8 %0, -2
452455// CHECK-NEXT: %[[REL_VAR_WIDE:.+]] = zext i8 %[[REL_VAR]] to i64
453456// CHECK-NEXT: %[[IS_NICHE:.+]] = icmp ult i8 %[[REL_VAR]], 3
454457// CHECK-NEXT: %[[NOT_IMPOSSIBLE:.+]] = icmp ne i8 %[[REL_VAR]], 1
0 commit comments