Formal verification of object layout for c+ multiple inheritance
Object layout the concrete in memory representation of objects raises many delicate issues in the case of the C+ language, owing in particular to multiple inheritance, C compatibility and separate compilation. This paper formalizes a family of C+ object layout schemes and mechanically proves their correctness against the operational semantics for multiple inheritance of Wasserrab et al. This formalization is flexible enough to account for space saving techniques such as empty base class optimization and tail padding optimization. As an application, we obtain the first formal correctness proofs for realistic, optimized object layout algorithms, including one based on the popular "common vendor" Itanium C+ application binary interface. This work provides semantic foundations to discover and justify new layout optimizations; it is also a first step towards the verification of a C+ compiler front end.
POPL '11