Studying the influence of standard compiler optimizations on symbolic execution

Shiyu Dong, Oswaldo Olivo, Lingming Zhang, Sarfraz Khurshid

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Systematic testing plays a vital role in increasing software reliability. A particularly effective and popular approach for systematic testing is symbolic execution, which analyzes a large number of program behaviors using symbolic inputs. Even though symbolic execution is among the most studied analyses during the last decade, scaling it to real-world applications remains a key challenge. This paper studies how a class of semantics-preserving program transformations, namely compiler optimizations, which are designed to enhance performance of standard program execution (using concrete inputs), influence traditional symbolic execution. As an enabling technology, the study uses KLEE, a well-known symbolic execution engine based on the LLVM compiler infrastructure, and focuses on 33 optimization flags of LLVM. Our specific research questions include: (1) how different optimizations influence the performance of symbolic execution for Unix Coreutils, (2) how the influence varies across two different program classes, and (3) how the influence varies across three different back-end constraint solvers. Some of our findings surprised us. For example, applying the 33 optimizations in a pre-defined order provides a slowdown (compared to applying no optimization) for a majority of the Coreutils when using the basic depth-first search with no constraint caching. The key finding of our work is that standard compiler optimizations need to be used with care when performing symbolic execution for creating tests that provide high code coverage. We hope our study motivates future research on harnessing the power of symbolic execution more effectively for enhancing software reliability, e.g., by designing program transformations specifically to scale symbolic execution or by studying broader classes of traditional compiler optimizations in the context of different search heuristics, memoization, and other strategies employed by modern symbolic execution tools.

Original languageEnglish (US)
Title of host publication2015 IEEE 26th International Symposium on Software Reliability Engineering, ISSRE 2015
PublisherInstitute of Electrical and Electronics Engineers Inc.
Pages205-215
Number of pages11
ISBN (Electronic)9781509004065
DOIs
StatePublished - Jan 13 2016
Externally publishedYes
Event26th IEEE International Symposium on Software Reliability Engineering, ISSRE 2015 - Gaithersbury, United States
Duration: Nov 2 2015Nov 5 2015

Publication series

Name2015 IEEE 26th International Symposium on Software Reliability Engineering, ISSRE 2015

Conference

Conference26th IEEE International Symposium on Software Reliability Engineering, ISSRE 2015
Country/TerritoryUnited States
CityGaithersbury
Period11/2/1511/5/15

ASJC Scopus subject areas

  • Software
  • Safety, Risk, Reliability and Quality

Fingerprint

Dive into the research topics of 'Studying the influence of standard compiler optimizations on symbolic execution'. Together they form a unique fingerprint.

Cite this