Struct cranelift_codegen::flowgraph::ControlFlowGraph [−][src]
pub struct ControlFlowGraph { /* fields omitted */ }
Expand description
The Control Flow Graph maintains a mapping of blocks to their predecessors and successors where predecessors are basic blocks and successors are basic blocks.
Implementations
impl ControlFlowGraph
[src]
impl ControlFlowGraph
[src]pub fn with_function(func: &Function) -> Self
[src]
pub fn with_function(func: &Function) -> Self
[src]Allocate and compute the control flow graph for func
.
pub fn compute(&mut self, func: &Function)
[src]
pub fn compute(&mut self, func: &Function)
[src]Compute the control flow graph of func
.
This will clear and overwrite any information already stored in this data structure.
pub fn recompute_block(&mut self, func: &Function, block: Block)
[src]
pub fn recompute_block(&mut self, func: &Function, block: Block)
[src]Recompute the control flow graph of block
.
This is for use after modifying instructions within a specific block. It recomputes all edges
from block
while leaving edges to block
intact. Its functionality a subset of that of the
more expensive compute
, and should be used when we know we don’t need to recompute the CFG
from scratch, but rather that our changes have been restricted to specific blocks.
pub fn pred_iter(&self, block: Block) -> PredIter<'_>ⓘNotable traits for PredIter<'a>
impl<'a> Iterator for PredIter<'a> type Item = BlockPredecessor;
[src]
pub fn pred_iter(&self, block: Block) -> PredIter<'_>ⓘNotable traits for PredIter<'a>
impl<'a> Iterator for PredIter<'a> type Item = BlockPredecessor;
[src]Get an iterator over the CFG predecessors to block
.