Skip to content

Commit

Permalink
Add a Few Codegen Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
veera-sivarajan committed Nov 2, 2024
1 parent c1db4dc commit d2aa910
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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 {{.*}}}
26 changes: 26 additions & 0 deletions tests/codegen/issues/issue-86109-eliminate-div-by-zero-check.rs
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit d2aa910

Please sign in to comment.