Struct spirt::cfg::IncomingEdgeBundle
source · struct IncomingEdgeBundle<T> {
target: T,
accumulated_count: IncomingEdgeCount,
target_inputs: SmallVec<[Value; 2]>,
}
Expand description
An “(incoming) edge bundle” is a subset of the edges into a single target
.
When accumulated_count
reaches the total IncomingEdgeCount
for target
,
that IncomingEdgeBundle
is said to “effectively own” its target
(akin to
the more commonly used CFG domination relation, but more “incremental”).
Note: target
has a generic type T
to reduce redundancy when it’s
already implied (e.g. by the key in DeferredEdgeBundleSet
’s map).
Fields§
§target: T
§accumulated_count: IncomingEdgeCount
§target_inputs: SmallVec<[Value; 2]>
The Value
s that Value::ControlRegionInput { region, .. }
will get
on entry into region
, through this “edge bundle”.
Auto Trait Implementations§
impl<T> RefUnwindSafe for IncomingEdgeBundle<T>where
T: RefUnwindSafe,
impl<T> Send for IncomingEdgeBundle<T>where
T: Send,
impl<T> Sync for IncomingEdgeBundle<T>where
T: Sync,
impl<T> Unpin for IncomingEdgeBundle<T>where
T: Unpin,
impl<T> UnwindSafe for IncomingEdgeBundle<T>where
T: UnwindSafe,
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