pub trait GenKillAnalysis<'tcx>: Analysis<'tcx> {
    type Idx: Idx;

    fn statement_effect(
        &self,
        trans: &mut impl GenKill<Self::Idx>,
        statement: &Statement<'tcx>,
        location: Location
    ); fn terminator_effect(
        &self,
        trans: &mut impl GenKill<Self::Idx>,
        terminator: &Terminator<'tcx>,
        location: Location
    ); fn call_return_effect(
        &self,
        trans: &mut impl GenKill<Self::Idx>,
        block: BasicBlock,
        return_places: CallReturnPlaces<'_, 'tcx>
    ); fn before_statement_effect(
        &self,
        _trans: &mut impl GenKill<Self::Idx>,
        _statement: &Statement<'tcx>,
        _location: Location
    ) { ... } fn before_terminator_effect(
        &self,
        _trans: &mut impl GenKill<Self::Idx>,
        _terminator: &Terminator<'tcx>,
        _location: Location
    ) { ... } fn yield_resume_effect(
        &self,
        _trans: &mut impl GenKill<Self::Idx>,
        _resume_block: BasicBlock,
        _resume_place: Place<'tcx>
    ) { ... } fn switch_int_edge_effects<G: GenKill<Self::Idx>>(
        &self,
        _block: BasicBlock,
        _discr: &Operand<'tcx>,
        _edge_effects: &mut impl SwitchIntEdgeEffects<G>
    ) { ... } }
Expand description

A gen/kill dataflow problem.

Each method in this trait has a corresponding one in Analysis. However, these methods only allow modification of the dataflow state via “gen” and “kill” operations. By defining transfer functions for each statement in this way, the transfer function for an entire basic block can be computed efficiently.

Analysis is automatically implemented for all implementers of GenKillAnalysis.

Required Associated Types§

Required Methods§

See Analysis::apply_statement_effect.

See Analysis::apply_terminator_effect.

See Analysis::apply_call_return_effect.

Provided Methods§

See Analysis::apply_before_statement_effect.

See Analysis::apply_before_terminator_effect.

See Analysis::apply_yield_resume_effect.

See Analysis::apply_switch_int_edge_effects.

Implementors§