about summary refs log tree commit diff
path: root/tests/codegen-llvm/issues/iter-max-no-unwrap-failed-129583.rs
blob: 4c4eebeabb5fa24adf7773eb0d7188bbd2b5628a (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
27
28
29
30
// Tests that `unwrap` is optimized out when the slice has a known length.
// The iterator may unroll for values smaller than a certain threshold so we
// use a larger value to prevent unrolling.

//@ compile-flags: -Copt-level=3

#![crate_type = "lib"]

// CHECK-LABEL: @infallible_max_not_unrolled
#[no_mangle]
pub fn infallible_max_not_unrolled(x: &[u8; 1024]) -> u8 {
    // CHECK-NOT: panic
    // CHECK-NOT: unwrap_failed
    *x.iter().max().unwrap()
}

// CHECK-LABEL: @infallible_max_unrolled
#[no_mangle]
pub fn infallible_max_unrolled(x: &[u8; 10]) -> u8 {
    // CHECK-NOT: panic
    // CHECK-NOT: unwrap_failed
    *x.iter().max().unwrap()
}

// CHECK-LABEL: @may_panic_max
#[no_mangle]
pub fn may_panic_max(x: &[u8]) -> u8 {
    // CHECK: unwrap_failed
    *x.iter().max().unwrap()
}