Rollup merge of #82874 - erikdesjardins:cgtests, r=nagisa
Add codegen tests for some issues closed by LLVM 12 Namely #73031, #75546, and #77812
This commit is contained in:
commit
a5035c9995
3 changed files with 76 additions and 0 deletions
27
src/test/codegen/issue-73031.rs
Normal file
27
src/test/codegen/issue-73031.rs
Normal file
|
@ -0,0 +1,27 @@
|
|||
// min-llvm-version: 12.0.0
|
||||
// compile-flags: -O
|
||||
#![crate_type = "lib"]
|
||||
|
||||
// Test that LLVM can eliminate the unreachable `All::None` branch.
|
||||
|
||||
pub enum All {
|
||||
None,
|
||||
Foo,
|
||||
Bar,
|
||||
}
|
||||
|
||||
// CHECK-LABEL: @issue_73031
|
||||
#[no_mangle]
|
||||
pub fn issue_73031(a: &mut All, q: i32) -> i32 {
|
||||
*a = if q == 5 {
|
||||
All::Foo
|
||||
} else {
|
||||
All::Bar
|
||||
};
|
||||
match *a {
|
||||
// CHECK-NOT: panic
|
||||
All::None => panic!(),
|
||||
All::Foo => 1,
|
||||
All::Bar => 2,
|
||||
}
|
||||
}
|
16
src/test/codegen/issue-75546.rs
Normal file
16
src/test/codegen/issue-75546.rs
Normal file
|
@ -0,0 +1,16 @@
|
|||
// min-llvm-version: 12.0.0
|
||||
// compile-flags: -O
|
||||
#![crate_type = "lib"]
|
||||
|
||||
// Test that LLVM can eliminate the impossible `i == 0` check.
|
||||
|
||||
// CHECK-LABEL: @issue_75546
|
||||
#[no_mangle]
|
||||
pub fn issue_75546() {
|
||||
let mut i = 1u32;
|
||||
while i < u32::MAX {
|
||||
// CHECK-NOT: panic
|
||||
if i == 0 { panic!(); }
|
||||
i += 1;
|
||||
}
|
||||
}
|
33
src/test/codegen/issue-77812.rs
Normal file
33
src/test/codegen/issue-77812.rs
Normal file
|
@ -0,0 +1,33 @@
|
|||
// min-llvm-version: 12.0.0
|
||||
// compile-flags: -O
|
||||
#![crate_type = "lib"]
|
||||
|
||||
// Test that LLVM can eliminate the unreachable `Variant::Zero` branch.
|
||||
|
||||
#[derive(Copy, Clone, Eq, PartialEq)]
|
||||
pub enum Variant {
|
||||
Zero,
|
||||
One,
|
||||
Two,
|
||||
}
|
||||
|
||||
extern {
|
||||
fn exf1();
|
||||
fn exf2();
|
||||
}
|
||||
|
||||
pub static mut GLOBAL: Variant = Variant::Zero;
|
||||
|
||||
// CHECK-LABEL: @issue_77812
|
||||
#[no_mangle]
|
||||
pub unsafe fn issue_77812() {
|
||||
let g = GLOBAL;
|
||||
if g != Variant::Zero {
|
||||
match g {
|
||||
Variant::One => exf1(),
|
||||
Variant::Two => exf2(),
|
||||
// CHECK-NOT: panic
|
||||
Variant::Zero => panic!(),
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue