//@ compile-flags: -Copt-level=3 //@ needs-deterministic-layouts // Currently Vec and &[T] have layouts that start with (pointer, len) // which makes the conversion branchless. // A nice-to-have property, not guaranteed. #![crate_type = "cdylib"] // CHECK-LABEL: @branchless_cow_slices #[no_mangle] pub fn branchless_cow_slices<'a>(cow: &'a std::borrow::Cow<'a, [u8]>) -> &'a [u8] { // CHECK-NOT: br // CHECK-NOT: select // CHECK-NOT: icmp // CHECK: ret { ptr, {{i32|i64}} } &*cow }