Trait rustc_mir::dataflow::AnalysisDomain [−][src]
pub trait AnalysisDomain<'tcx> {
type Domain: Clone + JoinSemiLattice;
type Direction: Direction = Forward;
const NAME: &'static str;
fn bottom_value(&self, body: &Body<'tcx>) -> Self::Domain;
fn initialize_start_block(
&self,
body: &Body<'tcx>,
state: &mut Self::Domain
);
}Expand description
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]
Expand description
The type that holds the dataflow state at any given point in the program.
type Direction: Direction = Forward[src]
Expand description
The direction of this analysis. Either Forward or Backward.
Associated Constants
const NAME: &'static str[src]
Expand description
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
fn bottom_value(&self, body: &Body<'tcx>) -> Self::Domain[src]
Expand description
The initial value of the dataflow state upon entry to each basic block.
fn initialize_start_block(&self, body: &Body<'tcx>, state: &mut Self::Domain)[src]
Expand description
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]
impl<'a, 'tcx> AnalysisDomain<'tcx> for DefinitelyInitializedPlaces<'a, 'tcx>[src]type Domain = Dual<BitSet<MovePathIndex>>
type Domain = Dual<BitSet<MovePathIndex>>Use set intersection as the join operator.
impl<'mir, 'tcx> AnalysisDomain<'tcx> for MaybeRequiresStorage<'mir, 'tcx>[src]
impl<'mir, 'tcx> AnalysisDomain<'tcx> for MaybeRequiresStorage<'mir, 'tcx>[src]impl<'tcx> AnalysisDomain<'tcx> for Borrows<'_, 'tcx>[src]
impl<'tcx> AnalysisDomain<'tcx> for Borrows<'_, 'tcx>[src]type Domain = BitSet<BorrowIndex>
const NAME: &'static str[src]
fn bottom_value(&self, _: &Body<'tcx>) -> Self::Domain[src]
fn initialize_start_block(&self, _: &Body<'tcx>, _: &mut Self::Domain)[src]
impl<'tcx> AnalysisDomain<'tcx> for MaybeInitializedLocals[src]
impl<'tcx> AnalysisDomain<'tcx> for MaybeInitializedLocals[src]impl<'tcx> AnalysisDomain<'tcx> for MaybeLiveLocals[src]
impl<'tcx> AnalysisDomain<'tcx> for MaybeLiveLocals[src]impl<'tcx> AnalysisDomain<'tcx> for MaybeStorageLive[src]
impl<'tcx> AnalysisDomain<'tcx> for MaybeStorageLive[src]impl<'tcx> AnalysisDomain<'tcx> for EverInitializedPlaces<'_, 'tcx>[src]
impl<'tcx> AnalysisDomain<'tcx> for EverInitializedPlaces<'_, 'tcx>[src]impl<'tcx> AnalysisDomain<'tcx> for MaybeInitializedPlaces<'_, 'tcx>[src]
impl<'tcx> AnalysisDomain<'tcx> for MaybeInitializedPlaces<'_, 'tcx>[src]type Domain = BitSet<MovePathIndex>
const NAME: &'static str[src]
fn bottom_value(&self, _: &Body<'tcx>) -> Self::Domain[src]
fn initialize_start_block(&self, _: &Body<'tcx>, state: &mut Self::Domain)[src]
impl<'tcx> AnalysisDomain<'tcx> for MaybeUninitializedPlaces<'_, 'tcx>[src]
impl<'tcx> AnalysisDomain<'tcx> for MaybeUninitializedPlaces<'_, 'tcx>[src]type Domain = BitSet<MovePathIndex>
const NAME: &'static str[src]
fn bottom_value(&self, _: &Body<'tcx>) -> Self::Domain[src]
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]
impl<K, 'tcx> AnalysisDomain<'tcx> for MaybeBorrowedLocals<K> where
K: BorrowAnalysisKind<'tcx>, [src]impl<Q, 'tcx> AnalysisDomain<'tcx> for FlowSensitiveAnalysis<'_, '_, 'tcx, Q> where
Q: Qualif, [src]
impl<Q, 'tcx> AnalysisDomain<'tcx> for FlowSensitiveAnalysis<'_, '_, 'tcx, Q> where
Q: Qualif, [src]