| // Tests that there's no bounds check within for-loop after asserting that | |
| // the range start and end are within bounds. | |
| //@ compile-flags: -Copt-level=3 | |
| #![crate_type = "lib"] | |
| // CHECK-LABEL: @no_bounds_check_after_assert | |
| #[no_mangle] | |
| fn no_bounds_check_after_assert(slice: &[u64], start: usize, end: usize) -> u64 { | |
| // CHECK-NOT: panic_bounds_check | |
| let mut total = 0; | |
| assert!(start < end && start < slice.len() && end <= slice.len()); | |
| for i in start..end { | |
| total += slice[i]; | |
| } | |
| total | |
| } |