Effective Analysis of C Programs by Rewriting Variability
Alexandru Florin Iosif-Lazar (IT University of Copenhagen, Denmark),, Jean Melo (IT University of Copenhagen, Denmark), Aleksandar S. Dimovski (IT, University of Copenhagen, Denmark), Claus Brabrand (IT University of, Copenhagen, Denmark)

TL;DR
This paper introduces transformations that convert variability-intensive C program families into single programs with run-time variability, enabling the use of standard analysis tools for verification and bug detection.
Contribution
It proposes outcome-preserving transformations that translate compile-time variability into run-time non-determinism, facilitating analysis with existing tools.
Findings
Discovered variability-related bugs in real-world C programs
Transformations are proven correct for a core imperative language
Enabled effective analysis using tools like Frama-C, Clang, LLBMC
Abstract
Context. Variability-intensive programs (program families) appear in many application areas and for many reasons today. Different family members, called variants, are derived by switching statically configurable options (features) on and off, while reuse of the common code is maximized. Inquiry. Verification of program families is challenging since the number of variants is exponential in the number of features. Existing single-program analysis and verification tools cannot be applied directly to program families, and designing and implementing the corresponding variability-aware versions is tedious and laborious. Approach. In this work, we propose a range of variability-related transformations for translating program families into single programs by replacing compile-time variability with run-time variability (non-determinism). The obtained transformed programs can be subsequently…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
