paperbot · PL 论文追踪

全部论文 待读 收藏

P2 SSA without Dominance for Higher-Order Programs

面向高阶程序的无需支配关系的 SSA
PLDI 10(PLDI)2026匹配度 4/10 · 论文属于程序语言与静态分析基础工作,研究高阶程序的 SSA/数据流表示,与用户关注的 PL 与 AI/LLM 交叉(Agentic 程序静态分析、LLM 辅助分析、浮点/贝叶斯程序分析)没有直接关联;但其高阶程序分析与精度改进主题可作为相关静态分析背景。引用 0 inbox
Roland Leißa, Johannes Max Griebler
crossref: 2026-09-10

AI 速览

一句话:提出以自由变量为基础、用 φ 函数和函数参数直接表达数据依赖的 SSA 新基础,摆脱支配关系并支持高阶程序。

支配关系是 SSA 编译器的核心概念,支撑众多分析与变换,并要求每个使用被其定义支配。但论文指出该依赖存在精度与适用性问题:控制流过近似数据流,使基于支配的分析不精确;支配仅对一阶控制流图良定义,而高阶程序无显式 CFG,该定义失去意义。作者因此提出以自由变量为基础,让 φ 函数与函数参数直接表达数据依赖,从而重建传统分析、提高精度并自然支持高阶程序。论文还给出在可变 IR 中高效维护自由变量集的技术,并引入 nesting tree——按变量依赖而非控制流构造的支配树松弛对应物。基准显示算法与数据结构随程序规模对数线性扩展。

问题
传统 SSA 依赖支配关系,但控制流会过近似数据流导致精度损失,且支配仅对一阶控制流图良定义,难以适用于没有显式 CFG 的高阶程序。
方法
以自由变量替代支配作为 SSA 基础,使 φ 函数和函数参数直接表达数据依赖;提出在可变 IR 中高效维护自由变量集的方法,并引入由变量依赖而非控制流构造的 nesting tree。
评估
通过基准测试评估所提算法与数据结构,结果表明其运行时间随程序规模近似呈对数线性扩展。
原文摘要(Abstract)

Dominance is a fundamental concept in compilers based on static single assignment (SSA) form. It underpins a wide range of analyses and transformations and defines a core property of SSA: every use must be dominated by its definition. We argue that this reliance on dominance has become increasingly problematic—both in terms of precision and applicability to modern higher-order languages. First, control flow overapproximates data flow, which makes dominance-based analyses inherently imprecise. Second, dominance is well-defined only for first-order control-flow graphs (CFGs). More critically, higher-order programs violate the assumptions underlying SSA and classic CFGs: without an explicit CFG, the very notion that all uses of a variable must be dominated by its definition loses meaning. We propose an alternative foundation based on free variables. In this view, 𝜙-functions and function parameters directly express data dependencies, enabling analyses traditionally built on dominance while improving precision and naturally extending to higher-order programs. We further present an efficient technique for maintaining free-variable sets in a mutable intermediate representation (IR). For analyses requiring additional structure, we introduce the nesting tree—a relaxed analogue of the dominator tree constructed from variable dependencies rather than control flow. Our benchmarks demonstrate that the algorithms and data structures presented in this paper scale log-linearly with program size in practice.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot3776,
  title = {SSA without Dominance for Higher-Order Programs},
  author = {Roland Leißa and Johannes Max Griebler},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {10},
  number = {PLDI},
  year = {2026},
  doi = {10.1145/3808286}
}