// compile-flags: -C no-prepopulate-passes | |
#![crate_type = "lib"] | |
#![feature(core_intrinsics)] | |
use std::intrinsics::{likely,unlikely}; | |
#[no_mangle] | |
pub fn check_likely(x: i32, y: i32) -> Option<i32> { | |
unsafe { | |
// CHECK: call i1 @llvm.expect.i1(i1 %{{.*}}, i1 true) | |
if likely(x == y) { | |
None | |
} else { | |
Some(x + y) | |
} | |
} | |
} | |
#[no_mangle] | |
pub fn check_unlikely(x: i32, y: i32) -> Option<i32> { | |
unsafe { | |
// CHECK: call i1 @llvm.expect.i1(i1 %{{.*}}, i1 false) | |
if unlikely(x == y) { | |
None | |
} else { | |
Some(x + y) | |
} | |
} | |
} | |