Fuzzing Loop Optimizations in Compilers for C++ and Data-Parallel Languages
summary
An open-source reimplementation of YARPGen reimplementation generates C/C++ and data-parallel tests that statically avoid undefined behavior using a single-iteration validation method and an even/odd split to introduce minimal runtime diversity, then applies targeted generation policies (10 loop policies, 31 parameters) like loop sequences, array-access patterns and stencils to trigger loop optimizations. The harness finds 122 compiler bugs (GCC, Clang/LLVM, Intel ISPC, Intel DPC++, SD, Alive2), 42% of which are miscompilations, and produces standard-conforming tests with no runtime checks.
AI-written summary · about
chapters (6)
- 0:00Loop optimization fuzzing intro
- 1:27Undefined behavior in loops
- 5:19Loop optimizations with policies
- 9:14Supporting C-family languages
- 10:37Compiler results and bugs
- 13:05Q&A
related talks
12mRandom Testing for C and C++ Compilers with YARPGen
53mLocknote: How Badly Do We Want Correct Compilers?
19mExploiting Undefined Behavior in C/C++ Programs for Optimization: A Study on the(…)
15mInterleaving Large Language Models for Compiler Testing
25mAn Empirical Study of the Effect of Source-level Loop Transformations on Compiler Stability
14mOn-Stack Replacement for Program Generators and Source-to-Source Compilers
27mDistributing and Parallelizing Non-canonical Loops
15mNot So Fast: Understanding and Mitigating Negative Impacts of Compiler Optimizations on Code Reuse G
