| // LLVM 17 realizes double panic is not possible and doesn't generate calls |
| // to panic_cannot_unwind. |
| //@ compile-flags: -O |
| //@ ignore-debug: plain old debug assertions |
| //@ needs-unwind |
| #![crate_type = "lib"] |
| #![feature(shrink_to)] |
| |
| // Make sure that `Vec::shrink_to_fit` never emits panics via `RawVec::shrink_to_fit`, |
| // "Tried to shrink to a larger capacity", because the length is *always* <= capacity. |
| |
| // CHECK-LABEL: @shrink_to_fit |
| #[no_mangle] |
| pub fn shrink_to_fit(vec: &mut Vec<u32>) { |
| // CHECK-NOT: panic |
| vec.shrink_to_fit(); |
| } |
| |
| // CHECK-LABEL: @issue71861 |
| #[no_mangle] |
| pub fn issue71861(vec: Vec<u32>) -> Box<[u32]> { |
| // CHECK-NOT: panic |
| vec.into_boxed_slice() |
| } |
| |
| // CHECK-LABEL: @issue75636 |
| #[no_mangle] |
| pub fn issue75636<'a>(iter: &[&'a str]) -> Box<[&'a str]> { |
| // CHECK-NOT: panic |
| iter.iter().copied().collect() |
| } |