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

    fn apply_effects_in_range<'tcx, A>(
        analysis: &A,
        state: &mut A::Domain,
        block: BasicBlock,
        block_data: &BasicBlockData<'tcx>,
        effects: RangeInclusive<EffectIndex>
    )
    where
        A: Analysis<'tcx>
; fn apply_effects_in_block<'tcx, A>(
        analysis: &A,
        state: &mut A::Domain,
        block: BasicBlock,
        block_data: &BasicBlockData<'tcx>
    )
    where
        A: Analysis<'tcx>
; fn gen_kill_effects_in_block<'tcx, A>(
        analysis: &A,
        trans: &mut GenKillSet<A::Idx>,
        block: BasicBlock,
        block_data: &BasicBlockData<'tcx>
    )
    where
        A: GenKillAnalysis<'tcx>
; fn visit_results_in_block<'mir, 'tcx, F, R>(
        state: &mut F,
        block: BasicBlock,
        block_data: &'mir BasicBlockData<'tcx>,
        results: &R,
        vis: &mut impl ResultsVisitor<'mir, 'tcx, FlowState = F>
    )
    where
        R: ResultsVisitable<'tcx, FlowState = F>
; fn join_state_into_successors_of<'tcx, A>(
        analysis: &A,
        tcx: TyCtxt<'tcx>,
        body: &Body<'tcx>,
        dead_unwinds: Option<&BitSet<BasicBlock>>,
        exit_state: &mut A::Domain,
        block: (BasicBlock, &BasicBlockData<'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: &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<'tcx, A>(
    analysis: &A,
    state: &mut A::Domain,
    block: BasicBlock,
    block_data: &BasicBlockData<'tcx>
)where
    A: Analysis<'tcx>,

source

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

source

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

source

fn join_state_into_successors_of<'tcx, A>(
    analysis: &A,
    tcx: TyCtxt<'tcx>,
    body: &Body<'tcx>,
    dead_unwinds: Option<&BitSet<BasicBlock>>,
    exit_state: &mut A::Domain,
    block: (BasicBlock, &BasicBlockData<'tcx>),
    propagate: impl FnMut(BasicBlock, &A::Domain)
)where
    A: Analysis<'tcx>,

Implementors§