The Impact of Compiler Optimizations on Symbolic Execution
Jiaorui Shen · 2021
Software test plays an important role in software engineering, and dynamic symbolic execution (DSE) has become a popular technique in white-box testing. However, the efficiency of DSE is a big challenge of this technique. Compiler optimizations may have a big impact on DSE in some cases. In this paper, we introduce two small examples to visually show the impact of compiler optimizations on constraints solving and path exploration of DSE. After that, we propose a series of experiments using KLEE and LL VM compiler as a case to test real C programs in Coreutils-8.32. We use a simple model to assess the impact of different compiler optimizations and we also study on the combinations of compiler optimizations. The results show compiler optimizations can have both positive and negative effects, and some optimizations like FI may have greater influences than others. Moreover, some combinations of compiler optimizations can better improve the efficiency of DSE than single compiler optimization, which can be further studied.