Struct rustc_mir::transform::coverage::graph::CoverageGraph [−][src]
pub(super) struct CoverageGraph {
bcbs: IndexVec<BasicCoverageBlock, BasicCoverageBlockData>,
bb_to_bcb: IndexVec<BasicBlock, Option<BasicCoverageBlock>>,
pub successors: IndexVec<BasicCoverageBlock, Vec<BasicCoverageBlock>>,
pub predecessors: IndexVec<BasicCoverageBlock, Vec<BasicCoverageBlock>>,
dominators: Option<Dominators<BasicCoverageBlock>>,
}Expand description
A coverage-specific simplification of the MIR control flow graph (CFG). The CoverageGraphs
nodes are BasicCoverageBlocks, which encompass one or more MIR BasicBlocks, plus a
CoverageKind counter (to be added by CoverageCounters::make_bcb_counters), and an optional
set of additional counters–if needed–to count incoming edges, if there are more than one.
(These “edge counters” are eventually converted into new MIR BasicBlocks.)
Fields
bcbs: IndexVec<BasicCoverageBlock, BasicCoverageBlockData>bb_to_bcb: IndexVec<BasicBlock, Option<BasicCoverageBlock>>successors: IndexVec<BasicCoverageBlock, Vec<BasicCoverageBlock>>predecessors: IndexVec<BasicCoverageBlock, Vec<BasicCoverageBlock>>dominators: Option<Dominators<BasicCoverageBlock>>Implementations
fn compute_basic_coverage_blocks<'tcx>(
mir_body: &Body<'tcx>
) -> (IndexVec<BasicCoverageBlock, BasicCoverageBlockData>, IndexVec<BasicBlock, Option<BasicCoverageBlock>>)fn add_basic_coverage_block(
bcbs: &mut IndexVec<BasicCoverageBlock, BasicCoverageBlockData>,
bb_to_bcb: &mut IndexVec<BasicBlock, Option<BasicCoverageBlock>>,
basic_blocks: Vec<BasicBlock>
)pub fn iter_enumerated(
&self
) -> impl Iterator<Item = (BasicCoverageBlock, &BasicCoverageBlockData)>pub fn iter_enumerated_mut(
&mut self
) -> impl Iterator<Item = (BasicCoverageBlock, &mut BasicCoverageBlockData)>Trait Implementations
type Node = BasicCoverageBlocktype Item = BasicCoverageBlocktype Iter = Copied<Iter<'graph, BasicCoverageBlock>>type Item = BasicCoverageBlocktype Iter = Cloned<Iter<'graph, BasicCoverageBlock>>type Output = BasicCoverageBlockData
type Output = BasicCoverageBlockDataThe returned type after indexing.
Performs the indexing (container[index]) operation. Read more
Performs the mutable indexing (container[index]) operation. Read more
fn depth_first_search(&self, from: Self::Node) -> DepthFirstSearch<'_, Self> where
Self: WithNumNodes, Auto Trait Implementations
impl RefUnwindSafe for CoverageGraphimpl Send for CoverageGraphimpl Sync for CoverageGraphimpl Unpin for CoverageGraphimpl UnwindSafe for CoverageGraphBlanket Implementations
Layout
Note: Most layout information is completely unstable and may be different between compiler versions and platforms. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 144 bytes