SSA without Dominance for Higher-Order Programs

📅 2026-04-10
📈 Citations: 0
✨ Influential: 0
📄 PDF
🤖 AI Summary
Traditional dominance-based static single assignment (SSA) forms struggle to accurately capture data dependencies in higher-order languages, limiting their precision and applicability. This work proposes a novel SSA paradigm that dispenses with dominance relations altogether, instead modeling data flow through free variables as the central abstraction. Dependencies are explicitly represented via φ-functions and function parameters, while a nested tree structure generalizes the conventional dominance tree to naturally accommodate higher-order features. The approach is complemented by an efficient mechanism for maintaining free variable sets and an algorithm for constructing the nested trees. Experimental results demonstrate that the method scales near-linearly (log-linearly) with program size, significantly enhancing both precision and scalability in the analysis of higher-order programs.

Technology Category

Constraint Satisfaction and Optimization: Satisfiability Modulo TheoriesKnowledge Representation and Reasoning: Computational Complexity of ReasoningSearch and Optimization: Heuristic Search

Application Category

Graph Algorithms and Modeling for the Web: Algorithms and analysis for heterogeneous, signed, attributed, multi-relational, temporal, higher-order, and annotated Web-related graphsSemantics and Knowledge: Methods, algorithms and applications for the development of semantic models, knowledge graphs and other forms of structured data models with machine-interpretable semanticsSearch and Retrieval-Augmented AI: Web query analysis, representation and understanding
📝 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.
Problem

Research questions and friction points this paper is trying to address.

SSA
dominance
higher-order programs
control-flow graph
data flow
Innovation

Methods, ideas, or system contributions that make the work stand out.

static single assignment
higher-order programs
free variables
nesting tree
data dependence
🔎 Similar Papers
💼 Related Jobs
No related jobs found.