形式陈述
在单入口可达 CFG 上,给定支配关系 公理库 控制流图中的支配关系 Dominance in control-flow graphs · Dominator relation · 控制流支配 以从入口到节点的每条路径都经过某节点来刻画控制流中的必经关系,并区分严格支配与立即支配。 ,节点 x 的支配边界定义为
DF ( x ) = { y ∣ ∃ p ∈ pred ( y ) : x dom p ∧ ¬ ( x sdom y ) } , 其中 sdom 表示严格支配。量词要求 x 支配 y 的某个直接前驱,却不严格支配 y 本身;因此边界刻画 x 的“必经影响”在哪个汇合点不再覆盖全部来路。定义中的第二项不能误写为“x 不支配 y ”:当 x = y 时,x 自反地支配自己却不严格支配自己,循环头仍可能属于 DF ( x ) 。
集合 S 的边界取并 DF ( S ) = ⋃ x ∈ S DF ( x ) 。迭代支配边界是闭包
IDF ( S ) = μ Y . ( Y ∪ DF ( S ∪ Y ) ) , 可由从 Y 0 = ∅ 开始反复令 Y i + 1 = Y i ∪ DF ( S ∪ Y i ) 求得。支配树可由Lengauer–Tarjan 算法 公理库 支配树与 Lengauer–Tarjan 算法 Dominator tree · Lengauer–Tarjan algorithm · 支配树 在单入口流图中用 DFS 半支配点、延迟桶处理和带路径压缩的祖先查询计算立即支配点与支配树。 计算,但 DF 还要结合 CFG 前驱边,不能只看树的父子关系。
直觉
若 x 支配一段区域,那么从入口到区域内部总要经过 x 。当一条来自该区域的边与另一条能够绕开 x 的边汇合,汇合点就是 x 的支配边界。它像水流控制范围的岸线:岸线前的某条入口仍受 x 控制,跨过岸线后则不再保证所有路径都经过 x 。
边界不是几何距离为一的节点,也不是支配树中 x 的孩子集合。它取决于 CFG 的交叉边。一个节点可以离 x 很远仍处于 DF,也可以是 CFG 直接后继却仍被 x 严格支配,从而不在边界中。
例子与边界
对菱形 r → a , r → b , a → j , b → j ,a 支配前驱 a ,却不严格支配 j ,所以 j ∈ DF ( a ) ;同理 j ∈ DF ( b ) 。入口 r 严格支配 j ,故 j ∉ DF ( r ) 。逐项代入定义比凭“这是汇合点”猜测更可靠,因为不是每个汇合点都位于每个上游节点的边界。
再看循环 r → h , h → b , b → h , h → e 。h 支配回边前驱 b ,且 h 不严格支配自身,所以 h ∈ DF ( h ) 。这一自边界正是循环变量需要在头部继续合流的图论原因。若错误地要求 x 完全不支配 y ,便会漏掉循环头 φ。
DF 只看控制流结构,不看某变量是否活跃。假设 a 中定义 x ,但 j 后从未读取 x ,j 仍在 DF ( a ) ;据此放置的 φ 可能是死的。pruned SSA 需额外检查 x 在候选块入口是否 live,而不能修改 DF 的定义来偷带数据流条件。
推论与应用
若变量 v 的原始定义块集合为 Def ( v ) ,经典 minimal SSA 在 IDF ( Def ( v ) ) 放置 φ。迭代是必要的:新放置的 φ 自身成为一个定义,它的值可能在更下游再次与其他路径汇合。只计算一轮 DF 会在嵌套菱形或循环外汇合处漏掉定义。
计算 DF 的常见树算法对每个具有至少两个前驱的块 y ,从每个前驱 p 沿 idom 链上行,直到 idom ( y ) ,把 y 加入途中节点的 DF。这个过程依赖正确的支配树和前驱集合;异常边或不可达块若在两者中处理不一致,会生成无法解释的边界。
参考资料
Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck, “Efficiently Computing Static Single Assignment Form and the Control Dependence Graph,” ACM TOPLAS 13(4), 1991, pp. 451–490.
Jeanne Ferrante, Karl J. Ottenstein, and Joe D. Warren, “The Program Dependence Graph and Its Use in Optimization,” ACM TOPLAS 9(3), 1987, pp. 319–349.
Andrew W. Appel, Modern Compiler Implementation in ML , Cambridge University Press, 1998, Chapter 19.