Add a query for checking whether a function is an intrinsic.

This commit is contained in:
Oli Scherer 2022-05-13 13:50:21 +00:00
parent 18bd2dd5cd
commit 0a6b69106e
17 changed files with 52 additions and 45 deletions

View file

@ -418,8 +418,7 @@ impl<'tcx> Inliner<'tcx> {
}
}
// Don't give intrinsics the extra penalty for calls
let f = tcx.fn_sig(def_id);
if f.abi() == Abi::RustIntrinsic || f.abi() == Abi::PlatformIntrinsic {
if tcx.is_intrinsic(def_id) {
cost += INSTR_COST;
} else {
cost += CALL_PENALTY;

View file

@ -6,7 +6,6 @@ use rustc_middle::ty::subst::SubstsRef;
use rustc_middle::ty::{self, Ty, TyCtxt};
use rustc_span::symbol::{sym, Symbol};
use rustc_span::Span;
use rustc_target::spec::abi::Abi;
pub struct LowerIntrinsics;
@ -139,8 +138,7 @@ fn resolve_rust_intrinsic<'tcx>(
func_ty: Ty<'tcx>,
) -> Option<(Symbol, SubstsRef<'tcx>)> {
if let ty::FnDef(def_id, substs) = *func_ty.kind() {
let fn_sig = func_ty.fn_sig(tcx);
if let Abi::RustIntrinsic | Abi::PlatformIntrinsic = fn_sig.abi() {
if tcx.is_intrinsic(def_id) {
return Some((tcx.item_name(def_id), substs));
}
}