rustc_mir_dataflow::framework::direction

Trait Direction

source
pub trait Direction {
    const IS_FORWARD: bool;
    const IS_BACKWARD: bool = _;

    // Required methods
    fn apply_effects_in_range<'tcx, A>(
        analysis: &mut A,
        state: &mut A::Domain,
        block: BasicBlock,
        block_data: &BasicBlockData<'tcx>,
        effects: RangeInclusive<EffectIndex>,
    )
       where A: Analysis<'tcx>;
    fn apply_effects_in_block<'mir, 'tcx, A>(
        analysis: &mut A,
        state: &mut A::Domain,
        block: BasicBlock,
        block_data: &'mir BasicBlockData<'tcx>,
        statement_effect: Option<&dyn Fn(BasicBlock, &mut A::Domain)>,
    ) -> TerminatorEdges<'mir, 'tcx>
       where A: Analysis<'tcx>;
    fn gen_kill_statement_effects_in_block<'tcx, A>(
        analysis: &mut A,
        trans: &mut GenKillSet<A::Idx>,
        block: BasicBlock,
        block_data: &BasicBlockData<'tcx>,
    )
       where A: GenKillAnalysis<'tcx>;
    fn visit_results_in_block<'mir, 'tcx, D, R>(
        state: &mut D,
        block: BasicBlock,
        block_data: &'mir BasicBlockData<'tcx>,
        results: &mut R,
        vis: &mut impl ResultsVisitor<'mir, 'tcx, R, Domain = D>,
    )
       where R: ResultsVisitable<'tcx, Domain = D>;
    fn join_state_into_successors_of<'tcx, A>(
        analysis: &mut A,
        body: &Body<'tcx>,
        exit_state: &mut A::Domain,
        block: BasicBlock,
        edges: TerminatorEdges<'_, 'tcx>,
        propagate: impl FnMut(BasicBlock, &A::Domain),
    )
       where A: Analysis<'tcx>;
}

Required Associated Constants§

Provided Associated Constants§

Required Methods§

source

fn apply_effects_in_range<'tcx, A>( analysis: &mut A, state: &mut A::Domain, block: BasicBlock, block_data: &BasicBlockData<'tcx>, effects: RangeInclusive<EffectIndex>, )
where A: Analysis<'tcx>,

Applies all effects between the given EffectIndexs.

effects.start() must precede or equal effects.end() in this direction.

source

fn apply_effects_in_block<'mir, 'tcx, A>( analysis: &mut A, state: &mut A::Domain, block: BasicBlock, block_data: &'mir BasicBlockData<'tcx>, statement_effect: Option<&dyn Fn(BasicBlock, &mut A::Domain)>, ) -> TerminatorEdges<'mir, 'tcx>
where A: Analysis<'tcx>,

source

fn gen_kill_statement_effects_in_block<'tcx, A>( analysis: &mut A, trans: &mut GenKillSet<A::Idx>, block: BasicBlock, block_data: &BasicBlockData<'tcx>, )
where A: GenKillAnalysis<'tcx>,

source

fn visit_results_in_block<'mir, 'tcx, D, R>( state: &mut D, block: BasicBlock, block_data: &'mir BasicBlockData<'tcx>, results: &mut R, vis: &mut impl ResultsVisitor<'mir, 'tcx, R, Domain = D>, )
where R: ResultsVisitable<'tcx, Domain = D>,

source

fn join_state_into_successors_of<'tcx, A>( analysis: &mut A, body: &Body<'tcx>, exit_state: &mut A::Domain, block: BasicBlock, edges: TerminatorEdges<'_, 'tcx>, propagate: impl FnMut(BasicBlock, &A::Domain), )
where A: Analysis<'tcx>,

Object Safety§

This trait is not object safe.

Implementors§