Proceedings of the 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages 2012
DOI: 10.1145/2103656.2103709
|View full text |Cite
|
Sign up to set email alerts
|

Formalizing the LLVM intermediate representation for verified program transformations

Abstract: This paper presents Vellvm (verified LLVM), a framework for reasoning about programs expressed in LLVM's intermediate representation and transformations that operate on it. Vellvm provides a mechanized formal semantics of LLVM's intermediate representation, its type system, and properties of its SSA form. The framework is built using the Coq interactive theorem prover. It includes multiple operational semantics and proves relations among them to facilitate different reasoning styles and proof techniques. To va… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
21
0

Year Published

2016
2016
2023
2023

Publication Types

Select...
5
4

Relationship

0
9

Authors

Journals

citations
Cited by 118 publications
(23 citation statements)
references
References 41 publications
(26 reference statements)
0
21
0
Order By: Relevance
“…The Standard ML language variant CakeML (Kumar et al, 2014) has a verified compiler in HOL4 with a certified machine-code implementation produced by bootstrapping (applying the compiler to itself). Using the Vellvm (Zhao et al, 2012) framework in Coq, proof engineers can reason about transformations on the LLVM intermediate language representation.…”
Section: Certified Compilersmentioning
confidence: 99%
“…The Standard ML language variant CakeML (Kumar et al, 2014) has a verified compiler in HOL4 with a certified machine-code implementation produced by bootstrapping (applying the compiler to itself). Using the Vellvm (Zhao et al, 2012) framework in Coq, proof engineers can reason about transformations on the LLVM intermediate language representation.…”
Section: Certified Compilersmentioning
confidence: 99%
“…In the first lecture we cover course texts (Compilers: principles, techniques and tools [1]) and Real World OCaml [6]), an overview of Compiler Technology (introducing concepts of lexing, parsing into AST representation, desugaring, semantic analysis, linearisation to SSA, high level optimization, RTL level optimization, and ABI conformance). A special focus was given to miscompilation and correctness (GNU C lexing [4], LLVM SSA optimizations [9]), and the CompCert C certified compiler [8]). The use of compilation techniques outside compilers were covered, such as the general use of parsers, transformations and optimizations.…”
Section: Lecture By Lecture Breakdownmentioning
confidence: 99%
“…8 Variables are of unbound integer type, Booleans are constants (and cannot be assigned/stored for sake of simplicity). 9 For any terminating program there exists a fueling parameter rendering a correct final configuration (as the "imp" language at hand does not model execution errors).…”
mentioning
confidence: 99%
“…We conjecture that our reinterpretation techniques can be generalized to most passes of CompCert down to assembly. While we leave such generalization as future work, some guarantees from C to assembly can be derived by instrumenting CompCert [Barthe et al 2014] and LLVM [Almeida et al 2016b;Zhao et al 2012Zhao et al , 2013 and turning them into certifying (rather than certified) compilers where security guarantees are statically rechecked on the compiled code through translation validation, thus re-establishing them independently of source-level security proofs. In this case, rather than being fully preserved down to the compiled code, Low * -level proofs are still useful to practically reduce the risk of failures in translation validation.…”
Section: From C * To Compcert Clight and Beyondmentioning
confidence: 99%