Fuzzing Loop Optimizations in Compilers for C++ and Data-Parallel Languages
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.
Mon 19 JunDisplayed time zone: Eastern Time (US & Canada) change
13:40 - 15:20 | PLDI: CompilationPLDI Research Papers at Cypress 2 Chair(s): Chung-Kil Hur Seoul National University | ||
13:40 20mTalk | Don’t Look UB: Exposing Sanitizer-Eliding Compiler Optimizations PLDI Research Papers Raphael Isemann Vrije Universiteit Amsterdam, Cristiano Giuffrida Vrije Universiteit Amsterdam, Herbert Bos Vrije Universiteit Amsterdam, Erik van der Kouwe Vrije Universiteit Amsterdam, Klaus von Gleissenthall Vrije Universiteit Amsterdam DOI | ||
14:00 20mTalk | Better Together: Unifying Datalog and Equality Saturation PLDI Research Papers Yihong Zhang University of Washington, Yisu Remy Wang University of Washington, Oliver Flatt University of Washington, David Cao University of California at San Diego, Philip Zucker Draper, Eli Rosenthal Google, Zachary Tatlock University of Washington, Max Willsey University of Washington DOI Pre-print | ||
14:20 20mTalk | HEaaN.MLIR: An Optimizing Compiler for Fast Ring-Based Homomorphic Encryption PLDI Research Papers Sunjae Park Seoul National University, Woosung Song Google, Seunghyeon Nam Seoul National University, Hyeongyu Kim Seoul National University, Junbum Shin CryptoLab, Juneyoung Lee AWS DOI | ||
14:40 20mTalk | Indexed Streams: A Formal Intermediate Representation for Fused Contraction Programs PLDI Research Papers Scott Kovach Stanford University, Praneeth Kolichala Stanford University, Tiancheng “Timothy” Gu Stanford University, Fredrik Kjolstad Stanford University DOI Pre-print | ||
15:00 20mTalk | Fuzzing Loop Optimizations in Compilers for C++ and Data-Parallel Languages PLDI Research Papers Vsevolod Livinskii University of Utah, Dmitry Babokin Intel Corporation, John Regehr University of Utah DOI Pre-print |