Proceedings Article10.1145/1140335.1140365
A type system equivalent to static single assignment
Yutaka Matsuno,Atsushi Ohori +1 more
- 10 Jul 2006
- pp 249-260
TL;DR: This paper develops a static type system equivalent to static single assignment (SSA) form that shows that a derivable typing of a program corresponds to the program in SSA form, and develops a type inference algorithm that reconstructs a type annotated code from a given code.
read more
Abstract: This paper develops a static type system equivalent to static single assignment (SSA) form. In this type system, a type of a variable at some program point represents the control flows from the assignment statements that reach the program point. For this type system, we show that a derivable typing of a program corresponds to the program in SSA form. By this result, any SSA transformation can be interpreted as a type inference process in our type system. By adopting a result on efficient SSA transformation, we develop a type inference algorithm that reconstructs a type annotated code from a given code. These results provide a static alternative to SSA based compiler optimization without performing code transformation. Since this process does not change the code, it does not incur overhead due to insertion of φ functions. Another advantage of this type based approach is that it is not constrained to naming mechanism of variables and can therefore be combined with other static properties useful for compilation and code optimization such as liveness information of variables. As an application, we express optimizations as type-directed code transformations
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Formal verification of SSA-based optimizations for LLVM
Jianzhou Zhao,Santosh Nagarakatte,Milo M. K. Martin,Steve Zdancewic +3 more
- 16 Jun 2013
TL;DR: This paper develops a proof technique for proving SSA-based program invariants and compiler optimizations and uses this technique in the Coq proof assistant to create mechanized correctness proofs of several "micro" transformations that form the building blocks for larger SSA optimizations.
Formal Verification of an SSA-Based Middle-End for CompCert
TL;DR: This work reports on a formally verified, SSA-based middle-end for CompCert, and addresses two problems raised by Leroy in [2009]: giving an intuitive formal semantics to SSA, and leveraging its global properties to reason locally about program optimizations.
38
A formally verified SSA-Based middle-end: Static single assignment meets compcert
Gilles Barthe,Delphine Demange,David Pichardie +2 more
- 24 Mar 2012
TL;DR: This work reports on the first formally verified, SSA-based, middle-end for CompCert, and addresses two problems raised by Leroy: giving a simple and intuitive formal semantics to SSA, and leveraging the global properties of SSA to reason locally about program optimizations.
Formal verification of SSA-based optimizations for LLVM
TL;DR: Modern compilers, such as LLVM and GCC, use a static single assignment(SSA) intermediate representation (IR) to simplify and enable many advanced optimizations, however, formally verifying the SSA is difficult.
A formal account of SSA in Java-like languages
Davide Ancona,Andrea Corradi +1 more
- 17 Jul 2016
TL;DR: FJSSA is introduced, a Java-like imperative calculus supporting programs in SSA form; it is defined its big-step operational semantics, and a judgment to statically check whether a program is in Ssa form is defined, and proved its soundness.
6
References
•Book
The Definition of Standard ML
Robin Milner,Mads Tofte,Robert Harper +2 more
- 01 Jan 1990
TL;DR: This book provides a formal definition of Standard ML for the benefit of all concerned with the language, including users and implementers, and the authors have defined their semantic objects in mathematical notation that is completely independent of StandardML.
2.7K
Efficiently computing static single assignment form and the control dependence graph
TL;DR: In this article, the authors present new algorithms that efficiently compute static single assignment forms and control dependence graphs for arbitrary control flow graphs using the concept of {\em dominance frontiers} and give analytical and experimental evidence that these data structures are usually linear in the size of the original program.
•Book
Principles of program analysis
Flemming Nielson,Hanne Riis Nielson,Chris Hankin +2 more
- 22 Oct 1999
TL;DR: This book is unique in providing an overview of the four major approaches to program analysis: data flow analysis, constraint-based analysis, abstract interpretation, and type and effect systems.
2.1K
Proof-carrying code
George C. Necula
- 01 Jan 1997
TL;DR: It is shown in this paper how proof-carrying code might be used to develop safe assembly-language extensions of ML programs and the adequacy of concrete representations for the safety policy, the safety proofs, and the proof validation is proved.
1.9K
Constant propagation with conditional branches
Mark N. Wegman,F. Kenneth Zadeck +1 more
TL;DR: Four algorithms, all conservitive in the sense that all constants may not be found, but each constant found is constant over all possible executions of the program, are presented.