pub struct SccPath {
pub blocks: Vec<usize>,
pub exit_successors: Vec<usize>,
}Expand description
A single enumerated acyclic path through an SCC region.
blocks is the ordered sequence of MIR block indices from the SCC entry
to the last block before exiting. The last block may have multiple CFG
successors outside the SCC (e.g. a SwitchInt branching to different
out-of-SCC targets), which are stored in exit_successors.
For example, in a loop with switch x { A => loop_body, B => done1, C => done2 },
the corresponding SccPath would have exit_successors = [done1, done2]
— the DFS forks recursively into each of these when constructing whole-CFG paths.
Fields§
§blocks: Vec<usize>§exit_successors: Vec<usize>Trait Implementations§
Auto Trait Implementations§
impl Freeze for SccPath
impl RefUnwindSafe for SccPath
impl Send for SccPath
impl Sync for SccPath
impl Unpin for SccPath
impl UnwindSafe for SccPath
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more