FnAliasAnalyzer

Struct FnAliasAnalyzer 

Source
pub struct FnAliasAnalyzer<'tcx> {
    pub tcx: TyCtxt<'tcx>,
    _body: &'tcx Body<'tcx>,
    _def_id: DefId,
    place_info: PlaceInfo<'tcx>,
    fn_summaries: Rc<RefCell<FnAliasMap>>,
    pub bb_iter_cnt: RefCell<usize>,
}
Expand description

Intraprocedural alias analyzer

Fields§

§tcx: TyCtxt<'tcx>§_body: &'tcx Body<'tcx>§_def_id: DefId§place_info: PlaceInfo<'tcx>§fn_summaries: Rc<RefCell<FnAliasMap>>

Function summaries for interprocedural analysis

§bb_iter_cnt: RefCell<usize>

(Debug) Number of BBs we have iterated through

Implementations§

Source§

impl<'tcx> FnAliasAnalyzer<'tcx>

Source

pub fn new( tcx: TyCtxt<'tcx>, def_id: DefId, body: &'tcx Body<'tcx>, fn_summaries: Rc<RefCell<FnAliasMap>>, ) -> Self

Create a new analyzer for a function

Source

pub fn place_info(&self) -> &PlaceInfo<'tcx>

Get the place info

Trait Implementations§

Source§

impl<'tcx> Analysis<'tcx> for FnAliasAnalyzer<'tcx>

Source§

const NAME: &'static str = "FnAliasAnalyzer"

A descriptive name for this analysis. Used only for debugging. Read more
Source§

type Domain = AliasDomain

The type that holds the dataflow state at any given point in the program.
Source§

fn bottom_value(&self, _body: &Body<'tcx>) -> Self::Domain

Returns the initial value of the dataflow state upon entry to each basic block.
Source§

fn initialize_start_block(&self, _body: &Body<'tcx>, _state: &mut Self::Domain)

Mutates the initial value of the dataflow state upon entry to the START_BLOCK. Read more
Source§

fn apply_primary_statement_effect( &self, state: &mut Self::Domain, statement: &Statement<'tcx>, _location: Location, )

Updates the current dataflow state with the effect of evaluating a statement.
Source§

fn apply_primary_terminator_effect<'mir>( &self, state: &mut Self::Domain, terminator: &'mir Terminator<'tcx>, _location: Location, ) -> TerminatorEdges<'mir, 'tcx>

Updates the current dataflow state with the effect of evaluating a terminator. Read more
Source§

fn apply_call_return_effect( &self, _state: &mut Self::Domain, _block: BasicBlock, _return_places: CallReturnPlaces<'_, 'tcx>, )

Updates the current dataflow state with the effect of a successful return from a Call terminator. Read more
§

type Direction = Forward

The direction of this analysis. Either Forward or Backward.
§

type SwitchIntData = !

Auxiliary data used for analyzing SwitchInt terminators, if necessary.
§

fn apply_early_statement_effect( &self, _state: &mut Self::Domain, _statement: &Statement<'tcx>, _location: Location, )

Updates the current dataflow state with an “early” effect, i.e. one that occurs immediately before the given statement. Read more
§

fn apply_early_terminator_effect( &self, _state: &mut Self::Domain, _terminator: &Terminator<'tcx>, _location: Location, )

Updates the current dataflow state with an effect that occurs immediately before the given terminator. Read more
§

fn get_switch_int_data( &self, _block: BasicBlock, _discr: &Operand<'tcx>, ) -> Option<Self::SwitchIntData>

Used to update the current dataflow state with the effect of taking a particular branch in a SwitchInt terminator. Read more
§

fn apply_switch_int_edge_effect( &self, _data: &mut Self::SwitchIntData, _state: &mut Self::Domain, _value: SwitchTargetValue, _targets: &SwitchTargets, )

See comments on get_switch_int_data.
§

fn iterate_to_fixpoint<'mir>( self, tcx: TyCtxt<'tcx>, body: &'mir Body<'tcx>, pass_name: Option<&'static str>, ) -> Results<'tcx, Self>
where Self: Sized, Self::Domain: DebugWithContext<Self>,

Finds the fixpoint for this dataflow problem. Read more
Source§

impl DebugWithContext<FnAliasAnalyzer<'_>> for AliasDomain

§

fn fmt_with(&self, _ctxt: &C, f: &mut Formatter<'_>) -> Result<(), Error>

§

fn fmt_diff_with( &self, old: &Self, ctxt: &C, f: &mut Formatter<'_>, ) -> Result<(), Error>

Print the difference between self and old. Read more

Auto Trait Implementations§

§

impl<'tcx> !Freeze for FnAliasAnalyzer<'tcx>

§

impl<'tcx> !RefUnwindSafe for FnAliasAnalyzer<'tcx>

§

impl<'tcx> !Send for FnAliasAnalyzer<'tcx>

§

impl<'tcx> !Sync for FnAliasAnalyzer<'tcx>

§

impl<'tcx> Unpin for FnAliasAnalyzer<'tcx>

§

impl<'tcx> !UnwindSafe for FnAliasAnalyzer<'tcx>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V