Skip to content

Commit 85d6d9c

Browse files
Add a Few Codegen Tests
1 parent c1db4dc commit 85d6d9c

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//! Test for https://github.com/rust-lang/rust/issues/64219
2+
//! Check if `noreturn` attribute is applied on calls to
3+
//! function pointers returning `!` (never type).
4+
5+
#![crate_type = "lib"]
6+
7+
extern "C" {
8+
static FOO: fn() -> !;
9+
}
10+
11+
// CHECK-LABEL: @foo
12+
#[no_mangle]
13+
pub unsafe fn foo() {
14+
// CHECK: call
15+
// CHECK-SAME: [[NUM:#[0-9]+$]]
16+
FOO();
17+
}
18+
19+
// CHECK: attributes [[NUM]] = {{{.*}} noreturn {{.*}}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//@ compile-flags: -O
2+
//! Test for https://github.com/rust-lang/rust/issues/86109
3+
//! Check LLVM can eliminate the impossible division by zero check by
4+
//! ensuring there is no call (to panic) instruction.
5+
//!
6+
//! This has been fixed since `rustc 1.70.0`.
7+
8+
#![crate_type = "lib"]
9+
10+
type T = i16;
11+
12+
// CHECK-LABEL: @foo
13+
#[no_mangle]
14+
pub fn foo(start: T) -> T {
15+
// CHECK-NOT: call
16+
// CHECK: ret
17+
if start <= 0 {
18+
return 0;
19+
}
20+
let mut count = 0;
21+
for i in start..10_000 {
22+
if 752 % i != 0 {
23+
count += 1;
24+
}
25+
}
26+
count
27+
}

0 commit comments

Comments
 (0)