// Test that calculating an index with saturating subtraction from an in-bounds | |
// index doesn't generate another bounds check. | |
//@ compile-flags: -Copt-level=3 | |
//@ min-llvm-version: 21 | |
#![crate_type = "lib"] | |
// CHECK-LABEL: @bounds_check_is_elided | |
#[no_mangle] | |
pub fn bounds_check_is_elided(s: &[i32], index: usize) -> i32 { | |
// CHECK-NOT: panic_bounds_check | |
if index < s.len() { | |
let lower_bound = index.saturating_sub(1); | |
s[lower_bound] | |
} else { | |
-1 | |
} | |
} |