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