Compiler use

SSA form construction. Loop analysis (natural loops = dominator subtrees). Data flow analysis.

Advertisement

Naive algorithm

O(V·(V+E)): for each v, check which vertices' removal disconnects root from v.

Advertisement

Lengauer-Tarjan

O((V+E) · α(V+E)) via semi-dominators + link-eval trees. Complex but linearithmic in practice.

SSA

Static Single Assignment: use dominator tree + dominance frontiers to insert φ-functions. LLVM, GCC do this.