We show that the weak memory model introduced by the 2011 C and C++ standards does not permit many common source-to-source program transformations (such as expression linearisation and “roach motel” reorderings) that modern compilers perform and that are deemed to be correct. As such it cannot be used to define the semantics of intermediate languages of compilers, as, for instance, LLVM aimed to. We consider a number of possible local fixes, some strengthening and some weakening the model. We evaluate the proposed fixes by determining which program transformations are valid with respect to each of the patched models. We provide formal Coq proofs of their correctness or counterexamples as appropriate
International audienceThis article presents the formal verification, using the Coq proof assistant, ...
Compilers are not always correct due to the complexity of language semantics and transformation algo...
Compilers are not always correct due to the complexity of language semantics and transformation algo...
We show that the weak memory model introduced by the 2011 C and C++ standards does not permit many c...
Abstract. This article presents the formal verification, using the Coq proof assistant, of a memory ...
Compilers sometimes generate correct sequential code but break the concurrency memory model of the p...
Modern multiprocessors architectures and programming languages exhibit weakly consistent memories. T...
International audienceCompilers sometimes generate correct sequential code but break the concurrency...
We analyse the validity of common optimisations on multi-threaded programs in two memory models—the ...
International audienceSemantics preserving compilation of low-level C programs is challenging becaus...
International audienceThe CompCert C compiler guarantees that the target program behaves as the sour...
Many hardware and compiler optimisations introduced to speed up single-threaded programs also introd...
Compilers transform programs, either to optimize performance or to translate language-level construc...
Modern processors deploy a variety of weak memory models, which for efficiency reasons may (appear t...
We analyse the validity of common optimisations on multi-threaded programs in two memory models—the ...
International audienceThis article presents the formal verification, using the Coq proof assistant, ...
Compilers are not always correct due to the complexity of language semantics and transformation algo...
Compilers are not always correct due to the complexity of language semantics and transformation algo...
We show that the weak memory model introduced by the 2011 C and C++ standards does not permit many c...
Abstract. This article presents the formal verification, using the Coq proof assistant, of a memory ...
Compilers sometimes generate correct sequential code but break the concurrency memory model of the p...
Modern multiprocessors architectures and programming languages exhibit weakly consistent memories. T...
International audienceCompilers sometimes generate correct sequential code but break the concurrency...
We analyse the validity of common optimisations on multi-threaded programs in two memory models—the ...
International audienceSemantics preserving compilation of low-level C programs is challenging becaus...
International audienceThe CompCert C compiler guarantees that the target program behaves as the sour...
Many hardware and compiler optimisations introduced to speed up single-threaded programs also introd...
Compilers transform programs, either to optimize performance or to translate language-level construc...
Modern processors deploy a variety of weak memory models, which for efficiency reasons may (appear t...
We analyse the validity of common optimisations on multi-threaded programs in two memory models—the ...
International audienceThis article presents the formal verification, using the Coq proof assistant, ...
Compilers are not always correct due to the complexity of language semantics and transformation algo...
Compilers are not always correct due to the complexity of language semantics and transformation algo...