flowistry_pdg::rustc::mir::coverage

Enum CoverageKind

Source
pub enum CoverageKind {
    SpanMarker,
    BlockMarker {
        id: BlockMarkerId,
    },
    CounterIncrement {
        id: CounterId,
    },
    ExpressionUsed {
        id: ExpressionId,
    },
    CondBitmapUpdate {
        index: u32,
        decision_depth: u16,
    },
    TestVectorBitmapUpdate {
        bitmap_idx: u32,
        decision_depth: u16,
    },
}

Variants§

§

SpanMarker

Marks a span that might otherwise not be represented in MIR, so that coverage instrumentation can associate it with its enclosing block/BCB.

Should be erased before codegen (at some point after InstrumentCoverage).

§

BlockMarker

Marks its enclosing basic block with an ID that can be referred to by side data in CoverageInfoHi.

Should be erased before codegen (at some point after InstrumentCoverage).

Fields

§

CounterIncrement

Marks the point in MIR control flow represented by a coverage counter.

This is eventually lowered to llvm.instrprof.increment in LLVM IR.

If this statement does not survive MIR optimizations, any mappings that refer to this counter can have those references simplified to zero.

Fields

§

ExpressionUsed

Marks the point in MIR control-flow represented by a coverage expression.

If this statement does not survive MIR optimizations, any mappings that refer to this expression can have those references simplified to zero.

(This is only inserted for expression IDs that are directly used by mappings. Intermediate expressions with no direct mappings are retained/zeroed based on whether they are transitively used.)

Fields

§

CondBitmapUpdate

Marks the point in MIR control flow represented by a evaluated condition.

This is eventually lowered to instruments updating mcdc temp variables.

Fields

§index: u32
§decision_depth: u16
§

TestVectorBitmapUpdate

Marks the point in MIR control flow represented by a evaluated decision.

This is eventually lowered to llvm.instrprof.mcdc.tvbitmap.update in LLVM IR.

Fields

§bitmap_idx: u32
§decision_depth: u16

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.