2016 Volume 9 Issue 3 Pages 188-196
Compilers must be highly reliable since they are infrastructure tools for software development. Although compilers are tested intensively using test suites consisting of a huge volume of test programs, it is theoretically impossible to validate compilers completely with a finite set of test programs and many bugs have been reported in open-source compilers such as GCC and LLVM/Clang. Recently, some tools for the random testing or fuzzing of compilers have been developed and their effectiveness has been demonstrated. This article surveys the technical and practical aspects of the tools and discusses the challenges and future direction of compiler fuzzing.