Skip to main content

LoopInfo

Struct LoopInfo 

Source
pub struct LoopInfo {
    pub loops: Vec<NaturalLoop>,
    pub back_edges: Vec<(BlockId, BlockId)>,
    pub block_depth: HashMap<BlockId, u32>,
}
Expand description

Result of loop analysis.

Fields§

§loops: Vec<NaturalLoop>

Detected natural loops.

§back_edges: Vec<(BlockId, BlockId)>

Back edges in the CFG.

§block_depth: HashMap<BlockId, u32>

Loop depth for each block (0 if not in any loop).

Implementations§

Source§

impl LoopInfo

Source

pub fn compute(cfg: &Cfg, dom: &DomTree) -> Self

Perform loop analysis on a CFG with dominator tree.

Source

pub fn depth(&self, block: BlockId) -> u32

Returns the loop depth of a block (0 if not in any loop).

Source

pub fn containing_loop(&self, block: BlockId) -> Option<&NaturalLoop>

Returns the innermost loop containing a block, if any.

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> 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, 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.