pub struct Cfg {
pub blocks: Vec<BasicBlock>,
pub entry: usize,
}Fields§
§blocks: Vec<BasicBlock>§entry: usizeImplementations§
Source§impl Cfg
impl Cfg
Sourcepub fn build(program: &Program) -> Cfg
pub fn build(program: &Program) -> Cfg
Build a CFG from a compiled program. Sub-programs become their
own blocks recursively; the returned entry is the root block id.
Sourcepub fn dominators(&self) -> Vec<Option<usize>>
pub fn dominators(&self) -> Vec<Option<usize>>
Compute immediate dominators by iterative dataflow (Cooper–Harvey–Kennedy).
Sourcepub fn dominance_frontiers(&self) -> Vec<HashSet<usize>>
pub fn dominance_frontiers(&self) -> Vec<HashSet<usize>>
Dominance frontier per block (Cytron et al.).
Sourcepub fn loop_headers(&self) -> Vec<(usize, usize)>
pub fn loop_headers(&self) -> Vec<(usize, usize)>
Loop headers: blocks that dominate one of their own predecessors (i.e. back-edges terminate here). Returns (header, back_edge_source).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Cfg
impl RefUnwindSafe for Cfg
impl Send for Cfg
impl Sync for Cfg
impl Unpin for Cfg
impl UnsafeUnpin for Cfg
impl UnwindSafe for Cfg
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