---
_id: '30511'
abstract:
- lang: eng
  text: <jats:title>Abstract</jats:title><jats:p>Many critical codebases are written
    in C, and most of them use preprocessor directives to encode variability, effectively
    encoding software product lines. These preprocessor directives, however, challenge
    any static code analysis. SPLlift, a previously presented approach for analyzing
    software product lines, is limited to Java programs that use a rather simple feature
    encoding and to analysis problems with a finite and ideally small domain. Other
    approaches that allow the analysis of real-world C software product lines use
    special-purpose analyses, preventing the reuse of existing analysis infrastructures
    and ignoring the progress made by the static analysis community. This work presents
    <jats:sc>VarAlyzer</jats:sc>, a novel static analysis approach for software product
    lines. <jats:sc>VarAlyzer</jats:sc> first transforms preprocessor constructs to
    plain C while preserving their variability and semantics. It then solves any given
    distributive analysis problem on transformed product lines in a variability-aware
    manner. <jats:sc>VarAlyzer</jats:sc> ’s analysis results are annotated with feature
    constraints that encode in which configurations each result holds. Our experiments
    with 95 compilation units of OpenSSL show that applying <jats:sc>VarAlyzer</jats:sc>
    enables one to conduct inter-procedural, flow-, field- and context-sensitive data-flow
    analyses on entire product lines for the first time, outperforming the product-based
    approach for highly-configurable systems.</jats:p>
alternative_title:
- Revoking the preprocessor’s special role
article_number: '35'
article_type: original
author:
- first_name: Philipp
  full_name: Schubert, Philipp
  id: '60543'
  last_name: Schubert
  orcid: 0000-0002-8674-1859
- first_name: Paul
  full_name: Gazzillo, Paul
  last_name: Gazzillo
- first_name: Zach
  full_name: Patterson, Zach
  last_name: Patterson
- first_name: Julian
  full_name: Braha, Julian
  last_name: Braha
- first_name: Fabian Benedikt
  full_name: Schiebel, Fabian Benedikt
  id: '55745'
  last_name: Schiebel
  orcid: 0009-0008-6867-9802
- first_name: Ben
  full_name: Hermann, Ben
  id: '66173'
  last_name: Hermann
  orcid: 0000-0001-9848-2017
- first_name: Shiyi
  full_name: Wei, Shiyi
  last_name: Wei
- first_name: Eric
  full_name: Bodden, Eric
  id: '59256'
  last_name: Bodden
  orcid: 0000-0003-3470-3647
citation:
  ama: Schubert P, Gazzillo P, Patterson Z, et al. Static data-flow analysis for software
    product lines in C. <i>Automated Software Engineering</i>. 2022;29(1). doi:<a
    href="https://doi.org/10.1007/s10515-022-00333-1">10.1007/s10515-022-00333-1</a>
  apa: Schubert, P., Gazzillo, P., Patterson, Z., Braha, J., Schiebel, F. B., Hermann,
    B., Wei, S., &#38; Bodden, E. (2022). Static data-flow analysis for software product
    lines in C. <i>Automated Software Engineering</i>, <i>29</i>(1), Article 35. <a
    href="https://doi.org/10.1007/s10515-022-00333-1">https://doi.org/10.1007/s10515-022-00333-1</a>
  bibtex: '@article{Schubert_Gazzillo_Patterson_Braha_Schiebel_Hermann_Wei_Bodden_2022,
    title={Static data-flow analysis for software product lines in C}, volume={29},
    DOI={<a href="https://doi.org/10.1007/s10515-022-00333-1">10.1007/s10515-022-00333-1</a>},
    number={135}, journal={Automated Software Engineering}, publisher={Springer Science
    and Business Media LLC}, author={Schubert, Philipp and Gazzillo, Paul and Patterson,
    Zach and Braha, Julian and Schiebel, Fabian Benedikt and Hermann, Ben and Wei,
    Shiyi and Bodden, Eric}, year={2022} }'
  chicago: Schubert, Philipp, Paul Gazzillo, Zach Patterson, Julian Braha, Fabian
    Benedikt Schiebel, Ben Hermann, Shiyi Wei, and Eric Bodden. “Static Data-Flow
    Analysis for Software Product Lines in C.” <i>Automated Software Engineering</i>
    29, no. 1 (2022). <a href="https://doi.org/10.1007/s10515-022-00333-1">https://doi.org/10.1007/s10515-022-00333-1</a>.
  ieee: 'P. Schubert <i>et al.</i>, “Static data-flow analysis for software product
    lines in C,” <i>Automated Software Engineering</i>, vol. 29, no. 1, Art. no. 35,
    2022, doi: <a href="https://doi.org/10.1007/s10515-022-00333-1">10.1007/s10515-022-00333-1</a>.'
  mla: Schubert, Philipp, et al. “Static Data-Flow Analysis for Software Product Lines
    in C.” <i>Automated Software Engineering</i>, vol. 29, no. 1, 35, Springer Science
    and Business Media LLC, 2022, doi:<a href="https://doi.org/10.1007/s10515-022-00333-1">10.1007/s10515-022-00333-1</a>.
  short: P. Schubert, P. Gazzillo, Z. Patterson, J. Braha, F.B. Schiebel, B. Hermann,
    S. Wei, E. Bodden, Automated Software Engineering 29 (2022).
date_created: 2022-03-25T07:41:26Z
date_updated: 2025-12-04T10:42:38Z
department:
- _id: '76'
doi: 10.1007/s10515-022-00333-1
intvolume: '        29'
issue: '1'
keyword:
- inter-procedural static analysis
- software product lines
- preprocessor
- LLVM
- C/C++
language:
- iso: eng
main_file_link:
- open_access: '1'
  url: https://link.springer.com/article/10.1007/s10515-022-00333-1
oa: '1'
project:
- _id: '12'
  name: 'SFB 901 - B4: SFB 901 - Subproject B4'
- _id: '3'
  name: 'SFB 901 - B: SFB 901 - Project Area B'
- _id: '1'
  name: 'SFB 901: SFB 901'
publication: Automated Software Engineering
publication_identifier:
  issn:
  - 0928-8910
  - 1573-7535
publication_status: published
publisher: Springer Science and Business Media LLC
status: public
title: Static data-flow analysis for software product lines in C
type: journal_article
user_id: '15249'
volume: 29
year: '2022'
...
---
_id: '2200'
author:
- first_name: Tobias
  full_name: Kenter, Tobias
  id: '3145'
  last_name: Kenter
- first_name: Marco
  full_name: Platzner, Marco
  id: '398'
  last_name: Platzner
- first_name: Christian
  full_name: Plessl, Christian
  id: '16153'
  last_name: Plessl
  orcid: 0000-0001-5728-9982
- first_name: Michael
  full_name: Kauschke, Michael
  last_name: Kauschke
citation:
  ama: 'Kenter T, Platzner M, Plessl C, Kauschke M. Performance Estimation Framework
    for Automated Exploration of CPU-Accelerator Architectures. In: <i>Proc. Int.
    Symp. on Field-Programmable Gate Arrays (FPGA)</i>. ACM; 2011:177-180. doi:<a
    href="https://doi.org/10.1145/1950413.1950448">10.1145/1950413.1950448</a>'
  apa: Kenter, T., Platzner, M., Plessl, C., &#38; Kauschke, M. (2011). Performance
    Estimation Framework for Automated Exploration of CPU-Accelerator Architectures.
    <i>Proc. Int. Symp. on Field-Programmable Gate Arrays (FPGA)</i>, 177–180. <a
    href="https://doi.org/10.1145/1950413.1950448">https://doi.org/10.1145/1950413.1950448</a>
  bibtex: '@inproceedings{Kenter_Platzner_Plessl_Kauschke_2011, place={New York, NY,
    USA}, title={Performance Estimation Framework for Automated Exploration of CPU-Accelerator
    Architectures}, DOI={<a href="https://doi.org/10.1145/1950413.1950448">10.1145/1950413.1950448</a>},
    booktitle={Proc. Int. Symp. on Field-Programmable Gate Arrays (FPGA)}, publisher={ACM},
    author={Kenter, Tobias and Platzner, Marco and Plessl, Christian and Kauschke,
    Michael}, year={2011}, pages={177–180} }'
  chicago: 'Kenter, Tobias, Marco Platzner, Christian Plessl, and Michael Kauschke.
    “Performance Estimation Framework for Automated Exploration of CPU-Accelerator
    Architectures.” In <i>Proc. Int. Symp. on Field-Programmable Gate Arrays (FPGA)</i>,
    177–80. New York, NY, USA: ACM, 2011. <a href="https://doi.org/10.1145/1950413.1950448">https://doi.org/10.1145/1950413.1950448</a>.'
  ieee: 'T. Kenter, M. Platzner, C. Plessl, and M. Kauschke, “Performance Estimation
    Framework for Automated Exploration of CPU-Accelerator Architectures,” in <i>Proc.
    Int. Symp. on Field-Programmable Gate Arrays (FPGA)</i>, 2011, pp. 177–180, doi:
    <a href="https://doi.org/10.1145/1950413.1950448">10.1145/1950413.1950448</a>.'
  mla: Kenter, Tobias, et al. “Performance Estimation Framework for Automated Exploration
    of CPU-Accelerator Architectures.” <i>Proc. Int. Symp. on Field-Programmable Gate
    Arrays (FPGA)</i>, ACM, 2011, pp. 177–80, doi:<a href="https://doi.org/10.1145/1950413.1950448">10.1145/1950413.1950448</a>.
  short: 'T. Kenter, M. Platzner, C. Plessl, M. Kauschke, in: Proc. Int. Symp. on
    Field-Programmable Gate Arrays (FPGA), ACM, New York, NY, USA, 2011, pp. 177–180.'
date_created: 2018-04-03T15:08:13Z
date_updated: 2023-09-26T13:45:04Z
department:
- _id: '27'
- _id: '518'
- _id: '78'
doi: 10.1145/1950413.1950448
keyword:
- design space exploration
- LLVM
- partitioning
- performance
- estimation
- funding-intel
language:
- iso: eng
page: 177-180
place: New York, NY, USA
publication: Proc. Int. Symp. on Field-Programmable Gate Arrays (FPGA)
publication_identifier:
  isbn:
  - 978-1-4503-0554-9
publisher: ACM
quality_controlled: '1'
status: public
title: Performance Estimation Framework for Automated Exploration of CPU-Accelerator
  Architectures
type: conference
user_id: '15278'
year: '2011'
...
