-// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
// no-system-llvm
-// compile-flags: -O
+// compile-flags: -O -C panic=abort
#![crate_type = "lib"]
fn search<T: Ord + Eq>(arr: &mut [T], a: &T) -> Result<usize, ()> {
#[no_mangle]
pub fn position_no_bounds_check(y: &mut [u32], x: &u32, z: &u32) -> bool {
// This contains "call assume" so we cannot just rule out all calls
- // CHECK-NOT: panic
+ // CHECK-NOT: panic_bounds_check
if let Ok(p) = search(y, x) {
y[p] == *z
} else {
}
}
-// just to make sure that panicking really emits "panic" somewhere in the IR
+// just to make sure that panicking really emits "panic_bounds_check" somewhere in the IR
// CHECK-LABEL: @test_check
#[no_mangle]
-pub fn test_check() {
- // CHECK: panic
- unreachable!()
+pub fn test_check(y: &[i32]) -> i32 {
+ // CHECK: panic_bounds_check
+ y[12]
}