1 // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
12 // compile-flags: -O -C panic=abort
13 #![crate_type = "lib"]
15 fn search<T: Ord + Eq>(arr: &mut [T], a: &T) -> Result<usize, ()> {
16 match arr.iter().position(|x| x == a) {
24 // CHECK-LABEL: @position_no_bounds_check
26 pub fn position_no_bounds_check(y: &mut [u32], x: &u32, z: &u32) -> bool {
27 // This contains "call assume" so we cannot just rule out all calls
28 // CHECK-NOT: panic_bounds_check
29 if let Ok(p) = search(y, x) {
36 // just to make sure that panicking really emits "panic_bounds_check" somewhere in the IR
37 // CHECK-LABEL: @test_check
39 pub fn test_check(y: &[i32]) -> i32 {
40 // CHECK: panic_bounds_check