[−][src]Trait rustc_mir::dataflow::framework::AnalysisDomain
Define the domain of a dataflow problem.
This trait specifies the lattice on which this analysis operates (the domain) as well as its initial value at the entry point of each basic block.
Associated Types
type Domain: Clone + JoinSemiLattice[src]
The type that holds the dataflow state at any given point in the program.
type Direction: Direction = Forward[src]
The direction of this analysis. Either Forward or Backward.
Associated Constants
pub const NAME: &'static str[src]
A descriptive name for this analysis. Used only for debugging.
This name should be brief and contain no spaces, periods or other characters that are not suitable as part of a filename.
Required methods
pub fn bottom_value(&self, body: &Body<'tcx>) -> Self::Domain[src]
The initial value of the dataflow state upon entry to each basic block.
pub fn initialize_start_block(
&self,
body: &Body<'tcx>,
state: &mut Self::Domain
)[src]
&self,
body: &Body<'tcx>,
state: &mut Self::Domain
)
Mutates the initial value of the dataflow state upon entry to the START_BLOCK.
For backward analyses, initial state besides the bottom value is not yet supported. Trying to mutate the initial state will result in a panic.
Implementors
impl<'a, 'tcx> AnalysisDomain<'tcx> for DefinitelyInitializedPlaces<'a, 'tcx>[src]
type Domain = Dual<BitSet<MovePathIndex>>
Use set intersection as the join operator.
pub const NAME: &'static str[src]
pub fn bottom_value(&self, _: &Body<'tcx>) -> Self::Domain[src]
pub fn initialize_start_block(&self, _: &Body<'tcx>, state: &mut Self::Domain)[src]
impl<'mir, 'tcx> AnalysisDomain<'tcx> for MaybeRequiresStorage<'mir, 'tcx>[src]
type Domain = BitSet<Local>
pub const NAME: &'static str[src]
pub fn bottom_value(&self, body: &Body<'tcx>) -> Self::Domain[src]
pub fn initialize_start_block(
&self,
body: &Body<'tcx>,
on_entry: &mut Self::Domain
)[src]
&self,
body: &Body<'tcx>,
on_entry: &mut Self::Domain
)
impl<'tcx> AnalysisDomain<'tcx> for MaybeInitializedLocals[src]
type Domain = BitSet<Local>
pub const NAME: &'static str[src]
pub fn bottom_value(&self, body: &Body<'tcx>) -> Self::Domain[src]
pub fn initialize_start_block(
&self,
body: &Body<'tcx>,
entry_set: &mut Self::Domain
)[src]
&self,
body: &Body<'tcx>,
entry_set: &mut Self::Domain
)
impl<'tcx> AnalysisDomain<'tcx> for MaybeLiveLocals[src]
type Domain = BitSet<Local>
type Direction = Backward
pub const NAME: &'static str[src]
pub fn bottom_value(&self, body: &Body<'tcx>) -> Self::Domain[src]
pub fn initialize_start_block(&self, _: &Body<'tcx>, _: &mut Self::Domain)[src]
impl<'tcx> AnalysisDomain<'tcx> for MaybeStorageLive[src]
type Domain = BitSet<Local>
pub const NAME: &'static str[src]
pub fn bottom_value(&self, body: &Body<'tcx>) -> Self::Domain[src]
pub fn initialize_start_block(
&self,
body: &Body<'tcx>,
on_entry: &mut Self::Domain
)[src]
&self,
body: &Body<'tcx>,
on_entry: &mut Self::Domain
)
impl<'tcx, '_> AnalysisDomain<'tcx> for Borrows<'_, 'tcx>[src]
type Domain = BitSet<BorrowIndex>
pub const NAME: &'static str[src]
pub fn bottom_value(&self, _: &Body<'tcx>) -> Self::Domain[src]
pub fn initialize_start_block(&self, _: &Body<'tcx>, _: &mut Self::Domain)[src]
impl<'tcx, '_> AnalysisDomain<'tcx> for EverInitializedPlaces<'_, 'tcx>[src]
type Domain = BitSet<InitIndex>
pub const NAME: &'static str[src]
pub fn bottom_value(&self, _: &Body<'tcx>) -> Self::Domain[src]
pub fn initialize_start_block(
&self,
body: &Body<'tcx>,
state: &mut Self::Domain
)[src]
&self,
body: &Body<'tcx>,
state: &mut Self::Domain
)
impl<'tcx, '_> AnalysisDomain<'tcx> for MaybeInitializedPlaces<'_, 'tcx>[src]
type Domain = BitSet<MovePathIndex>
pub const NAME: &'static str[src]
pub fn bottom_value(&self, _: &Body<'tcx>) -> Self::Domain[src]
pub fn initialize_start_block(&self, _: &Body<'tcx>, state: &mut Self::Domain)[src]
impl<'tcx, '_> AnalysisDomain<'tcx> for MaybeUninitializedPlaces<'_, 'tcx>[src]
type Domain = BitSet<MovePathIndex>
pub const NAME: &'static str[src]
pub fn bottom_value(&self, _: &Body<'tcx>) -> Self::Domain[src]
pub fn initialize_start_block(&self, _: &Body<'tcx>, state: &mut Self::Domain)[src]
impl<K, 'tcx> AnalysisDomain<'tcx> for MaybeBorrowedLocals<K> where
K: BorrowAnalysisKind<'tcx>, [src]
K: BorrowAnalysisKind<'tcx>,
type Domain = BitSet<Local>
pub const NAME: &'static str[src]
pub fn bottom_value(&self, body: &Body<'tcx>) -> Self::Domain[src]
pub fn initialize_start_block(&self, _: &Body<'tcx>, _: &mut Self::Domain)[src]
impl<Q, 'tcx, '_, '_> AnalysisDomain<'tcx> for FlowSensitiveAnalysis<'_, '_, 'tcx, Q> where
Q: Qualif, [src]
Q: Qualif,