//@ compile-flags: -O #![feature(core_intrinsics)] #![crate_type = "lib"] #[no_mangle] pub fn test_int(p: bool, a: u64, b: u64) -> u64 { // CHECK-LABEL: define{{.*}} @test_int // CHECK: select i1 %p, i64 %a, i64 %b, !unpredictable core::intrinsics::select_unpredictable(p, a, b) } #[no_mangle] pub fn test_pair(p: bool, a: (u64, u64), b: (u64, u64)) -> (u64, u64) { // CHECK-LABEL: define{{.*}} @test_pair // CHECK: select i1 %p, {{.*}}, !unpredictable core::intrinsics::select_unpredictable(p, a, b) } struct Large { e: [u64; 100], } #[no_mangle] pub fn test_struct(p: bool, a: Large, b: Large) -> Large { // CHECK-LABEL: define{{.*}} @test_struct // CHECK: select i1 %p, {{.*}}, !unpredictable core::intrinsics::select_unpredictable(p, a, b) } #[no_mangle] pub fn test_zst(p: bool, a: (), b: ()) -> () { // CHECK-LABEL: define{{.*}} @test_zst core::intrinsics::select_unpredictable(p, a, b) }