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(
        body: &Body<'tcx>,
        state: &mut Self::Domain
    ); }

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.

Loading content...

Associated Constants

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.

Loading content...

Required methods

fn bottom_value(&self, body: &Body<'tcx>) -> Self::Domain[src]

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]

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.

Loading content...


impl<'a, 'tcx> AnalysisDomain<'tcx> for DefinitelyInitializedPlaces<'a, 'tcx>[src]

type Domain = Dual<BitSet<MovePathIndex>>

Use set intersection as the join operator.

impl<'mir, 'tcx> AnalysisDomain<'tcx> for MaybeRequiresStorage<'mir, 'tcx>[src]

type Domain = BitSet<Local>

impl<'tcx> AnalysisDomain<'tcx> for Borrows<'_, 'tcx>[src]

type Domain = BitSet<BorrowIndex>

impl<'tcx> AnalysisDomain<'tcx> for MaybeInitializedLocals[src]

type Domain = BitSet<Local>

impl<'tcx> AnalysisDomain<'tcx> for MaybeLiveLocals[src]

type Domain = BitSet<Local>

type Direction = Backward

impl<'tcx> AnalysisDomain<'tcx> for MaybeStorageLive[src]

type Domain = BitSet<Local>

impl<'tcx> AnalysisDomain<'tcx> for EverInitializedPlaces<'_, 'tcx>[src]

type Domain = BitSet<InitIndex>

impl<'tcx> AnalysisDomain<'tcx> for MaybeInitializedPlaces<'_, 'tcx>[src]

type Domain = BitSet<MovePathIndex>

impl<'tcx> AnalysisDomain<'tcx> for MaybeUninitializedPlaces<'_, 'tcx>[src]

type Domain = BitSet<MovePathIndex>

impl<K, 'tcx> AnalysisDomain<'tcx> for MaybeBorrowedLocals<K> where
    K: BorrowAnalysisKind<'tcx>, 

type Domain = BitSet<Local>

impl<Q, 'tcx> AnalysisDomain<'tcx> for FlowSensitiveAnalysis<'_, '_, 'tcx, Q> where
    Q: Qualif

type Domain = BitSet<Local>

Loading content...