Trait rustc_middle::mir::MirPass

source ·
pub trait MirPass<'tcx> {
    // Required method
    fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>);

    // Provided methods
    fn name(&self) -> &'static str { ... }
    fn profiler_name(&self) -> &'static str { ... }
    fn is_enabled(&self, _sess: &Session) -> bool { ... }
    fn is_mir_dump_enabled(&self) -> bool { ... }
}
Expand description

A streamlined trait that you can implement to create a pass; the pass will be named after the type, and it will consist of a main loop that goes over each available MIR and applies run_pass.

Required Methods§

source

fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>)

Provided Methods§

source

fn name(&self) -> &'static str

source

fn profiler_name(&self) -> &'static str

source

fn is_enabled(&self, _sess: &Session) -> bool

Returns true if this pass is enabled with the current combination of compiler flags.

source

fn is_mir_dump_enabled(&self) -> bool

Implementors§

impl<'tcx> MirPass<'tcx> for PromoteTemps<'tcx>

impl<'tcx> MirPass<'tcx> for Validator

impl<'tcx> MirPass<'tcx> for SanityCheck

impl<'tcx> MirPass<'tcx> for InstrumentCoverage

impl<'tcx> MirPass<'tcx> for ConstDebugInfo

impl<'tcx> MirPass<'tcx> for EarlyOtherwiseBranch

impl<'tcx> MirPass<'tcx> for DeduplicateBlocks

impl<'tcx> MirPass<'tcx> for Inline

impl<'tcx> MirPass<'tcx> for ConstGoto

impl<'tcx> MirPass<'tcx> for DataflowConstProp

impl<'tcx> MirPass<'tcx> for EnumSizeOpt

impl<'tcx> MirPass<'tcx> for AddMovesForPackedDrops

impl<'tcx> MirPass<'tcx> for DestinationPropagation

impl<'tcx> MirPass<'tcx> for CheckAlignment

impl<'tcx> MirPass<'tcx> for RemoveUninitDrops

impl<'tcx> MirPass<'tcx> for Derefer

impl<'tcx> MirPass<'tcx> for RemoveNoopLandingPads

impl<'tcx> MirPass<'tcx> for ReferencePropagation

impl<'tcx> MirPass<'tcx> for GVN

impl<'tcx> MirPass<'tcx> for SimplifyCfg

impl<'tcx> MirPass<'tcx> for RemoveUnneededDrops

impl<'tcx> MirPass<'tcx> for SimplifyLocals

impl<'tcx> MirPass<'tcx> for RemoveZsts

impl<'tcx> MirPass<'tcx> for RemovePlaceMention

impl<'tcx> MirPass<'tcx> for InstSimplify

impl<'tcx> MirPass<'tcx> for StateTransform

impl<'tcx> MirPass<'tcx> for ReorderBasicBlocks

impl<'tcx> MirPass<'tcx> for SimplifyComparisonIntegral

impl<'tcx> MirPass<'tcx> for SeparateConstSwitch

impl<'tcx> MirPass<'tcx> for AddCallGuards

impl<'tcx> MirPass<'tcx> for LowerSliceLenCalls

impl<'tcx, T> MirPass<'tcx> for Lint<T>where T: MirLint<'tcx>,

impl<'tcx> MirPass<'tcx> for UninhabitedEnumBranching

impl<'tcx> MirPass<'tcx> for ConstProp

impl<'tcx> MirPass<'tcx> for CopyProp

impl<'tcx> MirPass<'tcx> for MatchBranchSimplification

impl<'tcx> MirPass<'tcx> for MultipleReturnTerminators

impl<'tcx> MirPass<'tcx> for LowerIntrinsics

impl<'tcx> MirPass<'tcx> for CtfeLimit

impl<'tcx> MirPass<'tcx> for RevealAll

impl<'tcx> MirPass<'tcx> for DeadStoreElimination

impl<'tcx> MirPass<'tcx> for RemoveStorageMarkers

impl<'tcx> MirPass<'tcx> for ElaborateDrops

impl<'tcx> MirPass<'tcx> for AddRetag

impl<'tcx, T> MirPass<'tcx> for WithMinOptLevel<T>where T: MirPass<'tcx>,

impl<'tcx> MirPass<'tcx> for ReorderLocals

impl<'tcx> MirPass<'tcx> for ElaborateBoxDerefs

impl<'tcx> MirPass<'tcx> for NormalizeArrayLen

impl<'tcx> MirPass<'tcx> for AbortUnwindingCalls

impl<'tcx> MirPass<'tcx> for Marker

impl<'tcx> MirPass<'tcx> for CleanupPostBorrowck

impl<'tcx> MirPass<'tcx> for Subtyper

impl<'tcx> MirPass<'tcx> for RenameReturnPlace

impl<'tcx> MirPass<'tcx> for SimplifyConstCondition