pub struct DominanceFrontier {
pub join_vars: HashSet<LcnfVarId>,
}Expand description
A “dominance frontier” in the LCNF tree sense.
In LCNF, the IR is tree-structured. A variable x defined in an
ancestor let-binding dominates all uses below it. A dominance
frontier arises only at Case merge points, where different branches
may define different values for a variable.
We represent the frontier simply as the set of LcnfVarIds that are
defined in at least one branch of a case expression but used after the
case expression (i.e., in code that post-dominates the case).
Fields§
§join_vars: HashSet<LcnfVarId>Variables that are live across at least one case-branch boundary.
Trait Implementations§
Source§impl Debug for DominanceFrontier
impl Debug for DominanceFrontier
Source§impl Default for DominanceFrontier
impl Default for DominanceFrontier
Source§fn default() -> DominanceFrontier
fn default() -> DominanceFrontier
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for DominanceFrontier
impl RefUnwindSafe for DominanceFrontier
impl Send for DominanceFrontier
impl Sync for DominanceFrontier
impl Unpin for DominanceFrontier
impl UnsafeUnpin for DominanceFrontier
impl UnwindSafe for DominanceFrontier
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