|
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 |
| -//@ min-llvm-version: 19 |
| 4 | +//@ revisions: NINETEEN TWENTY |
| 5 | +//@[NINETEEN] min-llvm-version: 19 |
| 6 | +//@[NINETEEN] ignore-llvm-version: 20-99 |
| 7 | +//@[TWENTY] min-llvm-version: 20 |
5 | 8 |
|
6 | 9 | #![crate_type = "lib"]
|
7 | 10 | #![feature(try_blocks)]
|
8 | 11 |
|
9 | 12 | use std::ops::ControlFlow::{self, Break, Continue};
|
10 | 13 | use std::ptr::NonNull;
|
11 | 14 |
|
12 |
| -// FIXME: The `trunc` and `select` instructions can be eliminated. |
13 | 15 | // CHECK-LABEL: @option_nop_match_32
|
14 | 16 | #[no_mangle]
|
15 | 17 | pub fn option_nop_match_32(x: Option<u32>) -> Option<u32> {
|
16 | 18 | // CHECK: start:
|
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]] |
| 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 |
20 | 23 | // CHECK-NEXT: insertvalue { i32, i32 }
|
21 | 24 | // CHECK-NEXT: ret { i32, i32 }
|
22 | 25 | match x {
|
|
0 commit comments