Skip to main content

Module inline

Module inline 

Source
Expand description

Inlining pass for MIR functions.

Re-exportsยง

use std::ops::Range; ๐Ÿ”’
use std::ops::RangeFrom; ๐Ÿ”’
use std::debug_assert_matches; ๐Ÿ”’
use std::iter; ๐Ÿ”’
use rustc_abi::ExternAbi; ๐Ÿ”’
use rustc_abi::FieldIdx; ๐Ÿ”’
use rustc_attr_ir::lang_items::LangItem; ๐Ÿ”’
use rustc_attr_ir::InlineAttr; ๐Ÿ”’
use rustc_attr_ir::OptimizeAttr; ๐Ÿ”’
use rustc_hir::def::DefKind; ๐Ÿ”’
use rustc_hir::def_id::DefId; ๐Ÿ”’
use rustc_index::Idx; ๐Ÿ”’
use rustc_index::bit_set::DenseBitSet; ๐Ÿ”’
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs; ๐Ÿ”’
use rustc_middle::ty; ๐Ÿ”’
use rustc_middle::ty::Instance; ๐Ÿ”’
use rustc_middle::ty::InstanceKind; ๐Ÿ”’
use rustc_middle::ty::ShimKind; ๐Ÿ”’
use rustc_middle::ty::Ty; ๐Ÿ”’
use rustc_middle::ty::TyCtxt; ๐Ÿ”’
use rustc_middle::ty::TypeFlags; ๐Ÿ”’
use rustc_middle::ty::TypeVisitableExt; ๐Ÿ”’
use rustc_middle::ty::Unnormalized; ๐Ÿ”’
use rustc_session::config::DebugInfo; ๐Ÿ”’
use rustc_session::config::OptLevel; ๐Ÿ”’
use rustc_span::Spanned; ๐Ÿ”’
use rustc_span::bug; ๐Ÿ”’
use tracing::debug; ๐Ÿ”’
use tracing::instrument; ๐Ÿ”’
use tracing::instrument; ๐Ÿ”’
use tracing::trace; ๐Ÿ”’
use tracing::trace_span; ๐Ÿ”’
use crate::cost_checker::CostChecker; ๐Ÿ”’
use crate::cost_checker::is_call_like; ๐Ÿ”’
use crate::simplify::UsedInStmtLocals; ๐Ÿ”’
use crate::simplify::simplify_cfg; ๐Ÿ”’
use crate::validate::validate_types; ๐Ÿ”’
use crate::PassPolicy; ๐Ÿ”’
use crate::check_inline; ๐Ÿ”’
use crate::util; ๐Ÿ”’
use rustc_middle::mir::visit::*; ๐Ÿ”’
use rustc_middle::mir::*; ๐Ÿ”’

Modulesยง

cycle ๐Ÿ”’

Structsยง

CallSite ๐Ÿ”’
ForceInline
ForceInliner ๐Ÿ”’
Inline
Integrator ๐Ÿ”’
Integrator.
NormalInliner ๐Ÿ”’

Constantsยง

HISTORY_DEPTH_LIMIT ๐Ÿ”’
TOP_DOWN_DEPTH_LIMIT ๐Ÿ”’

Traitsยง

Inliner ๐Ÿ”’

Functionsยง

body_is_forwarder ๐Ÿ”’
check_codegen_attributes ๐Ÿ”’
Returns an error if inlining is not possible based on codegen attributes alone. A success indicates that inlining decision should be based on other criteria.
check_mir_is_available ๐Ÿ”’
create_temp_if_necessary ๐Ÿ”’
If arg is already a temporary, returns it. Otherwise, introduces a fresh temporary T and an instruction T = arg, and returns T.
inline ๐Ÿ”’
inline_call ๐Ÿ”’
make_call_args ๐Ÿ”’
new_call_temp ๐Ÿ”’
Introduces a new temporary into the caller body that is live for the duration of the call.
process_blocks ๐Ÿ”’
resolve_callsite ๐Ÿ”’
try_inlining ๐Ÿ”’
Attempts to inline a callsite into the caller body. When successful returns basic blocks containing the inlined body. Otherwise returns an error describing why inlining didnโ€™t take place.
try_instance_mir ๐Ÿ”’