Struct rustc_mir::dataflow::impls::MaybeRequiresStorage [−][src]
pub struct MaybeRequiresStorage<'mir, 'tcx> {
body: &'mir Body<'tcx>,
borrowed_locals: RefCell<ResultsRefCursor<'mir, 'mir, 'tcx, MaybeBorrowedLocals>>,
}Expand description
Dataflow analysis that determines whether each local requires storage at a given location; i.e. whether its storage can go away without being observed.
Fields
body: &'mir Body<'tcx>borrowed_locals: RefCell<ResultsRefCursor<'mir, 'mir, 'tcx, MaybeBorrowedLocals>>Implementations
impl<'mir, 'tcx> MaybeRequiresStorage<'mir, 'tcx>[src]
impl<'mir, 'tcx> MaybeRequiresStorage<'mir, 'tcx>[src]pub fn new(
body: &'mir Body<'tcx>,
borrowed_locals: &'mir Results<'tcx, MaybeBorrowedLocals>
) -> Self[src]
body: &'mir Body<'tcx>,
borrowed_locals: &'mir Results<'tcx, MaybeBorrowedLocals>
) -> Self
impl<'mir, 'tcx> MaybeRequiresStorage<'mir, 'tcx>[src]
impl<'mir, 'tcx> MaybeRequiresStorage<'mir, 'tcx>[src]fn check_for_move(&self, trans: &mut impl GenKill<Local>, loc: Location)[src]
fn check_for_move(&self, trans: &mut impl GenKill<Local>, loc: Location)[src]Kill locals that are fully moved and have not been borrowed.
Trait Implementations
impl<'mir, 'tcx> AnalysisDomain<'tcx> for MaybeRequiresStorage<'mir, 'tcx>[src]
impl<'mir, 'tcx> AnalysisDomain<'tcx> for MaybeRequiresStorage<'mir, 'tcx>[src]type Domain = BitSet<Local>
type Domain = BitSet<Local>The type that holds the dataflow state at any given point in the program.
const NAME: &'static str[src]
const NAME: &'static str[src]A descriptive name for this analysis. Used only for debugging. Read more
fn bottom_value(&self, body: &Body<'tcx>) -> Self::Domain[src]
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>, on_entry: &mut Self::Domain)[src]
fn initialize_start_block(&self, body: &Body<'tcx>, on_entry: &mut Self::Domain)[src]Mutates the initial value of the dataflow state upon entry to the START_BLOCK. Read more
impl<'mir, 'tcx> GenKillAnalysis<'tcx> for MaybeRequiresStorage<'mir, 'tcx>[src]
impl<'mir, 'tcx> GenKillAnalysis<'tcx> for MaybeRequiresStorage<'mir, 'tcx>[src]type Idx = Local
fn before_statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
loc: Location
)[src]
fn before_statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
loc: Location
)[src]See Analysis::apply_before_statement_effect.
fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_: &Statement<'tcx>,
loc: Location
)[src]
fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_: &Statement<'tcx>,
loc: Location
)[src]See Analysis::apply_statement_effect.
fn before_terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
loc: Location
)[src]
fn before_terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
loc: Location
)[src]See Analysis::apply_before_terminator_effect.
fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
loc: Location
)[src]
fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
terminator: &Terminator<'tcx>,
loc: Location
)[src]See Analysis::apply_terminator_effect.
fn call_return_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
return_place: Place<'tcx>
)[src]
fn call_return_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
return_place: Place<'tcx>
)[src]See Analysis::apply_call_return_effect.
fn yield_resume_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
resume_place: Place<'tcx>
)[src]
fn yield_resume_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
resume_place: Place<'tcx>
)[src]See Analysis::apply_yield_resume_effect.
fn switch_int_edge_effects<G: GenKill<Self::Idx>>(
&self,
_block: BasicBlock,
_discr: &Operand<'tcx>,
_edge_effects: &mut impl SwitchIntEdgeEffects<G>
)[src]
fn switch_int_edge_effects<G: GenKill<Self::Idx>>(
&self,
_block: BasicBlock,
_discr: &Operand<'tcx>,
_edge_effects: &mut impl SwitchIntEdgeEffects<G>
)[src]See Analysis::apply_switch_int_edge_effects.
Auto Trait Implementations
impl<'mir, 'tcx> !RefUnwindSafe for MaybeRequiresStorage<'mir, 'tcx>
impl<'mir, 'tcx> !Send for MaybeRequiresStorage<'mir, 'tcx>
impl<'mir, 'tcx> !Sync for MaybeRequiresStorage<'mir, 'tcx>
impl<'mir, 'tcx> Unpin for MaybeRequiresStorage<'mir, 'tcx> where
'tcx: 'mir,
'tcx: 'mir,
impl<'mir, 'tcx> !UnwindSafe for MaybeRequiresStorage<'mir, 'tcx>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> WithConstness for T[src]
impl<T> WithConstness for T[src]