Fact-checked by Grok 2 weeks ago

CompCert

CompCert is a formally verified optimizing compiler for a large subset of the ISO C programming language, designed primarily for compiling safety-critical and mission-critical embedded software. Developed initially at Inria by Xavier Leroy and collaborators starting in 2005, it generates assembly code for architectures including ARM, PowerPC, RISC-V, and x86 (both 32-bit and 64-bit), with formal machine-checked proofs using the Coq proof assistant ensuring semantic preservation from source to executable. The compiler supports most features of ISO C99 and some from C11, such as _Alignof and _Static_assert, while excluding elements like longjmp/setjmp and variable-length arrays to maintain verifiability, and it includes extensions for MISRA-C compliance and inline assembly. CompCert's core innovation lies in its end-to-end , covering the front-end ( and semantic analysis), middle-end (optimizations like constant propagation and ), and back-end (), with proofs guaranteeing that optimizations do not introduce miscompilations or violate source-level behaviors. This addresses a key reliability gap in software development for domains like , automotive, and , where compiler errors have historically caused issues, as highlighted in studies like John Regehr's 2011 analysis of compilers. Performance-wise, it achieves approximately 90% of GCC's -O1 optimization level on PowerPC benchmarks, balancing assurance with efficiency for systems. Since its first public release in 2008, CompCert has evolved through multiple versions, reaching 3.16 in September 2025, and transitioned to commercial distribution by AbsInt in under license from Inria, with free access for academic and research use. It has been qualified under standards like IEC 60880 for nuclear applications and for functional safety, enabling its adoption in certified environments such as projects, where it reduced worst-case execution time (WCET) by up to 12%. Notable recognitions include the 2022 ACM SIGPLAN Software Award and the 2021 ACM Software System Award, underscoring its impact on verified .

History

Origins and Development

The CompCert project was initiated by Xavier Leroy at Inria in 2005, motivated by the need for a trustworthy compiler in safety-critical embedded systems where compiler errors could lead to catastrophic failures, as highlighted in discussions on software reliability in domains like avionics. The project stemmed from discussions with industry experts, including Emmanuel Ledinot from Dassault Aviation, who emphasized the unreliability of existing C compilers in introducing subtle bugs during optimization, prompting Leroy to pursue formal verification as a means to guarantee semantic preservation. This initiative addressed a broader challenge in software engineering: ensuring that compiled code faithfully reflects the verified source code semantics in domains like avionics and automotive systems. Starting in 2005, the project received funding from the French National Research Agency () under grant ANR-05-SSIA-0019 and from Inria, enabling the expansion of the research effort over the subsequent years. These resources supported the development of a realistic prototype, with early work focusing on verifying a back-end for Cminor, a simple imperative intermediate language designed as a subset of . In 2006, Leroy published the initial mechanized proof of semantic preservation for this back-end, targeting PowerPC assembly, marking a foundational step in demonstrating the feasibility of verified compilation. Key collaborations involved researchers such as Sandrine Blazy, who contributed to the of the C front-end translating to Cminor, as detailed in their joint paper. Zaynah Dargaye also played a significant role in early prototype development, particularly in exploring verified front-ends for functional languages like mini-ML to Cminor. The initial prototype was developed using the proof assistant, which facilitated mechanized proofs of correctness, with the first substantial proof comprising around 20,000 lines of code. This approach laid the groundwork for CompCert's emphasis on rigorous, machine-checked verification to build confidence in outputs for critical applications.

Key Milestones and Releases

The development of CompCert began with a foundational publication in 2006, where presented the formal certification of a back-end for Cminor, an intermediate language, using the proof assistant to establish semantic preservation from Cminor to PowerPC assembly. This work laid the groundwork for verifying components mechanically, focusing on the back-end's correctness without addressing front-end aspects. In March 2008, the first public release (version 1.2) of CompCert was made available. In 2009, the full CompCert compiler was released, incorporating the Clight subset of the C language as its front-end and providing a comprehensive semantic preservation proof across the entire pipeline from Clight to assembly code for multiple architectures. This release marked a significant advancement, as it verified a realistic optimizing compiler end-to-end, excluding only a few C99 features like variable-length arrays. Between 2011 and 2012, CompCert saw expansions that included formal validation of and spilling mechanisms, ensuring these optimizations preserved semantics, alongside additions like verified alias analysis to support further code improvements. These enhancements strengthened the compiler's optimization capabilities while maintaining its verified status, with proofs integrated into the Coq-based framework. Version 3.0, released in 2017, introduced full support for 64-bit architectures, including the 64-bit PowerPC target, with adaptations to the pointer and models to handle larger address spaces. In 2019, an extension to CompCert was developed to preserve cryptographic constant-time properties, instrumenting the semantics of intermediate languages to prevent timing side-channel leaks in compiled code, as verified through enriched trace semantics. Publications in 2023 addressed refinements to the Clight semantics, exploring mechanized operational styles to better support verified compilation and reasoning over terminating and non-terminating behaviors in the C subset. CompCert continues to receive ongoing maintenance through regular releases, with the latest version 3.16 in September 2025 adding support for , , and , alongside improvements in integer optimizations. Commercial distribution and partnerships, notably with AbsInt since 2015, facilitate its industrial adoption for safety-critical applications.

Technical Design

Compiler Pipeline

The CompCert compiler operates as a modular consisting of multiple passes that transform into machine code while preserving semantics at each step. The overall flow begins with a subset of the C language known as Clight and proceeds through intermediate representations: Clight to Cminor, then to (Register Transfer Language), LTL (Linear Transfer Language), and finally to , before generating target-specific code. This sequence involves 20 distinct compilation passes across 11 languages, enabling isolated and of each . In the front-end, the pipeline starts with parsing the input Clight code—a simplified, type-annotated subset of C that excludes features like variable-length arrays—into abstract syntax trees (ASTs). This stage includes preprocessing (handled by an external tool like ), tokenization, and LR(1) parsing using a formally verified , followed by type checking and semantic to resolve scopes and ensure well-formedness. Subsequent passes in the front-end re-verify types, enforce a specific evaluation order for expressions, extract side effects into separate statements, simplify constructs, and allocate variables to locations or temporaries, producing the untyped Cminor language with both structured and unstructured . The middle-end focuses on high-level optimizations applied primarily to the RTL intermediate language, which represents code as control-flow graphs with three-address instructions and pseudo-registers. Key transformations here include constant propagation to replace variables with known values and to remove unreachable or unused code segments, alongside function inlining and to reduce redundancy. These passes convert Cminor to RTL and then to LTL, a linearized version of RTL that sequences instructions more linearly while maintaining the . The back-end handles target-specific code generation, starting from LTL and producing Mach, an abstract machine language that defines stack frame layouts and calling conventions. This involves instruction selection to map high-level operations to machine instructions, register allocation using the Iterated Register Coalescing algorithm to assign pseudo-registers to physical ones, and spilling/reloading for registers under pressure. The pipeline supports architectures such as PowerPC, ARM, and x86, with final output as an assembly AST that is printed to concrete syntax, augmented with debugging information, and assembled using external tools. The modular design of these passes allows for independent formal verification, ensuring that each transformation refines the semantics of the prior stage without introducing errors.

Supported Languages and Platforms

CompCert accepts programs written in CompCert C, a dialect that encompasses most of the ISO C99 standard with select features from ISO C11, such as _Alignas and _Static_assert, while excluding certain elements to ensure formal verifiability and deterministic behavior. This input language supports core C constructs including recursion, floating-point arithmetic (assuming IEEE 754 round-to-nearest mode), variadic functions via ellipsis notation, and unstructured control flow like goto statements, enabling compatibility with a broad range of safety-critical applications. However, it omits variable-length arrays, complex numbers, standard atomics, and threads, as these introduce non-determinism or complexity incompatible with the compiler's verification goals; macros like __STDC_NO_VLA__ and __STDC_NO_COMPLEX__ are predefined to reflect these limitations. Internally, CompCert C source is parsed and transformed into Clight, a simplified serving as the for the verified compilation , which enforces pure expressions, statement-based assignments, and structured switches by default for enhanced analyzability, though unstructured switches are optional via the -funstructured-switch flag. CompCert C includes extensions tailored for embedded and safety-critical systems, such as GNU-style inline (enabled with -finline-asm), s for custom memory sections (e.g., #pragma section), and attributes for and packing to adhere to target ABIs, facilitating precise control over layouts in resource-constrained environments. The compiler targets several architectures, generating assembly code that is formally verified to be bug-free with respect to the source semantics, prioritizing platforms common in embedded and high-assurance computing. Supported targets include 32-bit and 64-bit variants of x86 ( and ), PowerPC (including 64-bit with 32-bit pointers), (versions 6, 7, and 8 for 32-bit, plus for 64-bit), and (32-bit RV32 and 64-bit RV64). These platforms support specific memory models aligned with their ABIs, such as unaligned accesses on x86, PowerPC, and but not on , ensuring generated code reliability across diverse hardware. Limitations in CompCert C emphasize subsets conducive to verifiable, side-effect-free execution, such as treating volatile composite types as non-volatile with warnings and not fully optimizing longjmp/setjmp (requiring volatile qualifiers for correctness), which restricts its use for highly dynamic or concurrent code but bolsters confidence in deterministic outcomes. For integration, CompCert operates as a drop-in backend for , leveraging the latter for preprocessing (via -std=[c99](/page/C99)), assembly, and linking against standard libraries like glibc, or as a standalone via the ccomp command-line for direct to object files. This flexibility allows seamless embedding into existing C workflows while maintaining certification for the core compilation phases.

Formal Verification

Verification Approach

CompCert employs the proof assistant to formally specify the semantics of the C language and its intermediate representations using , and to mechanize proofs of compiler correctness. The compiler's functionality and proofs are developed entirely within , enabling machine-checked verification that the generated assembly code preserves the observable behaviors of the source C program. This approach ensures high assurance against miscompilations by reducing reliance on informal reasoning or testing. The is modular, with each of the approximately 20 passes in the verified independently. Correctness for each pass is established through refinement relations, often formalized as diagrams that relate the semantics of consecutive intermediate languages, such as from Clight to Cminor or to LTL. These local proofs are then composed to yield an end-to-end semantic preservation theorem for the entire . CompCert's memory model formalizes a concrete, byte-addressable representation supporting , treating as a collection of disjoint blocks with byte offsets to support pointer arithmetic and . Undefined behaviors, such as dereferencing pointers or out-of-bounds accesses, are excluded from the verified semantics by defining them as "going wrong" states, ensuring preservation only holds for well-defined programs. Proofs rely on Coq's built-in tactics for equational reasoning, , and induction, supplemented by custom tactics to manage simulation relations between program states and to maintain memory invariants across passes. These tools automate repetitive aspects of the proofs while requiring interactive guidance for complex cases involving or operations. The complete formalization, including specifications and proofs, comprises approximately 100,000 lines of code, developed over six person-years of effort.

Semantic Preservation Proofs

The semantic preservation proofs in CompCert establish that the compiler's transformations from source to target code maintain the observable behaviors of well-defined programs, ensuring no errors are introduced during . The core relies on backward , which relates the of the source program to those of the target program, guaranteeing that for every execution step in the target, there exists a corresponding locking step in the source that matches deterministic behaviors such as observable outputs and external interactions. To handle interactions with unverified components like libraries or operating systems, the proofs model external calls using axioms that assume these calls preserve validity and produce defined results without invalidating internal . This approach allows the semantic preservation to hold despite the axiomatization of external functions, treating them as oracles that do not introduce undefined effects on the compiled code. Semantic preservation is proven separately for each optimization and transformation pass in the pipeline, composing into an end-to-end theorem; for instance, the RTL generation pass (RTLgen) is shown to preserve the behaviors of Cminor programs through a backward that aligns expression evaluations and . These per-pass theorems ensure that optimizations like inlining, constant propagation, and do not alter the program's semantics for defined inputs. CompCert's proofs address by restricting the input language to exclude constructs like signed or , ensuring that only well-defined C programs are compiled; if is encountered, the compiler either rejects the program or produces a defined output that halts predictably, avoiding exploitation of such cases in the target code. In 2019, researchers developed a formally verified extension of CompCert (based on version 3.6) that preserves cryptographic constant-time by eliminating timing leaks from conditional branches and memory accesses, while adapting the backward simulations to track non-interference alongside the original semantic preservation theorems. As of version 3.16 (September 2025), the verification has been extended to include support for on , , and , ensuring semantic preservation for these new capabilities.

Features and Capabilities

Optimizations

CompCert incorporates a series of formally verified optimizations designed to improve code efficiency while preserving the semantics of the original C program, ensuring no miscompilations occur during transformation. These optimizations are integrated into the compiler's intermediate language pipeline and back-end passes, with proofs in Coq demonstrating that the transformed code behaves equivalently to the source under the CompCert C semantics. At the high level, in the Cminor intermediate representation, CompCert applies optimizations such as (CSE), which removes redundant computations by identifying and reusing identical expressions; constant propagation, which substitutes variables with known constant values; and , which discards unreachable or useless operations. Function inlining is also supported for functions marked with the inline keyword, reducing call overhead by embedding the function body directly at call sites. These passes rely on static analyses for value and neededness to enable safe transformations, though CompCert does not implement full or other aggressive loop optimizations to maintain verifiability. In the low-level back-end, from the (Register Transfer Language) to the intermediate representation, CompCert performs instruction selection to map abstract operations to target-specific machine instructions, such as using "rotate and mask" idioms on PowerPC architectures. optimizations are applied to simplify short instruction sequences, including if-conversion that replaces conditional branches with conditional moves where supported by the hardware. Spilling decisions, which temporarily store register values in memory when registers are scarce, are handled as part of the overall process to minimize performance impact. A key component is the verified register allocation using an iterated register coalescing algorithm based on , which assigns variables to registers while minimizing spills and preserving liveness—ensuring that values are not used before they are defined or after they are overwritten. This allocator is formally proved to maintain semantic , with the proof integrated into CompCert's end-to-end chain. In terms of performance, as reported in 2017, CompCert-generated code executes approximately 10-12% slower than at the -O1 optimization level on SPEC CPU2006 benchmarks for PowerPC targets, but it provides formal guarantees absent in unverified compilers; it is about 40% faster than -O0 and avoids aggressive techniques like to prioritize provable correctness over peak speed. Recent versions, such as 3.16 (September 2025), include minor performance improvements, notably for architectures and 64-bit integer operations, though updated comparative benchmarks are not available.

Security and Safety Aspects

CompCert's provides a key security guarantee by exempting the from miscompilation bugs, ensuring that the generated code behaves as specified by the source semantics. Unlike traditional , which have been known to introduce errors leading to incorrect or unsafe binaries—potentially causing vulnerabilities analogous to high-profile incidents like —CompCert's machine-checked proofs eliminate such risks, preserving source-level safety properties in the compiled output. This exemption is achieved through a comprehensive semantic preservation theorem, verified in , covering the majority of the pipeline. The compiler supports compliance with rigorous safety standards essential for critical systems. It enables certification credits up to Level A for , reducing verification efforts by allowing optimizations without compromising safety objectives. For industrial control applications, CompCert has been qualified in systems compliant with :2010 at 3, as demonstrated in MTU's digital engine control unit for emergency generators. These qualifications leverage the compiler's formal proofs to meet the stringent requirements of standards. In 2019, an extension to CompCert's verification framework introduced support for constant-time compilation, preventing timing side-channel attacks in cryptographic code. This modification ensures that secret-dependent control flows and memory accesses are eliminated during compilation, preserving the constant-time property from Clight source to x86 assembly. The proof, mechanized in , covers 17 of the compiler's passes using techniques like trace preservation and leakage erasing, adding robustness against attacks that exploit execution time variations. CompCert's formal memory model contributes to memory safety by enforcing the C standard's strict rules, which exclude undefined behaviors such as invalid pointer accesses that could lead to buffer overflows. This model, refined across compiler versions, assigns precise semantics to memory operations while assuming compliant source code free of undefined behaviors, thereby supporting formal reasoning about spatial in verified programs. Recent developments as of September 2025 include new security features developed through extensions like , enhancing capabilities for verified compilation in specialized . CompCert integrates with static tools like Astrée to enhance . Astrée uses CompCert's front-end for sound of runtime errors, achieving high coverage of coding guidelines and complementing the compiler's proofs for absence of errors in safety-critical code. This integration allows developers to combine compiler with analyzer guarantees, as seen in qualified embedded systems.

Impact and Applications

Adoption in Industry

CompCert has been commercially distributed by AbsInt Angewandte Informatik GmbH since a licensing agreement with Inria, offering an industrial version with additional features, , and for safety-critical embedded systems. In the aerospace industry, CompCert has seen adoption by France at its facility, where it has compiled safety-critical software for over a decade, enabling optimizations that reduce worst-case execution times in applications. It has also been integrated into research projects like the QSMA initiative with the , supporting certified code for terrain avoidance systems at DAL-C assurance levels. For automotive and rail sectors, CompCert has been qualified by under and related standards for engine control and propulsion systems, facilitating compliance in high-integrity applications such as those aligned with requirements. This qualification process streamlined certification credits, reducing development and testing efforts for safety-critical . CompCert forms the basis for research extensions, including the CertiCoq project, which develops a verified compiler for Coq programs using CompCert's backend to generate certified machine code. It also underpins the DeepSpec initiative, which advances formal verification of system software components, leveraging CompCert's proven correctness for broader deep specification efforts. Adoption remains constrained by CompCert's commercial licensing costs, which exceed those of open-source alternatives, and its support for a restricted subset of ISO C99, excluding features like variable-length arrays, longjmp/setjmp, and certain floating-point extensions to ensure verifiability. These factors limit its use to specialized, high-assurance environments rather than general-purpose development.

Awards and Recognition

CompCert has received several prestigious awards recognizing its contributions to formal verification and compiler technology. In 2012, Xavier Leroy was awarded the Microsoft Research Verified Software Milestone Award for his foundational work on the CompCert verified compiler, highlighting its pioneering role in mechanized proofs for realistic software systems. The project earned further acclaim in 2016 with the Best Paper Award at the Embedded Real Time Systems and Software (ERTS²) conference for the paper "A Formally Verified Optimizing Compiler" by Xavier Leroy, Sandrine Blazy, Daniel Kästner, Bernhard Schommer, Markus Pister, and Christian Ferdinand, which demonstrated the compiler's industrial applicability in embedded systems. In 2021, the ACM Software System Award was presented to the core development team, including Xavier Leroy, Sandrine Blazy, and Zaynah Dargaye, for creating CompCert as the first industrial-strength optimizing compiler with a machine-checked proof of correctness, influencing both academic research and practical software development. In 2022, the ACM SIGPLAN Programming Languages Software Award was awarded to the CompCert development team, including Xavier Leroy, Sandrine Blazy, and Zaynah Dargaye, recognizing its advancements in verified compilation for real-world programming languages. CompCert's influence extends beyond awards, with its seminal 2009 paper "Formal Verification of a Realistic Compiler" by cited over 1,980 times, underscoring its impact on verification research. The project has inspired subsequent efforts, such as the CakeML verified for , which builds on CompCert's approach to semantic preservation, and the Verified Software Toolchain (VST), which integrates CompCert for verifying C programs using . Its community impact is evident in educational initiatives, including tutorials and courses on verified compilers led by since 2011, such as those at the Oregon Programming Languages Summer School, which have trained numerous researchers in for compilers.

References

  1. [1]
    The CompCert C compiler
    Jul 4, 2023 · CompCert C is a compiler for the C programming language. Its intended use is the compilation of life-critical and mission-critical software written in C.
  2. [2]
    CompCert - Main page
    CompCert is a project that formally verifies compilers, creating a high-assurance C compiler with a mathematical proof of correctness.The CompCert C compiler · Downloads · Partners · Context and motivations
  3. [3]
    [PDF] The CompCert C verified compiler - Hal-Inria
    Dec 13, 2024 · Chapter 1 gives an overview of the CompCert C compiler and of the formal verification of compilers. • Chapter 2 explains how to install CompCert ...
  4. [4]
    [PDF] A formally verified compiler back-end - Xavier Leroy
    This article describes the development and formal verification of a compiler back-end from Cminor to PowerPC assembly code, using Coq.
  5. [5]
    CompCert: formally verified optimizing C compiler - AbsInt
    CompCert is the only production compiler that is formally verified, using machine-assisted mathematical proofs, to be exempt from miscompilation issues. The ...<|control11|><|separator|>
  6. [6]
    Interview with Xavier Leroy - People of Programming Languages
    Xavier Leroy is a senior scientist at INRIA interested in the scientific aspects of programming. ... Xavier's impactful work on CompCert, a formally verified C ...Missing: origins 2004-2005
  7. [7]
    Context and motivations - CompCert
    Jul 4, 2023 · The CompCert project puts forward a radical, mathematically-grounded solution to the miscompilation problem: the formal, tool-assisted verification of the ...
  8. [8]
    Partners - CompCert
    Jul 4, 2023 · The CompCert project has been supported by the following grants: ANR CompCert (grant number ANR-05-SSIA-0019), 2005-2008. Participants: INRIA ...Missing: funding | Show results with:funding
  9. [9]
    [PDF] Formal Verification of a C Compiler Front-end - Hal-Inria
    Oct 16, 2006 · Abstract. This paper presents the formal verification of a compiler front-end that translates a subset of the C language into the Cminor.<|control11|><|separator|>
  10. [10]
    [PDF] Formal Certification of a Compiler Back-end - Xavier Leroy
    Formal Certification of a Compiler Back-end or: Programming a Compiler with a Proof Assistant. Xavier Leroy. INRIA Rocquencourt. Xavier.Leroy@inria.fr. Abstract.
  11. [11]
    Formal certification of a compiler back-end or - ACM Digital Library
    Formal certification of a compiler back-end or: programming a compiler with a proof assistant. Proceedings of the 2006 POPL Conference.
  12. [12]
    Formal verification of a realistic compiler | Communications of the ACM
    This paper reports on the development and formal verification (proof of semantic preservation) of CompCert, a compiler from Clight (a large subset of the C ...
  13. [13]
    [PDF] Validating Register Allocation and Spilling - Xavier Leroy
    We implemented the validation algorithm and a prototype register allocator within the CompCert verified compiler [9]. Like all other verified parts of this.Missing: 2011 | Show results with:2011
  14. [14]
    Formal Verification of a Constant-Time Preserving C Compiler
    Aug 18, 2019 · Then, we instrument the operational semantics of CompCert intermediate languages so as to be able to capture cryptographic constant-time.
  15. [15]
    CompCert: A Journey through the Landscape of Mechanized ...
    From Mechanized Semantics to Verified Compilation: the Clight Semantics of CompCert. Fundamental Approaches to Software Engineering. Abstract.
  16. [16]
    [PDF] CompCert - A Formally Verified Optimizing Compiler - Hal-Inria
    Dec 7, 2015 · Like other compilers, CompCert is structured as a pipeline of compilation passes, depicted in Figure 1 along with the intermediate languages ...
  17. [17]
    The structure of CompCert - AbsInt
    CompCert is structured as a pipeline of 20 compilation passes that bridge the gap between C source files and object code, going through 11 intermediate ...
  18. [18]
    [PDF] The CompCert C verified compiler, Documentation and user's manual
    This document is the user's manual for the CompCert C verified compiler. It is organized as follows: • Chapter 1 gives an overview of the CompCert C ...Missing: 2012 | Show results with:2012<|control11|><|separator|>
  19. [19]
    Module Clight - CompCert
    The Clight language: a simplified version of Compcert C where all expressions are pure and assignments and function calls are statements, not expressions.Missing: features exclusions
  20. [20]
    [PDF] Formal verification of a realistic compiler - Xavier Leroy
    CompCert is a realistic, verified compiler with a machine-checked proof of semantic preservation, using Coq for programming and proving correctness.
  21. [21]
    Module Events - CompCert
    External calls cannot invalidate memory blocks. (Remember that freeing a block does not invalidate its block identifier.) ec_valid_block: forall ge vargs m1 ...
  22. [22]
    [PDF] Safe external calls from formally verified functional code - HAL
    For oracles that solve algorithmic problems, a common solution (e.g. register allocation in. CompCert) is to assume the external function to be pure even ...
  23. [23]
    Module Compiler - CompCert
    We define three translation functions for whole programs: one starting with a C program, one with a Cminor program, one with an RTL program. The three ...Missing: pipeline | Show results with:pipeline
  24. [24]
    [PDF] A Study on the Preservation of Cryptographic Constant-Time ...
    CompCert thus comes with the following semantics preser- vation theorem: Theorem 1 (Semantics preservation). ... The next pass is RTLgen which does not modify the.
  25. [25]
    [PDF] The Formally Verified Optimizing Compiler CompCert - Xavier Leroy
    The paper is structured as follows: in section 2 we give a top-level overview of the CompCert compiler and its tool flow. Section 3 summarizes the main code gen ...
  26. [26]
    [PDF] Formal Verification of a Constant-Time Preserving C Compiler
    Specifically, we consider the problem of secure compilation for CompCert [Blazy et al. 2006; Leroy 2006, 2009a], a formally-verified moderately optimizing ...
  27. [27]
    Formal verification of a constant-time preserving C compiler
    This paper focuses on compilation of cryptographic constant-time programs, and more specifically on the following question: is the code generated by a realistic ...
  28. [28]
    [PDF] CompCert: Practical Experience on Integrating and Qualifying a ...
    This simplifies the task of static analysis such that for safety-critical embedded systems it is possible to formally prove the absence of runtime errors ...Missing: motivations | Show results with:motivations
  29. [29]
    Chapter 1 CompCert C: a trustworthy compiler
    1 Supported target platforms. CompCert C provides code generators for the following architectures: PowerPC 32 bits and 64 bits (in 32-bit pointers mode);; ARM ...
  30. [30]
    [PDF] A Formally-Verified Alias Analysis - Xavier Leroy
    Our aim, in this paper, is to equip the CompCert C compiler with a may-alias analysis, in order to enable this compiler to per- form more aggressive ...Missing: strict | Show results with:strict
  31. [31]
    [PDF] A Concrete Memory Model for CompCert - Inria
    This paper presents the proof of an enhanced and more concrete memory model for the CompCert C compiler which as- signs a definite meaning to more C programs.
  32. [32]
    [PDF] CompCert: Practical Experience on Integrating and ... - AbsInt
    Nov 21, 2017 · This article gives an overview of the use of CompCert to gain certification credits for a highly safety-critical industry application, certified ...Missing: adoption partnership
  33. [33]
    CertiCoq | A verified compiler for Coq
    The goal of the CertiCoq project is to build an end-to-end verified compiler for Gallina, bridging the gap between formally verified source programs and their ...Missing: research | Show results with:research
  34. [34]
    Research Overview - The Science of Deep Specification
    CompCert's C spec was designed and exercised in proving CompCert correct, and (from the client's point of view) can be underspecified or overrestrictive.Missing: extensions | Show results with:extensions
  35. [35]
    The subset of C supported by CompCert - AbsInt
    CompCert supports all of ISO C 99, with the following exceptions: Variable-length arrays are not supported. longjmp and setjmp are not guaranteed to work.Missing: adoption cost
  36. [36]
    Programming Languages in the Eternal City - Microsoft Research
    Jan 22, 2013 · During a plenary session, the Microsoft Research Verified Software Milestone Award was presented to Leroy to recognize his role as architect of ...
  37. [37]
    Zaynah Dargaye - ACM Awards
    CompCert represents a quantum leap that made this a reality, with the code produced by it comparable in speed to state-of-the-art alternatives, at the cost of ...
  38. [38]
    ‪Xavier Leroy‬ - ‪Google Scholar‬
    CompCert-a formally verified optimizing compiler. X Leroy, S Blazy, D Kästner, B Schommer, M Pister, C Ferdinand. ERTS 2016: Embedded Real Time Software and ...
  39. [39]
    [PDF] PureCake: A Verified Compiler for a Lazy Functional Language
    Mar 31, 2023 · Inspired by CompCert, the verified CakeML [Kumar et al. 2014; Myreen 2021a] compiler compiles a Standard ML-like language. Note that CakeML is a ...Missing: VST | Show results with:VST
  40. [40]
    [PDF] VST-Floyd: A separation logic tool to verify correctness of C programs
    Jan 23, 2018 · The back end of CompCert translates C light to assembly language, and is proved correct w.r.t. the operational semantics of C light and assembly ...
  41. [41]
    Proving a Compiler - Xavier Leroy
    Compiler verification "in the large" : an overview of the CompCert verified C compiler. We will use the Coq proof assistant and build on the formalization ...Missing: tutorials | Show results with:tutorials
  42. [42]
    [PDF] Ben Greenman CompCert Overview
    Nov 19, 2015 · In 2011 and 2012, Xavier Leroy taught a short course on verified compilers at the Oregon Programming. Languages Summer School.16 The course ...Missing: motivations | Show results with:motivations