Fuzzing Loop Optimizations in Compilers for C++ and Data-Parallel Languages
University of Utah, USA
ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2023), 2023
DOI:10.1145/3591295
@article{livinskii2023fuzzing,
title={Fuzzing Loop Optimizations in Compilers for C++ and Data-Parallel Languages},
author={LIVINSKII, VSEVOLOD and BABOKIN, DMITRY and REGEHR, JOHN},
year={2023}
}
Compilers are part of the foundation upon which software systems are built; they need to be as correct as possible. This paper is about stress-testing loop optimizers; it presents a major reimplementation of Yet Another Random Program Generator (YARPGen), an open-source generative compiler fuzzer. This new version has found 122 bugs, both in compilers for data-parallel languages, such as the Intel® Implicit SPMD Program Compiler and the Intel® oneAPI DPC++ compiler, and in C++ compilers such as GCC and Clang/LLVM. The first main contribution of our work is a novel method for statically avoiding undefined behavior when generating loops; the resulting programs conform to the relevant language standard, enabling automated testing. The second main contribution is a collection of mechanisms for increasing the diversity of generated loop code; in our evaluation, we demonstrate that these make it possible to trigger loop optimizations significantly more often, providing opportunities to discover bugs in the optimizers.
April 23, 2023 by hgpu