Evaluating value-graph translation validation for LLVM

@inproceedings{Tristan2011EvaluatingVT,
  title={Evaluating value-graph translation validation for LLVM},
  author={Jean-Baptiste Tristan and Paul Govereau and J. Gregory Morrisett},
  booktitle={PLDI '11},
  year={2011}
}
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… 

Figures and Tables from this paper

Automatic Validation for Static Binary Translation
TLDR
A new validation mechanism for static binary translation is developed, which checks the correctness of emulation architecture state (the state of the emulated architecture) during program execution, which aims to speed up the automatic validation process.
An SMT Encoding of LLVM's Memory Model for Bounded Translation Validation
TLDR
This paper presents the first SMT encoding of LLVM’s memory model that is sufficiently precise to validate all ofLLVM”s intra-procedural memory optimizations, and enables bounded translation validation of programs with up to hundreds of thousands of lines of code.
Provably correct peephole optimizations with alive
TLDR
Alive is presented, a domain-specific language for writing optimizations and for automatically either proving them correct or else generating counterexamples, and can be automatically translated into C++ code that is suitable for inclusion in an LLVM optimization pass.
Validating optimizations of concurrent C/C++ programs
TLDR
A validator for checking the correctness of LLVM compiler optimizations on C11 programs as far as concurrency is concerned and uncovered a number of previously unknown compilation errors in the LLVM optimizations involving the C11 concurrency primitives.
Translation Validation for Transformations on Abstract Clocks in Synchronous Languages
TLDR
This work formally verify that the clock semantics is preserved during the transformations of a synchronous data-flow compiler, by introducing a refinement relation which expresses the preservation of clock semantics, as a relation on clock models.
Evaluating SDVG translation validation: from Signal to C
TLDR
This work describes how the preservation of value-equivalence of variables can be proved based on translation validation of synchronous data-flow value-graphs, and makes the check that the two output variables have the same value by normalizing SDVGs by some rewrite rules.
Language-parametric compiler validation with application to LLVM
TLDR
Keq is presented, the first program equivalence checker that is parametric to the input and output language semantics and has no dependence on the transformation between theinput and output programs.
Translation Validation for the LLVM Compiler
TLDR
Alive is extended to 1) reduce the SMT formula sizes generated to improve performance and 2) significantly increase analysis coverage with a new loop unrolling algorithm for loops written in Alive IR.
Translation validation for a verified OS kernel
TLDR
An approach for proving refinement between the formal semantics of a program on the C source level and its formal semantics on the binary level, thus checking the validity of compilation, including some optimisations, and linking, and extending static properties proved of the source code to the executable is presented.
Translation Validation for Clock Transformations in a Synchronous Compiler
TLDR
This work constructs a validator that formally verifies the preservation of clock semantics during the Signal compiler transformations, which is represented as a first-order logic formula called clock model, and introduces a refinement which expresses the preservationof clock semantics, as a relation on clock models.
...
...

References

SHOWING 1-10 OF 25 REFERENCES
A simple, verified validator for software pipelining
TLDR
A translation validation algorithm that uses symbolic evaluation to detect semantics discrepancies between a loop and its pipelined version and appears to be complete with respect to most modulo scheduling algorithms.
TVOC: A Translation Validator for Optimizing Compilers
We describe a tool called TVOC, that uses the translation validation approach to check the validity of compiler optimizations: for a given source program, TVOC proves the equivalence of the source
Validation of Interprocedural Optimizations
TLDR
This work presents a framework for translation validation of compiler optimization run that targets reactive procedural programs and accommodates most classical interprocedural optimizations such as global constant propagation, inlining, tail-recursion elimination, interprocesural dead code elimination, dead argument elimination, and cloning.
Translation validation for an optimizing compiler
TLDR
A practical translation validation infrastructure, able to check the correctness of many of the transformations performed by a realistic compiler, can be implemented with about the effort typically required to implement one compiler pass.
CoVaC: Compiler Validation by Program Analysis of the Cross-Product
TLDR
A deductive framework for proving program equivalence and its application to automatic verification of transformations performed by optimizing compilers, which accommodates absence of compiler annotations and handles most of the classical intraprocedural optimizations.
VOC: A Translation Validator for Optimizing Compilers
A PVS Based Framework for Validating Compiler Optimizations
TLDR
The design of a trusted framework for simulating transformation primitives and checking their soundness conditions based on PVS is presented and used for specifying and validating several optimizations viz. common subexpression elimination, optimal code placement, lazy codeMotion, loop invariant code motion, full and partial dead code elimination, etc.
Symbolic transfer function-based approaches to certified compilation
TLDR
This work proposes to design a checking procedure at the concrete level in order to validate both the transformation and the translation of abstract invariants on very large assembly programs feasible.
Equality saturation: a new approach to optimization
TLDR
The proposed way of structuring optimizers has a variety of benefits over previous approaches: it obviates the need to worry about optimization ordering, enables the use of a global optimization heuristic that selects among fully optimized programs, and can be used to perform translation validation, even on compilers other than the authors' own.
Translation Validation
TLDR
This paper considers a translation (compilation) from the synchronous multi-clock data-ow language Signal to asynchronous (sequential) C-code and presents the notion of translation validation as a new approach to the veriication of translators (compilers, code generators).
...
...