Abstract
We present a new architecture for specifying and proving optimizing compilers in the presence of shared-memory interactions such as buffer-based system calls, shared-memory concurrency, and separate compilation. The architecture, which is implemented in the context of CompCert, includes a novel interaction-oriented model for C-like languages, and a new proof technique, called logical simulation relations, for compositionally proving compiler correctness with respect to this interaction model. We apply our techniques to CompCert’s primary memory-reorganizing compilation phase, Cminorgen. Our results are formalized in Coq, building on the recently released CompCert 2.0.
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
Download to read the full chapter text
Chapter PDF
References
Appel, A.W., et al.: Program logics for certified compilers, Cambridge (2014)
Ahmed, A., Dreyer, D., Rossberg, A.: State-dependent representation independence. In: POPL (2009)
Appel, A.W.: Verified software toolchain. In: Barthe, G. (ed.) ESOP 2011. LNCS, vol. 6602, pp. 1–17. Springer, Heidelberg (2011)
Benton, N., Hur, C.-K.: Biorthogonality, step-indexing and compiler correctness. In: ICFP, New York, pp. 97–108 (2009)
Benton, N., Hur, C.-K.: Realizability and compositional compiler correctness for a polymorphic language. Tech. Report MSR-TR-2010-62, Microsoft Research (2010)
Dreyer, D., Neis, G., Birkedal, L.: The impact of higher-order state and control effects on local relational reasoning. ACM SIGPLAN Notices 45, 143–156 (2010)
Hur, C.-K., Dreyer, D., Neis, G., Vafeiadis, V.: The marriage of bisimulations and Kripke logical relations. In: POPL (2012)
Hur, C.-K., Neis, G., Dreyer, D., Vafeiadis, V.: Parametric bisimulations: A logical step forward, draft (2013)
Jones, C.B.: Tentative steps toward a development method for interfering programs. TOPLAS 5(4), 596–619 (1983)
Leroy., X., et al.: The CompCert memory model, version 2. Tech. Report RR-7987, INRIA (2012)
Leroy, X., Blazy, S.: Formal verification of a C-like memory model and its uses for verifying program transformations. JAR 41(1) (2008)
Leroy, X.: The CompCert verified compiler, software & ann. proof (2011)
Liang, H., Feng, X., Fu, M.: A rely-guarantee-based simulation for verifying concurrent program transformations. In: POPL (2012)
Ni, Z., Shao, Z.: Certified assembly programming with embedded code pointers. In: POPL (2006)
O’Hearn, P.W.: Resources, concurrency and local reasoning. Theoretical Computer Science 375(1), 271–307 (2007)
Plotkin, G.: Lambda-definability and logical relations, School of Artificial Intelligence, University of Edinburgh (1973)
Pitts, A., Stark, I.: Operational reasoning for functions with local state. Higher Order Operational Techniques in Semantics, 227–273 (1998)
Reynolds, J.: On the relation between direct and continuation semantics. Automata, Languages and Programming, 141–156 (1974)
Ŝevčik, J., Vafeiadis, V. Zappa Nardelli, F. Jagannathan, S., and Sewell, P.: Relaxed-memory concurrency and verified compilation. ACM SIGPLAN Notices 46(1), 43–54 (2011)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Beringer, L., Stewart, G., Dockins, R., Appel, A.W. (2014). Verified Compilation for Shared-Memory C. In: Shao, Z. (eds) Programming Languages and Systems. ESOP 2014. Lecture Notes in Computer Science, vol 8410. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-54833-8_7
Download citation
DOI: https://doi.org/10.1007/978-3-642-54833-8_7
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-54832-1
Online ISBN: 978-3-642-54833-8
eBook Packages: Computer ScienceComputer Science (R0)