Struct cranelift_codegen::loop_analysis::LoopAnalysis [−][src]
pub struct LoopAnalysis { /* fields omitted */ }
Expand description
Loop tree information for a single function.
Loops are referenced by the Loop object, and for each loop you can access its header block, its eventual parent in the loop tree and all the block belonging to the loop.
Implementations
impl LoopAnalysis
[src]
impl LoopAnalysis
[src]Methods for querying the loop analysis.
pub fn new() -> Self
[src]
pub fn new() -> Self
[src]Allocate a new blank loop analysis struct. Use compute
to compute the loop analysis for
a function.
pub fn loop_header(&self, lp: Loop) -> Block
[src]
pub fn loop_header(&self, lp: Loop) -> Block
[src]Returns the header block of a particular loop.
The characteristic property of a loop header block is that it dominates some of its predecessors.
pub fn loop_parent(&self, lp: Loop) -> Option<Loop>
[src]
pub fn loop_parent(&self, lp: Loop) -> Option<Loop>
[src]Return the eventual parent of a loop in the loop tree.
pub fn is_in_loop(&self, block: Block, lp: Loop) -> bool
[src]
pub fn is_in_loop(&self, block: Block, lp: Loop) -> bool
[src]Determine if a Block belongs to a loop by running a finger along the loop tree.
Returns true
if block
is in loop lp
.
pub fn is_child_loop(&self, child: Loop, parent: Loop) -> bool
[src]
pub fn is_child_loop(&self, child: Loop, parent: Loop) -> bool
[src]Determines if a loop is contained in another loop.
is_child_loop(child,parent)
returns true
if and only if child
is a child loop of
parent
(or child == parent
).
impl LoopAnalysis
[src]
impl LoopAnalysis
[src]pub fn compute(
&mut self,
func: &Function,
cfg: &ControlFlowGraph,
domtree: &DominatorTree
)
[src]
pub fn compute(
&mut self,
func: &Function,
cfg: &ControlFlowGraph,
domtree: &DominatorTree
)
[src]Detects the loops in a function. Needs the control flow graph and the dominator tree.