Auto merge of #130454 - durin42:llvm-20-notrunc, r=workingjubilee
tests: allow trunc/select instructions to be missing On LLVM 20, these instructions already get eliminated, which at least partially satisfies a TODO. I'm not talented enough at using FileCheck to try and constrain this further, but if we really want to we could copy an LLVM 20 specific version of this test that would restore it to being CHECK-NEXT: insertvalue ... `@rustbot` label: +llvm-main r? `@DianQK`
This commit is contained in:
commit
60c3673456
@ -1,7 +1,10 @@
|
|||||||
//@ compile-flags: -O -Z merge-functions=disabled --edition=2021
|
//@ compile-flags: -O -Z merge-functions=disabled --edition=2021
|
||||||
//@ only-x86_64
|
//@ only-x86_64
|
||||||
// FIXME: Remove the `min-llvm-version`.
|
// FIXME: Remove the `min-llvm-version`.
|
||||||
//@ min-llvm-version: 19
|
//@ revisions: NINETEEN TWENTY
|
||||||
|
//@[NINETEEN] min-llvm-version: 19
|
||||||
|
//@[NINETEEN] ignore-llvm-version: 20-99
|
||||||
|
//@[TWENTY] min-llvm-version: 20
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
#![feature(try_blocks)]
|
#![feature(try_blocks)]
|
||||||
@ -9,14 +12,14 @@
|
|||||||
use std::ops::ControlFlow::{self, Break, Continue};
|
use std::ops::ControlFlow::{self, Break, Continue};
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
// FIXME: The `trunc` and `select` instructions can be eliminated.
|
|
||||||
// CHECK-LABEL: @option_nop_match_32
|
// CHECK-LABEL: @option_nop_match_32
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub fn option_nop_match_32(x: Option<u32>) -> Option<u32> {
|
pub fn option_nop_match_32(x: Option<u32>) -> Option<u32> {
|
||||||
// CHECK: start:
|
// CHECK: start:
|
||||||
// CHECK-NEXT: [[TRUNC:%.*]] = trunc nuw i32 %0 to i1
|
// NINETEEN-NEXT: [[TRUNC:%.*]] = trunc nuw i32 %0 to i1
|
||||||
// CHECK-NEXT: [[FIRST:%.*]] = select i1 [[TRUNC]], i32 %0
|
// NINETEEN-NEXT: [[FIRST:%.*]] = select i1 [[TRUNC]], i32 %0
|
||||||
// CHECK-NEXT: insertvalue { i32, i32 } poison, i32 [[FIRST]]
|
// NINETEEN-NEXT: insertvalue { i32, i32 } poison, i32 [[FIRST]], 0
|
||||||
|
// TWENTY-NEXT: insertvalue { i32, i32 } poison, i32 %0, 0
|
||||||
// CHECK-NEXT: insertvalue { i32, i32 }
|
// CHECK-NEXT: insertvalue { i32, i32 }
|
||||||
// CHECK-NEXT: ret { i32, i32 }
|
// CHECK-NEXT: ret { i32, i32 }
|
||||||
match x {
|
match x {
|
||||||
|
Loading…
Reference in New Issue
Block a user