Compiler testing via a theory of sound optimisations in the C11/C++11 memory model - Inria - Institut national de recherche en sciences et technologies du numérique Access content directly
Conference Papers Year : 2013

Compiler testing via a theory of sound optimisations in the C11/C++11 memory model

Abstract

Compilers sometimes generate correct sequential code but break the concurrency memory model of the programming language: these subtle compiler bugs are observable only when the miscompiled functions interact with concurrent contexts, making them particularly hard to detect. In this work we design a strategy to reduce the hard problem of hunting concurrency compiler bugs to differential testing of sequential code and build a tool that puts this strategy to work. Our first contribution is a theory of sound optimisations in the C11/C++11 memory model, covering most of the optimisations we have observed in real compilers and validating the claim that common compiler optimisations are sound in the C11/C++11 memory model. Our second contribution is to show how, building on this theory, concurrency compiler bugs can be identified by comparing the memory trace of compiled code against a reference memory trace for the source code. Our tool identified several mistaken write introductions and other unexpected behaviours in the latest release of the gcc compiler.

Dates and versions

hal-00909083 , version 1 (25-11-2013)

Identifiers

Cite

Robin Morisset, Pankaj Pawan, Francesco Zappa Nardelli. Compiler testing via a theory of sound optimisations in the C11/C++11 memory model. PLDI 2013 - 34th ACM SIGPLAN conference on Programming language design and implementation, Jun 2013, Seattle, WA, United States. pp.187-196, ⟨10.1145/2491956.2491967⟩. ⟨hal-00909083⟩
130 View
0 Download

Altmetric

Share

Gmail Mastodon Facebook X LinkedIn More