[−][src]Struct rustc_mir::transform::instrument_coverage::CoverageVisitor
The num_counters argument to llvm.instrprof.increment is the max counter_id + 1, or in
other words, the number of counter value references injected into the MIR (plus 1 for the
reserved ZERO counter, which uses counter ID 0 when included in an expression). Injected
counters have a counter ID from 1..num_counters-1.
num_expressions is the number of counter expressions added to the MIR body.
Both num_counters and num_expressions are used to initialize new vectors, during backend
code generate, to lookup counters and expressions by simple u32 indexes.
MIR optimization may split and duplicate some BasicBlock sequences, or optimize out some code
including injected counters. (It is OK if some counters are optimized out, but those counters
are still included in the total num_counters or num_expressions.) Simply counting the
calls may not work; but computing the number of counters or expressions by adding 1 to the
highest ID (for a given instrumented function) is valid.
Fields
info: CoverageInfoTrait Implementations
impl<'_> Visitor<'_> for CoverageVisitor[src]
fn visit_coverage(&mut self, coverage: &Coverage, _location: Location)[src]
fn visit_body(&mut self, body: &Body<'tcx>)[src]
fn visit_basic_block_data(
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)[src]
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)
fn visit_source_scope_data(&mut self, scope_data: &SourceScopeData)[src]
fn visit_statement(&mut self, statement: &Statement<'tcx>, location: Location)[src]
fn visit_assign(
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)
fn visit_terminator(
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)[src]
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)
fn visit_assert_message(
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)[src]
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)
fn visit_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)[src]
fn visit_operand(&mut self, operand: &Operand<'tcx>, location: Location)[src]
fn visit_ascribe_user_ty(
&mut self,
place: &Place<'tcx>,
variance: &Variance,
user_ty: &UserTypeProjection,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
variance: &Variance,
user_ty: &UserTypeProjection,
location: Location
)
fn visit_retag(
&mut self,
kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)[src]
&mut self,
kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)
fn visit_place(
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)
fn visit_projection(
&mut self,
local: Local,
projection: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
context: PlaceContext,
location: Location
)[src]
&mut self,
local: Local,
projection: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
context: PlaceContext,
location: Location
)
fn visit_projection_elem(
&mut self,
local: Local,
proj_base: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
elem: ProjectionElem<Local, &'tcx TyS<'tcx>>,
context: PlaceContext,
location: Location
)[src]
&mut self,
local: Local,
proj_base: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
elem: ProjectionElem<Local, &'tcx TyS<'tcx>>,
context: PlaceContext,
location: Location
)
fn super_place(
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)
fn super_projection(
&mut self,
local: Local,
projection: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
context: PlaceContext,
location: Location
)[src]
&mut self,
local: Local,
projection: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
context: PlaceContext,
location: Location
)
fn super_projection_elem(
&mut self,
_local: Local,
_proj_base: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
elem: ProjectionElem<Local, &'tcx TyS<'tcx>>,
_context: PlaceContext,
location: Location
)[src]
&mut self,
_local: Local,
_proj_base: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
elem: ProjectionElem<Local, &'tcx TyS<'tcx>>,
_context: PlaceContext,
location: Location
)
fn visit_constant(&mut self, constant: &Constant<'tcx>, location: Location)[src]
fn visit_span(&mut self, span: &Span)[src]
fn visit_source_info(&mut self, source_info: &SourceInfo)[src]
fn visit_ty(&mut self, ty: &'tcx TyS<'tcx>, TyContext)[src]
fn visit_user_type_projection(&mut self, ty: &UserTypeProjection)[src]
fn visit_user_type_annotation(
&mut self,
index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)[src]
&mut self,
index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)
fn visit_region(&mut self, region: &&'tcx RegionKind, Location)[src]
fn visit_const(&mut self, constant: &&'tcx Const<'tcx>, Location)[src]
fn visit_substs(&mut self, substs: &&'tcx List<GenericArg<'tcx>>, Location)[src]
fn visit_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)[src]
fn visit_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)[src]
fn visit_local(
&mut self,
_local: &Local,
_context: PlaceContext,
_location: Location
)[src]
&mut self,
_local: &Local,
_context: PlaceContext,
_location: Location
)
fn visit_source_scope(&mut self, scope: &SourceScope)[src]
fn super_body(&mut self, body: &Body<'tcx>)[src]
fn super_basic_block_data(
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)[src]
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)
fn super_source_scope_data(&mut self, scope_data: &SourceScopeData)[src]
fn super_statement(&mut self, statement: &Statement<'tcx>, location: Location)[src]
fn super_assign(
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)
fn super_terminator(
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)[src]
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)
fn super_assert_message(
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)[src]
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)
fn super_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)[src]
fn super_operand(&mut self, operand: &Operand<'tcx>, location: Location)[src]
fn super_ascribe_user_ty(
&mut self,
place: &Place<'tcx>,
_variance: &Variance,
user_ty: &UserTypeProjection,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
_variance: &Variance,
user_ty: &UserTypeProjection,
location: Location
)
fn super_coverage(&mut self, _coverage: &Coverage, _location: Location)[src]
fn super_retag(
&mut self,
_kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)[src]
&mut self,
_kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)
fn super_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)[src]
fn super_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)[src]
fn super_source_scope(&mut self, _scope: &SourceScope)[src]
fn super_constant(&mut self, constant: &Constant<'tcx>, location: Location)[src]
fn super_span(&mut self, _span: &Span)[src]
fn super_source_info(&mut self, source_info: &SourceInfo)[src]
fn super_user_type_projection(&mut self, _ty: &UserTypeProjection)[src]
fn super_user_type_annotation(
&mut self,
_index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)[src]
&mut self,
_index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)
fn super_ty(&mut self, _ty: &'tcx TyS<'tcx>)[src]
fn super_region(&mut self, _region: &&'tcx RegionKind)[src]
fn super_const(&mut self, _const: &&'tcx Const<'tcx>)[src]
fn super_substs(&mut self, _substs: &&'tcx List<GenericArg<'tcx>>)[src]
fn visit_location(&mut self, body: &Body<'tcx>, location: Location)[src]
Auto Trait Implementations
impl RefUnwindSafe for CoverageVisitor
impl Send for CoverageVisitor
impl Sync for CoverageVisitor
impl Unpin for CoverageVisitor
impl UnwindSafe for CoverageVisitor
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.