Add a Few Codegen Tests
This commit is contained in:
parent
c1db4dc242
commit
d2aa91054b
@ -0,0 +1,19 @@
|
||||
//! Test for https://github.com/rust-lang/rust/issues/64219
|
||||
//! Check if `noreturn` attribute is applied on calls to
|
||||
//! function pointers returning `!` (never type).
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
||||
extern "C" {
|
||||
static FOO: fn() -> !;
|
||||
}
|
||||
|
||||
// CHECK-LABEL: @foo
|
||||
#[no_mangle]
|
||||
pub unsafe fn foo() {
|
||||
// CHECK: call
|
||||
// CHECK-SAME: [[NUM:#[0-9]+$]]
|
||||
FOO();
|
||||
}
|
||||
|
||||
// CHECK: attributes [[NUM]] = {{{.*}} noreturn {{.*}}}
|
@ -0,0 +1,26 @@
|
||||
//@ compile-flags: -O
|
||||
//! Test for https://github.com/rust-lang/rust/issues/86109
|
||||
//! Check LLVM can eliminate the impossible division by zero check by
|
||||
//! ensuring there is no call (to panic) instruction.
|
||||
//!
|
||||
//! This has been fixed since `rustc 1.70.0`.
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
||||
type T = i16;
|
||||
|
||||
// CHECK-LABEL: @foo
|
||||
#[no_mangle]
|
||||
pub fn foo(start: T) -> T {
|
||||
// CHECK-NOT: panic
|
||||
if start <= 0 {
|
||||
return 0;
|
||||
}
|
||||
let mut count = 0;
|
||||
for i in start..10_000 {
|
||||
if 752 % i != 0 {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
count
|
||||
}
|
Loading…
Reference in New Issue
Block a user