Don't codegen expect
in opt-level=0
This commit is contained in:
parent
842d6fc32e
commit
5b96ae7106
4 changed files with 14 additions and 14 deletions
|
@ -187,9 +187,7 @@ impl<'ll, 'tcx> IntrinsicCallMethods<'tcx> for Builder<'_, 'll, 'tcx> {
|
|||
Some(instance),
|
||||
)
|
||||
}
|
||||
sym::likely => {
|
||||
self.call_intrinsic("llvm.expect.i1", &[args[0].immediate(), self.const_bool(true)])
|
||||
}
|
||||
sym::likely => self.expect(args[0].immediate(), true),
|
||||
sym::is_val_statically_known => {
|
||||
let intrinsic_type = args[0].layout.immediate_llvm_type(self.cx);
|
||||
let kind = self.type_kind(intrinsic_type);
|
||||
|
@ -210,8 +208,7 @@ impl<'ll, 'tcx> IntrinsicCallMethods<'tcx> for Builder<'_, 'll, 'tcx> {
|
|||
self.const_bool(false)
|
||||
}
|
||||
}
|
||||
sym::unlikely => self
|
||||
.call_intrinsic("llvm.expect.i1", &[args[0].immediate(), self.const_bool(false)]),
|
||||
sym::unlikely => self.expect(args[0].immediate(), false),
|
||||
sym::select_unpredictable => {
|
||||
let cond = args[0].immediate();
|
||||
assert_eq!(args[1].layout, args[2].layout);
|
||||
|
@ -604,11 +601,17 @@ impl<'ll, 'tcx> IntrinsicCallMethods<'tcx> for Builder<'_, 'll, 'tcx> {
|
|||
}
|
||||
|
||||
fn assume(&mut self, val: Self::Value) {
|
||||
self.call_intrinsic("llvm.assume", &[val]);
|
||||
if self.cx.sess().opts.optimize != rustc_session::config::OptLevel::No {
|
||||
self.call_intrinsic("llvm.assume", &[val]);
|
||||
}
|
||||
}
|
||||
|
||||
fn expect(&mut self, cond: Self::Value, expected: bool) -> Self::Value {
|
||||
self.call_intrinsic("llvm.expect.i1", &[cond, self.const_bool(expected)])
|
||||
if self.cx.sess().opts.optimize != rustc_session::config::OptLevel::No {
|
||||
self.call_intrinsic("llvm.expect.i1", &[cond, self.const_bool(expected)])
|
||||
} else {
|
||||
cond
|
||||
}
|
||||
}
|
||||
|
||||
fn type_test(&mut self, pointer: Self::Value, typeid: Self::Value) -> Self::Value {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue