Skip to content

Commit d50b4f1

Browse files
committed
Adjust enum-discriminant-eq.rs for LLVM 21
The two xors get folded into the select.
1 parent 56d9ed7 commit d50b4f1

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

tests/codegen-llvm/enum/enum-discriminant-eq.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
//@ compile-flags: -Copt-level=3 -Zmerge-functions=disabled
22
//@ min-llvm-version: 20
33
//@ only-64bit
4+
//@ revisions: LLVM20 LLVM21
5+
//@ [LLVM21] min-llvm-version: 21
6+
//@ [LLVM20] max-llvm-major-version: 20
47

58
// The `derive(PartialEq)` on enums with field-less variants compares discriminants,
69
// so make sure we emit that in some reasonable way.
@@ -137,17 +140,20 @@ pub fn mid_nz32_eq_discr(a: Mid<NonZero<u32>>, b: Mid<NonZero<u32>>) -> bool {
137140
pub fn mid_ac_eq_discr(a: Mid<AC>, b: Mid<AC>) -> bool {
138141
// CHECK-LABEL: @mid_ac_eq_discr(
139142

140-
// CHECK: %[[A_REL_DISCR:.+]] = xor i8 %a, -128
143+
// LLVM20: %[[A_REL_DISCR:.+]] = xor i8 %a, -128
141144
// CHECK: %[[A_IS_NICHE:.+]] = icmp slt i8 %a, 0
142145
// CHECK: %[[A_NOT_HOLE:.+]] = icmp ne i8 %a, -127
143146
// CHECK: tail call void @llvm.assume(i1 %[[A_NOT_HOLE]])
144-
// CHECK: %[[A_DISCR:.+]] = select i1 %[[A_IS_NICHE]], i8 %[[A_REL_DISCR]], i8 1
147+
// LLVM20: %[[A_DISCR:.+]] = select i1 %[[A_IS_NICHE]], i8 %[[A_REL_DISCR]], i8 1
145148

146-
// CHECK: %[[B_REL_DISCR:.+]] = xor i8 %b, -128
149+
// LLVM20: %[[B_REL_DISCR:.+]] = xor i8 %b, -128
147150
// CHECK: %[[B_IS_NICHE:.+]] = icmp slt i8 %b, 0
148151
// CHECK: %[[B_NOT_HOLE:.+]] = icmp ne i8 %b, -127
149152
// CHECK: tail call void @llvm.assume(i1 %[[B_NOT_HOLE]])
150-
// CHECK: %[[B_DISCR:.+]] = select i1 %[[B_IS_NICHE]], i8 %[[B_REL_DISCR]], i8 1
153+
// LLVM20: %[[B_DISCR:.+]] = select i1 %[[B_IS_NICHE]], i8 %[[B_REL_DISCR]], i8 1
154+
155+
// LLVM21: %[[A_DISCR:.+]] = select i1 %[[A_IS_NICHE]], i8 %a, i8 -127
156+
// LLVM21: %[[B_DISCR:.+]] = select i1 %[[B_IS_NICHE]], i8 %b, i8 -127
151157

152158
// CHECK: %[[R:.+]] = icmp eq i8 %[[A_DISCR]], %[[B_DISCR]]
153159
// CHECK: ret i1 %[[R]]

0 commit comments

Comments
 (0)