fn compute_back_edges(&self, head: usize) -> Result<FxHashSet<(usize, usize)>> {
        let mut back_edges: FxHashSet<(usize, usize)> = FxHashSet::default();

        for (node, dominators) in self.compute_dominators(head)? {
            for successor in &self.successors[&node] {
                if dominators.contains(successor) {
                    back_edges.insert((node, *successor));
                }
            }
        }

        Ok(back_edges)
    }
/// Computes the set of back edges
///
/// Back edges are edges whose heads dominate their tails.
Computes the set of back edges
Back edges are edges whose heads dominate their tails.
Computes the set of back edges Back edges are edges whose heads dominate their tails .
fn compute_back_edges(&self, head: usize) -> Result<FxHashSet<(usize, usize)>> {
        let mut back_edges: FxHashSet<(usize, usize)> = FxHashSet::default();
        for (node, dominators) in self.compute_dominators(head)? {
            for successor in &self.successors[&node] {
                if dominators.contains(successor) {
                    back_edges.insert((node, *successor));
                }
            }
        }
        Ok(back_edges)
    }
fn compute_back_edges ( & self , head : usize ) -> Result < FxHashSet < ( usize , usize ) > > { let mut back_edges : FxHashSet < ( usize , usize ) > = FxHashSet :: default ( ) ; for ( node , dominators ) in self . compute_dominators ( head ) ? { for successor in & self . successors [ & node ] { if dominators . contains ( successor ) { back_edges . insert ( ( node , * successor ) ) ; } } } Ok ( back_edges ) }
Computes the set of back edges
Back edges are edges whose heads dominate their tails.
Computes the set of back edges Back edges are edges whose heads dominate their tails .
&self
head
usize
&self
head
usize