Abstract
Translation validators are static analyzers that attempt to verify that program transformations preserve semantics. Normalizing translation validators do so by trying to match the value-graphs of an original function and its transformed counterpart. In this paper, we present the design of such a validator for LLVM's intra-procedural optimizations, a design that does not require any instrumentation of the optimizer, nor any rewriting of the source code to compile, and needs to run only once to validate a pipeline of optimizations. We present the results of our preliminary experiments on a set of benchmarks that include GCC, a perl interpreter, SQLite3, and other C programs.
- LLVM 2.8. http://llvm.org.Google Scholar
- SQLite 3. http://www.sqlite.org.Google Scholar
- The Motor Industry Software Reliability Association. Guidelines for the use of the c language in critical systems. http://www.misra.org.uk, 2004.Google Scholar
- Clark W. Barrett, Yi Fang, Benjamin Goldberg, Ying Hu, Amir Pnueli, and Lenore Zuck. TVOC: A translation validator for optimizing compilers. In Computer Aided Verification, volume 3576 of Lecture Notes in Computer ScienceLNCS, pages 291--295. Springer, 2005. Google Scholar
- SPEC CPU2006. http://www.spec.org/cpu2006/.Google Scholar
- Paul Havlak. Construction of thinned gated single-assignment form. In Proc. 6rd Workshop on Programming Languages and Compilers for Parallel Computing, pages 477--499. Springer Verlag, 1993. Google Scholar
Digital Library
- John Hopcroft. An n log n algorithm for minimizing states of a finite automaton. In The Theory of Machines and Computations, 1971.Google Scholar
Cross Ref
- Aditya Kanade, Amitabha Sanyal, and Uday Khedker. A PVS based framework for validating compiler optimizations. In 4th Software Engineering and Formal Methods, pages 108--117. IEEE Computer Society, 2006. Google Scholar
Digital Library
- Xavier Leroy. Formal certification of a compiler back-end, or: programming a compiler with a proof assistant. In 33rd symposium Principles of Programming Languagessymp. Principles of Progr. Lang, pages 42--54. ACM Press, 2006. Google Scholar
Digital Library
- E. Moggi. Computational lambda-calculus and monads. In 4th Logic in computer science, pages 14--23. IEEE, 1989. Google Scholar
Digital Library
- George C. Necula. Translation validation for an optimizing compiler. In Programming Language Design and Implementation Prog. Lang. Design and Impl. 2000, pages 83--95. ACM Press, 2000. Google Scholar
- Amir Pnueli and Anna Zaks. Validation of interprocedural optimization. In Proc. Workshop Compiler Optimization Meets Compiler Verification (COCV 2008), Electronic Notes in Theoretical Computer Science. Elsevier, 2008.Google Scholar
- Amir Pnueli, Michael Siegel, and Eli Singerman. Translation validation. In Tools and Algorithms for Construction and Analysis of Systems, TACAS '98, volume 1384 of Lecture Notes in Computer ScienceLNCS, pages 151--166. Springer, 1998. Google Scholar
Digital Library
- Xavier Rival. Symbolic transfer function-based approaches to certified compilation. In 31st symposium Principles of Programming Languagessymp. Principles of Progr. Lang, pages 1--13. ACM Press, 2004. Google Scholar
Digital Library
- Simulink. http://mathworks.com.Google Scholar
- Ross Tate, Michael Stepp, Zachary Tatlock, and Sorin Lerner. Equality saturation: A new approach to optimization. In 36th Principles of Programming Languages, pages 264--276. ACM, 2009. Google Scholar
Digital Library
- Jean-Baptiste Tristan and Xavier Leroy. A simple, verified validator for software pipelining. In 37th Principles of Programming Languages, pages 83--92. ACM Press, 2010. Google Scholar
Digital Library
- Peng Tu and David Padua. Efficient building and placing of gating functions. In Programming Language Design and Implementation, pages 47--55, 1995. Google Scholar
Digital Library
- Daniel Weise, Roger F. Crew, Michael D. Ernst, and Bjarne Steensgaard. Value dependence graphs: Representation without taxation. In 21st Principles of Programming Languages, pages 297--310, 1994. Google Scholar
Digital Library
Index Terms
Evaluating value-graph translation validation for LLVM
Recommendations
Evaluating value-graph translation validation for LLVM
PLDI '11: Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and ImplementationTranslation validators are static analyzers that attempt to verify that program transformations preserve semantics. Normalizing translation validators do so by trying to match the value-graphs of an original function and its transformed counterpart. In ...
Translation and Run-Time Validation of Loop Transformations
This paper presents new approaches to the validation of loop optimizations that compilers use to obtain the highest performance from modern architectures. Rather than verify the compiler, the approach of translation validation performs a validation ...
SVF: interprocedural static value-flow analysis in LLVM
CC 2016: Proceedings of the 25th International Conference on Compiler ConstructionThis paper presents SVF, a tool that enables scalable and precise interprocedural Static Value-Flow analysis for C programs by leveraging recent advances in sparse analysis. SVF, which is fully implemented in LLVM, allows value-flow construction and ...







Comments