|
1 | 1 | //@ compile-flags: -O -Z merge-functions=disabled --edition=2021
|
2 | 2 | //@ only-x86_64
|
3 | 3 | // FIXME: Remove the `min-llvm-version`.
|
4 |
| -//@ revisions: NINETEEN TWENTY |
5 |
| -//@[NINETEEN] min-llvm-version: 19 |
6 |
| -//@[NINETEEN] ignore-llvm-version: 20-99 |
7 |
| -//@[TWENTY] min-llvm-version: 20 |
| 4 | +//@ min-llvm-version: 19 |
8 | 5 |
|
9 | 6 | #![crate_type = "lib"]
|
10 | 7 | #![feature(try_blocks)]
|
11 | 8 |
|
12 | 9 | use std::ops::ControlFlow::{self, Break, Continue};
|
13 | 10 | use std::ptr::NonNull;
|
14 | 11 |
|
| 12 | +// FIXME: The `trunc` and `select` instructions can be eliminated. |
15 | 13 | // CHECK-LABEL: @option_nop_match_32
|
16 | 14 | #[no_mangle]
|
17 | 15 | pub fn option_nop_match_32(x: Option<u32>) -> Option<u32> {
|
18 | 16 | // CHECK: start:
|
19 |
| - // NINETEEN-NEXT: [[TRUNC:%.*]] = trunc nuw i32 %0 to i1 |
20 |
| - // NINETEEN-NEXT: [[FIRST:%.*]] = select i1 [[TRUNC]], i32 %0 |
21 |
| - // NINETEEN-NEXT: insertvalue { i32, i32 } poison, i32 [[FIRST]], 0 |
22 |
| - // TWENTY-NEXT: insertvalue { i32, i32 } poison, i32 %0, 0 |
| 17 | + // CHECK-NEXT: [[TRUNC:%.*]] = trunc nuw i32 %0 to i1 |
| 18 | + // CHECK-NEXT: [[FIRST:%.*]] = select i1 [[TRUNC]], i32 %0 |
| 19 | + // CHECK-NEXT: insertvalue { i32, i32 } poison, i32 [[FIRST]] |
23 | 20 | // CHECK-NEXT: insertvalue { i32, i32 }
|
24 | 21 | // CHECK-NEXT: ret { i32, i32 }
|
25 | 22 | match x {
|
|
0 commit comments