cranelift_codegen::traversals

Struct Dfs

Source
pub struct Dfs { /* private fields */ }
Expand description

A depth-first traversal.

This is a fairly low-level traversal type, and is generally intended to be used as a building block for making specific pre-order or post-order traversals for whatever problem is at hand.

This type may be reused multiple times across different passes or functions and will internally reuse any heap allocations its already made.

Traversal is not recursive.

Implementations§

Source§

impl Dfs

Source

pub fn new() -> Self

Construct a new depth-first traversal.

Source

pub fn iter<'a>(&'a mut self, func: &'a Function) -> DfsIter<'a>

Perform a depth-first traversal over the given function.

Yields pairs of (Event, ir::Block).

This iterator can be used to perform either pre- or post-order traversals, or a combination of the two.

Source

pub fn pre_order_iter<'a>( &'a mut self, func: &'a Function, ) -> DfsPreOrderIter<'a>

Perform a pre-order traversal over the given function.

Yields ir::Block items.

Source

pub fn post_order_iter<'a>( &'a mut self, func: &'a Function, ) -> DfsPostOrderIter<'a>

Perform a post-order traversal over the given function.

Yields ir::Block items.

Source

pub fn clear(&mut self)

Clear this DFS, but keep its allocations for future reuse.

Trait Implementations§

Source§

impl Clone for Dfs

Source§

fn clone(&self) -> Dfs

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Dfs

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Dfs

Source§

fn default() -> Dfs

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Dfs

§

impl RefUnwindSafe for Dfs

§

impl Send for Dfs

§

impl Sync for Dfs

§

impl Unpin for Dfs

§

impl UnwindSafe for Dfs

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.