Webs and Flow-Directed Well-Typedness Preserving Program Transformations
We define \emph{webs} to be the collections of producers and consumers (\emph{e.g.}, functions and calls) in a program that are constrained: in higher-order languages, multiple functions can flow to the same call, all of which must agree on an interface (\emph{e.g.}, calling convention). We argue that webs are fundamentally the \emph{unit of transformation}: a change to one member requires changes across the entire web. We introduce a web-centric intermediate language that exposes webs as annotations, and describe web-based (that is, flow-directed) transformations guided by these annotations. As they affect all members of a web, these transformations are interprocedural, operating over entire modules. Through the lens of webs we reframe and generalize a collection of transformations from the literature, including dead-parameter elimination, uncurrying, and defunctionalization, as well as describe novel transformations. We contrast this approach with rewriting strategies that rely on inlining and cascading rewrites.
Webs are an over-approximation of the semantic function-call relationship produced by control-flow analyses (CFA). This information is inherently independent from the transformations; more precise analyses permit more transformations. A limitation of precise analyses is that the transformations may not maintain well-typedness, as the type system is a less-precise static analysis. Our solution is a simple and lightweight typed-based analysis that causes the flow-directed transformations to preserve well-typedness, making flow-directed, type-preserving transformations easily accessible in many compilers. This analysis builds on unification, distinguishing types that \emph{look} the same from types that have to \emph{be} the same. Our experiments show that while our analysis is theoretically less precise, in practice its precision is similar to CFAs.
Wed 18 JunDisplayed time zone: Seoul change
10:30 - 12:10 | Compilers 1PLDI Research Papers at Grand Ball Room 2 Chair(s): Bor-Yuh Evan Chang University of Colorado Boulder & Amazon | ||
10:30 20mTalk | Partial Evaluation, Whole-Program Compilation PLDI Research Papers DOI Pre-print | ||
10:50 20mTalk | Exploiting Undefined Behavior in C/C++ Programs for Optimization: A Study on the Performance Impact PLDI Research Papers Lucian Popescu INESC-ID; Instituto Superior Técnico - University of Lisbon; Politehnica University of Bucharest, Nuno P. Lopes INESC-ID; Instituto Superior Técnico - University of Lisbon Link to publication DOI | ||
11:10 20mTalk | Relaxing Alias Analysis: Exploring the Unexplored Space PLDI Research Papers DOI | ||
11:30 20mTalk | Webs and Flow-Directed Well-Typedness Preserving Program Transformations PLDI Research Papers Benjamin Quiring University of Maryland, David Van Horn University of Maryland, John Reppy University of Chicago, Olin Shivers Northeastern University DOI | ||
11:50 20mTalk | Slotted E-Graphs: First-Class Support for (Bound) Variables in E-Graphs PLDI Research Papers Rudi Schneider Technische Universität Berlin, Marcus Rossel Barkhausen Institut, Amir Shaikhha University of Edinburgh, Andrés Goens University of Amsterdam, Thomas Koehler CNRS - ICube Lab, Michel Steuwer Technische Universität Berlin DOI Pre-print File Attached |