about summary refs log tree commit diff
path: root/tests/codegen/issues/issue-86109-eliminate-div-by-zero-check.rs
blob: 345c09738b6104d43b5eb3b008a6bb7355bd5a1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//@ compile-flags: -Copt-level=3
//! 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
}