rust/tests/codegen-llvm/issues/saturating-sub-index-139759.rs
okaneco 163594c8f8 Add regression test for saturating_sub bounds check issue
Add codegen test for issue where `valid_index.saturating_sub(X)` produced an
extra bounds check.
This was fixed by the LLVM upgrade.
2025-08-07 15:11:52 -04:00

20 lines
497 B
Rust

// 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
}
}