CompCertS: A Memory-Aware Verified C Compiler Using a Pointer as Integer Semantics
The CompCert C compiler provides the formal guarantee that the observable behaviour of
the compiled code improves on the observable behaviour of the source code. In this paper,
we present a formally verified C compiler, CompCertS, which is essentially the CompCert
compiler, albeit with a stronger formal guarantee: it gives a semantics to more programs and
ensures that the memory consumption is preserved by the compiler. CompCertS is based on
an enhanced memory model where, unlike CompCert but like Gcc, the binary representation …
the compiled code improves on the observable behaviour of the source code. In this paper,
we present a formally verified C compiler, CompCertS, which is essentially the CompCert
compiler, albeit with a stronger formal guarantee: it gives a semantics to more programs and
ensures that the memory consumption is preserved by the compiler. CompCertS is based on
an enhanced memory model where, unlike CompCert but like Gcc, the binary representation …
Abstract
The CompCert C compiler provides the formal guarantee that the observable behaviour of the compiled code improves on the observable behaviour of the source code. In this paper, we present a formally verified C compiler, CompCertS, which is essentially the CompCert compiler, albeit with a stronger formal guarantee: it gives a semantics to more programs and ensures that the memory consumption is preserved by the compiler. CompCertS is based on an enhanced memory model where, unlike CompCert but like Gcc, the binary representation of pointers can be manipulated much like integers and where, unlike CompCert, allocation may fail if no memory is available. The whole proof of CompCertS is a significant proof-effort and we highlight the crux of the novel proofs of 12 passes of the back-end and a challenging proof of an essential optimising pass of the front-end.
Springer