Optimizing compilation with preservation of structural code coverage metrics to support software testing

Raimund Kirner, Walter Haas

Research output: Contribution to journalArticlepeer-review

1 Citation (Scopus)
118 Downloads (Pure)


Code-coverage-based testing is a widely-used testing strategy with the aim of providing a meaningful decision criterion for the adequacy of a test suite. Code-coverage-based testing is also mandated for the development of safety-critical applications; for example, the DO178b document requires the application of the modified condition/decision coverage. One critical issue of code-coverage testing is that structural code coverage criteria are typically applied to source code whereas the generated machine code may result in a different code structure because of code optimizations performed by a compiler. In this work, we present the automatic calculation of coverage profiles describing which structural code-coverage criteria are preserved by which code optimization, independently of the concrete test suite. These coverage profiles allow to easily extend compilers with the feature of preserving any given code-coverage criteria by enabling only those code optimizations that preserve it. Furthermore, we describe the integration of these coverage profile into the compiler GCC. With these coverage profiles, we answer the question of how much code optimization is possible without compromising the error-detection likelihood of a given test suite. Experimental results conclude that the performance cost to achieve preservation of structural code coverage in GCC is rather low.
Original languageEnglish
Pages (from-to)184-218
Number of pages35
JournalSoftware Testing, Verification and Reliability
Issue number3
Early online date29 Aug 2012
Publication statusPublished - May 2014


  • structural code coverage
  • coverage preservation
  • source-level test-data generation


Dive into the research topics of 'Optimizing compilation with preservation of structural code coverage metrics to support software testing'. Together they form a unique fingerprint.

Cite this