pub struct IRMapper<'a, 'tcx> { /* private fields */ }
Implementations§
source§impl<'a, 'tcx> IRMapper<'a, 'tcx>where
'tcx: 'a,
impl<'a, 'tcx> IRMapper<'a, 'tcx>where 'tcx: 'a,
pub fn new( tcx: TyCtxt<'tcx>, body: &'a Body<'tcx>, gather_mode: GatherMode ) -> Self
pub fn ldominates(&self, dom: Location, node: Location) -> bool
pub fn lpost_dominates(&self, pdom: Location, node: Location) -> bool
pub fn dominates(&self, dom: BasicBlock, node: BasicBlock) -> bool
pub fn post_dominates(&self, pdom: BasicBlock, node: BasicBlock) -> bool
sourcepub fn is_terminator_switchint(&self, location: Location) -> bool
pub fn is_terminator_switchint(&self, location: Location) -> bool
Returns true if the terminator in the location’s block is a switchInt
.
pub fn local_assigned_place(&self, local: &Local<'_>) -> Vec<Place<'tcx>>
sourcepub fn get_mir_locations(
&self,
hir_id: HirId,
depth: GatherDepth
) -> Option<MirOrderedLocations>
pub fn get_mir_locations( &self, hir_id: HirId, depth: GatherDepth ) -> Option<MirOrderedLocations>
Produces a MirOrderedLocations which is defined as follows.
The entry_block
represents the BasicBlock
which post-dominates all
blocks in the given set of locations and conversely the exit_block
dominates all blocks in the set.
This works under the assumption that there exists a global maximum in the (post-)dominator lattice.
Trait Implementations§
source§impl<'tcx> Visitor<'tcx> for IRMapper<'_, 'tcx>
impl<'tcx> Visitor<'tcx> for IRMapper<'_, 'tcx>
fn visit_basic_block_data( &mut self, block: BasicBlock, data: &BasicBlockData<'tcx> )
fn visit_statement(&mut self, _terminator: &Statement<'tcx>, location: Location)
fn visit_terminator( &mut self, _terminator: &Terminator<'tcx>, location: Location )
fn visit_body(&mut self, body: &Body<'tcx>)
fn visit_source_scope_data(&mut self, scope_data: &SourceScopeData<'tcx>)
fn visit_assign( &mut self, place: &Place<'tcx>, rvalue: &Rvalue<'tcx>, location: Location )
fn visit_assert_message( &mut self, msg: &AssertKind<Operand<'tcx>>, location: Location )
fn visit_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)
fn visit_operand(&mut self, operand: &Operand<'tcx>, location: Location)
fn visit_ascribe_user_ty( &mut self, place: &Place<'tcx>, variance: Variance, user_ty: &UserTypeProjection, location: Location )
fn visit_coverage(&mut self, coverage: &Coverage, location: Location)
fn visit_retag( &mut self, kind: RetagKind, place: &Place<'tcx>, location: Location )
fn visit_place( &mut self, place: &Place<'tcx>, context: PlaceContext, location: Location )
fn visit_projection( &mut self, place_ref: PlaceRef<'tcx>, context: PlaceContext, location: Location )
fn visit_projection_elem( &mut self, place_ref: PlaceRef<'tcx>, elem: ProjectionElem<Local, Ty<'tcx>>, context: PlaceContext, location: Location )
fn super_place( &mut self, place: &Place<'tcx>, context: PlaceContext, location: Location )
fn super_projection( &mut self, place_ref: PlaceRef<'tcx>, context: PlaceContext, location: Location )
fn super_projection_elem( &mut self, _place_ref: PlaceRef<'tcx>, elem: ProjectionElem<Local, Ty<'tcx>>, _context: PlaceContext, location: Location )
fn visit_constant(&mut self, constant: &Constant<'tcx>, location: Location)
fn visit_ty_const(&mut self, ct: Const<'tcx>, location: Location)
fn visit_span(&mut self, span: Span)
fn visit_source_info(&mut self, source_info: &SourceInfo)
fn visit_ty(&mut self, ty: Ty<'tcx>, _: TyContext)
fn visit_user_type_projection(&mut self, ty: &UserTypeProjection)
fn visit_user_type_annotation( &mut self, index: UserTypeAnnotationIndex, ty: &CanonicalUserTypeAnnotation<'tcx> )
fn visit_region(&mut self, region: Region<'tcx>, _: Location)
fn visit_args(&mut self, args: &&'tcx List<GenericArg<'tcx>>, _: Location)
fn visit_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)
fn visit_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)
fn visit_local( &mut self, _local: Local, _context: PlaceContext, _location: Location )
fn visit_source_scope(&mut self, scope: SourceScope)
fn super_body(&mut self, body: &Body<'tcx>)
fn super_basic_block_data( &mut self, block: BasicBlock, data: &BasicBlockData<'tcx> )
fn super_source_scope_data(&mut self, scope_data: &SourceScopeData<'tcx>)
fn super_statement(&mut self, statement: &Statement<'tcx>, location: Location)
fn super_assign( &mut self, place: &Place<'tcx>, rvalue: &Rvalue<'tcx>, location: Location )
fn super_terminator( &mut self, terminator: &Terminator<'tcx>, location: Location )
fn super_assert_message( &mut self, msg: &AssertKind<Operand<'tcx>>, location: Location )
fn super_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)
fn super_operand(&mut self, operand: &Operand<'tcx>, location: Location)
fn super_ascribe_user_ty( &mut self, place: &Place<'tcx>, variance: Variance, user_ty: &UserTypeProjection, location: Location )
fn super_coverage(&mut self, _coverage: &Coverage, _location: Location)
fn super_retag( &mut self, _kind: RetagKind, place: &Place<'tcx>, location: Location )
fn super_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)
fn super_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)
fn super_source_scope(&mut self, _scope: SourceScope)
fn super_constant(&mut self, constant: &Constant<'tcx>, location: Location)
fn super_ty_const(&mut self, _ct: Const<'tcx>, _location: Location)
fn super_span(&mut self, _span: Span)
fn super_source_info(&mut self, source_info: &SourceInfo)
fn super_user_type_projection(&mut self, _ty: &UserTypeProjection)
fn super_user_type_annotation( &mut self, _index: UserTypeAnnotationIndex, ty: &CanonicalUserTypeAnnotation<'tcx> )
fn super_ty(&mut self, _ty: Ty<'tcx>)
fn super_region(&mut self, _region: Region<'tcx>)
fn super_args(&mut self, _args: &&'tcx List<GenericArg<'tcx>>)
fn visit_location(&mut self, body: &Body<'tcx>, location: Location)
Auto Trait Implementations§
impl<'a, 'tcx> !RefUnwindSafe for IRMapper<'a, 'tcx>
impl<'a, 'tcx> !Send for IRMapper<'a, 'tcx>
impl<'a, 'tcx> !Sync for IRMapper<'a, 'tcx>
impl<'a, 'tcx> Unpin for IRMapper<'a, 'tcx>
impl<'a, 'tcx> !UnwindSafe for IRMapper<'a, 'tcx>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more