Compositional verification of compiler optimisations on relaxed memory
From MaRDI portal
Abstract: A valid compiler optimisation transforms a block in a program without introducing new observable behaviours to the program as a whole. Deciding which optimisations are valid can be difficult, and depends closely on the semantic model of the programming language. Axiomatic relaxed models, such as C++11, present particular challenges for determining validity, because such models allow subtle effects of a block transformation to be observed by the rest of the program. In this paper we present a denotational theory that captures optimisation validity on an axiomatic model corresponding to a fragment of C++11. Our theory allows verifying an optimisation compositionally, by considering only the block it transforms instead of the whole program. Using this property, we realise the theory in the first push-button tool that can verify real-world optimisations under an axiomatic memory model.
Recommendations
Cited in
(10)- Explaining relaxed memory models with program transformations
- \textsc{CompCertS}: a memory-aware verified C compiler using a pointer as integer semantics
- Common compiler optimisations are invalid in the C11 memory model and what we can do about it
- Modular relaxed dependencies in weak memory concurrency
- Verifying optimizations for concurrent programs
- A verifiable SSA program representation for aggressive compiler optimization
- CompCertTSO
- Computer Algebra in Scientific Computing
- A Framework for Formal Verification of Compiler Optimizations
- Two-sorted algebraic decompositions of Brookes's shared-state denotational semantics
This page was built for publication: Compositional verification of compiler optimisations on relaxed memory
Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q2324020)