AliasDomain

Struct AliasDomain 

Source
pub struct AliasDomain {
    parent: Vec<usize>,
    rank: Vec<usize>,
}
Expand description

Alias domain using Union-Find data structure

Fields§

§parent: Vec<usize>

Parent array for Union-Find

§rank: Vec<usize>

Rank for path compression

Implementations§

Source§

impl AliasDomain

Source

pub fn new(num_places: usize) -> Self

Create a new domain with n places

Source

pub fn find(&mut self, idx: usize) -> usize

Find the representative of a place (with path compression)

Source

pub fn union(&mut self, idx1: usize, idx2: usize) -> bool

Union two places (returns true if they were not already aliased)

Source

pub fn are_aliased(&mut self, idx1: usize, idx2: usize) -> bool

Check if two places are aliased

Source

pub fn remove_aliases(&mut self, idx: usize)

Remove all aliases for a place (used in kill phase) This correctly handles the case where idx is the root of a connected component

Source

pub fn remove_aliases_with_prefix( &mut self, place_id: &PlaceId, place_info: &PlaceInfo<'_>, )

Remove all aliases for a place and all its field projections This ensures that when lv is killed, all lv.* are also killed

Source

pub fn get_all_alias_pairs(&self) -> Vec<(usize, usize)>

Get all alias pairs (for debugging/summary extraction)

Trait Implementations§

Source§

impl Clone for AliasDomain

Source§

fn clone(&self) -> AliasDomain

Returns a duplicate 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 AliasDomain

Source§

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

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

impl DebugWithContext<FnAliasAnalyzer<'_>> for AliasDomain

§

fn fmt_with(&self, _ctxt: &C, f: &mut Formatter<'_>) -> Result<(), Error>

§

fn fmt_diff_with( &self, old: &Self, ctxt: &C, f: &mut Formatter<'_>, ) -> Result<(), Error>

Print the difference between self and old. Read more
Source§

impl JoinSemiLattice for AliasDomain

Source§

fn join(&mut self, other: &Self) -> bool

Computes the least upper bound of two elements, storing the result in self and returning true if self has changed. Read more
Source§

impl PartialEq for AliasDomain

Source§

fn eq(&self, other: &AliasDomain) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for AliasDomain

Source§

impl StructuralPartialEq for AliasDomain

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

Source§

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

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V