| // LLVM 17 realizes double panic is not possible and doesn't generate calls | |
| // to panic_cannot_unwind. | |
| //@ compile-flags: -Copt-level=3 | |
| //@ ignore-std-debug-assertions (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() | |
| } |