English

Compositional Verification of Compiler Optimisations on Relaxed Memory

Programming Languages 2018-02-19 v1

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.

Keywords

Cite

@article{arxiv.1802.05918,
  title  = {Compositional Verification of Compiler Optimisations on Relaxed Memory},
  author = {Mike Dodds and Mark Batty and Alexey Gotsman},
  journal= {arXiv preprint arXiv:1802.05918},
  year   = {2018}
}

Comments

Extended version of the paper from ESOP'18

R2 v1 2026-06-23T00:24:29.692Z