[−][src]Trait rustc_mir::dataflow::GenKillAnalysis
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.
Associated Types
Loading content...Required methods
pub fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
statement: &Statement<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
statement: &Statement<'tcx>,
location: Location
)
See Analysis::apply_statement_effect.
pub fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
location: Location
)
See Analysis::apply_terminator_effect.
pub fn call_return_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
block: BasicBlock,
func: &Operand<'tcx>,
args: &[Operand<'tcx>],
return_place: Place<'tcx>
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
block: BasicBlock,
func: &Operand<'tcx>,
args: &[Operand<'tcx>],
return_place: Place<'tcx>
)
See Analysis::apply_call_return_effect.
Provided methods
pub fn before_statement_effect(
&self,
_trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
_location: Location
)[src]
&self,
_trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
_location: Location
)
See Analysis::apply_before_statement_effect.
pub fn before_terminator_effect(
&self,
_trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
_location: Location
)[src]
&self,
_trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
_location: Location
)
See Analysis::apply_before_terminator_effect.
pub fn yield_resume_effect(
&self,
_trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
_resume_place: Place<'tcx>
)[src]
&self,
_trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
_resume_place: Place<'tcx>
)
See Analysis::apply_yield_resume_effect.
pub fn switch_int_edge_effects<G: GenKill<Self::Idx>>(
&self,
_block: BasicBlock,
_discr: &Operand<'tcx>,
_edge_effects: &mut impl SwitchIntEdgeEffects<G>
)[src]
&self,
_block: BasicBlock,
_discr: &Operand<'tcx>,
_edge_effects: &mut impl SwitchIntEdgeEffects<G>
)
See Analysis::apply_switch_int_edge_effects.
Implementors
impl<'mir, 'tcx> GenKillAnalysis<'tcx> for MaybeRequiresStorage<'mir, 'tcx>[src]
type Idx = Local
pub fn before_statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
loc: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
loc: Location
)
pub fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_: &Statement<'tcx>,
loc: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_: &Statement<'tcx>,
loc: Location
)
pub fn before_terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
loc: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
loc: Location
)
pub fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
loc: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
loc: Location
)
pub fn call_return_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
return_place: Place<'tcx>
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
return_place: Place<'tcx>
)
pub fn yield_resume_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
resume_place: Place<'tcx>
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
resume_place: Place<'tcx>
)
impl<'tcx> GenKillAnalysis<'tcx> for MaybeInitializedLocals[src]
type Idx = Local
pub fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
statement: &Statement<'tcx>,
loc: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
statement: &Statement<'tcx>,
loc: Location
)
pub fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
loc: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
loc: Location
)
pub fn call_return_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
return_place: Place<'tcx>
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
return_place: Place<'tcx>
)
pub fn yield_resume_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
resume_place: Place<'tcx>
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
resume_place: Place<'tcx>
)
See Analysis::apply_yield_resume_effect.
impl<'tcx> GenKillAnalysis<'tcx> for MaybeLiveLocals[src]
type Idx = Local
pub fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
statement: &Statement<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
statement: &Statement<'tcx>,
location: Location
)
pub fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
location: Location
)
pub fn call_return_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
dest_place: Place<'tcx>
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
dest_place: Place<'tcx>
)
pub fn yield_resume_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
resume_place: Place<'tcx>
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
resume_place: Place<'tcx>
)
impl<'tcx> GenKillAnalysis<'tcx> for MaybeStorageLive[src]
type Idx = Local
pub fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
_: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
_: Location
)
pub fn terminator_effect(
&self,
_trans: &mut impl GenKill<Self::Idx>,
_: &Terminator<'tcx>,
_: Location
)[src]
&self,
_trans: &mut impl GenKill<Self::Idx>,
_: &Terminator<'tcx>,
_: Location
)
pub fn call_return_effect(
&self,
_trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
_return_place: Place<'tcx>
)[src]
&self,
_trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
_return_place: Place<'tcx>
)
impl<'tcx, '_> GenKillAnalysis<'tcx> for Borrows<'_, 'tcx>[src]
type Idx = BorrowIndex
pub fn before_statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
location: Location
)
pub fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
location: Location
)
pub fn before_terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)
pub fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
teminator: &Terminator<'tcx>,
_location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
teminator: &Terminator<'tcx>,
_location: Location
)
pub fn call_return_effect(
&self,
_trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
_dest_place: Place<'tcx>
)[src]
&self,
_trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
_dest_place: Place<'tcx>
)
impl<'tcx, '_> GenKillAnalysis<'tcx> for DefinitelyInitializedPlaces<'_, 'tcx>[src]
type Idx = MovePathIndex
pub fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
location: Location
)
pub fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)
pub fn call_return_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
dest_place: Place<'tcx>
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
dest_place: Place<'tcx>
)
impl<'tcx, '_> GenKillAnalysis<'tcx> for EverInitializedPlaces<'_, 'tcx>[src]
type Idx = InitIndex
pub fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
location: Location
)
pub fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)
pub fn call_return_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
_dest_place: Place<'tcx>
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
_dest_place: Place<'tcx>
)
impl<'tcx, '_> GenKillAnalysis<'tcx> for MaybeInitializedPlaces<'_, 'tcx>[src]
type Idx = MovePathIndex
pub fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
location: Location
)
pub fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)
pub fn call_return_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
dest_place: Place<'tcx>
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
dest_place: Place<'tcx>
)
pub fn switch_int_edge_effects<G: GenKill<Self::Idx>>(
&self,
block: BasicBlock,
discr: &Operand<'tcx>,
edge_effects: &mut impl SwitchIntEdgeEffects<G>
)[src]
&self,
block: BasicBlock,
discr: &Operand<'tcx>,
edge_effects: &mut impl SwitchIntEdgeEffects<G>
)
impl<'tcx, '_> GenKillAnalysis<'tcx> for MaybeUninitializedPlaces<'_, 'tcx>[src]
type Idx = MovePathIndex
pub fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
location: Location
)
pub fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)
pub fn call_return_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
dest_place: Place<'tcx>
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
dest_place: Place<'tcx>
)
pub fn switch_int_edge_effects<G: GenKill<Self::Idx>>(
&self,
block: BasicBlock,
discr: &Operand<'tcx>,
edge_effects: &mut impl SwitchIntEdgeEffects<G>
)[src]
&self,
block: BasicBlock,
discr: &Operand<'tcx>,
edge_effects: &mut impl SwitchIntEdgeEffects<G>
)
impl<K, 'tcx> GenKillAnalysis<'tcx> for MaybeBorrowedLocals<K> where
K: BorrowAnalysisKind<'tcx>, [src]
K: BorrowAnalysisKind<'tcx>,
type Idx = Local
pub fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
statement: &Statement<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
statement: &Statement<'tcx>,
location: Location
)
pub fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
location: Location
)[src]
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
location: Location
)
pub fn call_return_effect(
&self,
_trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
_dest_place: Place<'tcx>
)[src]
&self,
_trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
_dest_place: Place<'tcx>
)