Random testing of open source C compilers

Update Item Information
Publication Type dissertation
School or College College of Engineering
Department Computing
Author Yang, Xuejun
Title Random testing of open source C compilers
Date 2014-12
Description Compilers are indispensable tools to developers. We expect them to be correct. However, compiler correctness is very hard to be reasoned about. This can be partly explained by the daunting complexity of compilers. In this dissertation, I will explain how we constructed a random program generator, Csmith, and used it to find hundreds of bugs in strong open source compilers such as the GNU Compiler Collection (GCC) and the LLVM Compiler Infrastructure (LLVM). The success of Csmith depends on its ability of being expressive and unambiguous at the same time. Csmith is composed of a code generator and a GTAV (Generation-Time Analysis and Validation) engine. They work interactively to produce expressive yet unambiguous random programs. The expressiveness of Csmith is attributed to the code generator, while the unambiguity is assured by GTAV. GTAV performs program analyses, such as points-to analysis and effect analysis, efficiently to avoid ambiguities caused by undefined behaviors or unspecifed behaviors. During our 4.25 years of testing, Csmith has found over 450 bugs in the GNU Compiler Collection (GCC) and the LLVM Compiler Infrastructure (LLVM). We analyzed the bugs by putting them into different categories, studying the root causes, finding their locations in compilers' source code, and evaluating their importance. We believe analysis results are useful to future random testers, as well as compiler writers/users.
Type Text
Publisher University of Utah
Subject Compiler bugs; Compilers; Csmith; Gcc; llvm; Random testing
Dissertation Institution University of Utah
Dissertation Name Doctor of Philosophy
Language eng
Rights Management Copyright © Xuejun Yang 2014
Format Medium application/pdf
Format Extent 924,445 bytes
Identifier etd3/id/3527
ARK ark:/87278/s6tj1vzr
Setname ir_etd
ID 197080
Reference URL https://collections.lib.utah.edu/ark:/87278/s6tj1vzr