1
1
//@ compile-flags: -Copt-level=3 -Z merge-functions=disabled
2
2
//@ edition: 2021
3
3
//@ only-x86_64
4
- //@ revisions: NINETEEN TWENTY
5
- //@[NINETEEN] exact-llvm-major-version: 19
6
- //@[TWENTY] min-llvm-version: 20
4
+ //@ min-llvm-version: 20
7
5
8
6
#![ crate_type = "lib" ]
9
7
#![ feature( try_blocks) ]
@@ -16,15 +14,9 @@ use std::ptr::NonNull;
16
14
pub fn option_nop_match_32 ( x : Option < u32 > ) -> Option < u32 > {
17
15
// CHECK: start:
18
16
// CHECK-NEXT: [[TRUNC:%.*]] = trunc nuw i32 %0 to i1
19
-
20
- // NINETEEN-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i32 %0, i32 0
21
- // NINETEEN-NEXT: [[REG2:%.*]] = insertvalue { i32, i32 } poison, i32 [[SELECT]], 0
22
- // NINETEEN-NEXT: [[REG3:%.*]] = insertvalue { i32, i32 } [[REG2]], i32 %1, 1
23
-
24
- // TWENTY-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i32 %1, i32 undef
25
- // TWENTY-NEXT: [[REG2:%.*]] = insertvalue { i32, i32 } poison, i32 %0, 0
26
- // TWENTY-NEXT: [[REG3:%.*]] = insertvalue { i32, i32 } [[REG2]], i32 [[SELECT]], 1
27
-
17
+ // CHECK-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i32 %1, i32 undef
18
+ // CHECK-NEXT: [[REG2:%.*]] = insertvalue { i32, i32 } poison, i32 %0, 0
19
+ // CHECK-NEXT: [[REG3:%.*]] = insertvalue { i32, i32 } [[REG2]], i32 [[SELECT]], 1
28
20
// CHECK-NEXT: ret { i32, i32 } [[REG3]]
29
21
match x {
30
22
Some ( x) => Some ( x) ,
@@ -36,8 +28,8 @@ pub fn option_nop_match_32(x: Option<u32>) -> Option<u32> {
36
28
#[ no_mangle]
37
29
pub fn option_nop_traits_32 ( x : Option < u32 > ) -> Option < u32 > {
38
30
// CHECK: start:
39
- // TWENTY -NEXT: %[[IS_SOME:.+]] = trunc nuw i32 %0 to i1
40
- // TWENTY -NEXT: select i1 %[[IS_SOME]], i32 %1, i32 undef
31
+ // CHECK -NEXT: %[[IS_SOME:.+]] = trunc nuw i32 %0 to i1
32
+ // CHECK -NEXT: select i1 %[[IS_SOME]], i32 %1, i32 undef
41
33
// CHECK-NEXT: insertvalue { i32, i32 }
42
34
// CHECK-NEXT: insertvalue { i32, i32 }
43
35
// CHECK-NEXT: ret { i32, i32 }
@@ -95,14 +87,9 @@ pub fn control_flow_nop_traits_32(x: ControlFlow<i32, u32>) -> ControlFlow<i32,
95
87
pub fn option_nop_match_64 ( x : Option < u64 > ) -> Option < u64 > {
96
88
// CHECK: start:
97
89
// CHECK-NEXT: [[TRUNC:%.*]] = trunc nuw i64 %0 to i1
98
-
99
- // NINETEEN-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i64 %0, i64 0
100
- // NINETEEN-NEXT: [[REG2:%.*]] = insertvalue { i64, i64 } poison, i64 [[SELECT]], 0
101
- // NINETEEN-NEXT: [[REG3:%.*]] = insertvalue { i64, i64 } [[REG2]], i64 %1, 1
102
-
103
- // TWENTY-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i64 %1, i64 undef
104
- // TWENTY-NEXT: [[REG2:%.*]] = insertvalue { i64, i64 } poison, i64 %0, 0
105
- // TWENTY-NEXT: [[REG3:%.*]] = insertvalue { i64, i64 } [[REG2]], i64 [[SELECT]], 1
90
+ // CHECK-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i64 %1, i64 undef
91
+ // CHECK-NEXT: [[REG2:%.*]] = insertvalue { i64, i64 } poison, i64 %0, 0
92
+ // CHECK-NEXT: [[REG3:%.*]] = insertvalue { i64, i64 } [[REG2]], i64 [[SELECT]], 1
106
93
107
94
// CHECK-NEXT: ret { i64, i64 } [[REG3]]
108
95
match x {
@@ -115,8 +102,8 @@ pub fn option_nop_match_64(x: Option<u64>) -> Option<u64> {
115
102
#[ no_mangle]
116
103
pub fn option_nop_traits_64 ( x : Option < u64 > ) -> Option < u64 > {
117
104
// CHECK: start:
118
- // TWENTY -NEXT: %[[TRUNC:[0-9]+]] = trunc nuw i64 %0 to i1
119
- // TWENTY -NEXT: %[[SEL:\.[0-9]+]] = select i1 %[[TRUNC]], i64 %1, i64 undef
105
+ // CHECK -NEXT: %[[TRUNC:[0-9]+]] = trunc nuw i64 %0 to i1
106
+ // CHECK -NEXT: %[[SEL:\.[0-9]+]] = select i1 %[[TRUNC]], i64 %1, i64 undef
120
107
// CHECK-NEXT: insertvalue { i64, i64 }
121
108
// CHECK-NEXT: insertvalue { i64, i64 }
122
109
// CHECK-NEXT: ret { i64, i64 }
0 commit comments