Skip to main content

MirPass

Trait MirPass 

Source
pub(crate) trait MirPass<'tcx> {
    // Required methods
    fn policy(&self, sess: &Session) -> PassPolicy;
    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_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 policy(&self, sess: &Session) -> PassPolicy

Describes how this pass is enabled and which mechanisms may disable it.

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_mir_dump_enabled(&self) -> bool

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl MirPass<'_> for UnreachablePropagation

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<'tcx> MirPass<'tcx> for CheckEnums

Source§

impl<'tcx> MirPass<'tcx> for CheckNull

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<'tcx> MirPass<'tcx> for EraseDerefTemps

Source§

impl<'tcx> MirPass<'tcx> for ForceInline

Source§

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

Source§

impl<'tcx> MirPass<'tcx> for ImpossibleClauses

Source§

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

Source§

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

Source§

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

Source§

impl<'tcx> MirPass<'tcx> for JumpThreading

Source§

impl<'tcx> MirPass<'tcx> for LintAndRemoveUninhabited

Source§

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

Source§

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

Source§

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

Source§

impl<'tcx> MirPass<'tcx> for MentionedItems

Source§

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

Source§

impl<'tcx> MirPass<'tcx> for PostAnalysisNormalize

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<'tcx> MirPass<'tcx> for ScalarReplacementOfAggregates

Source§

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

Source§

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

Source§

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

A pass that replaces a branch with a goto when its condition is known.

Source§

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

Source§

impl<'tcx> MirPass<'tcx> for SingleUseConsts

Source§

impl<'tcx> MirPass<'tcx> for SsaRangePropagation

Source§

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

Source§

impl<'tcx> MirPass<'tcx> for StripDebugInfo

Source§

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

Source§

impl<'tcx> MirPass<'tcx> for UnreachableEnumBranching

Source§

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