Multi-level Debugging for Multi-stage, Parallelizing Compilers
EECS Department, University of California, Berkeley
University of California, Berkeley, Technical Report No. UCB/EECS-2012-227, 2012
@techreport{Xia:EECS-2012-227,
Author={Xia, Richard and Elmas, Tayfun and Kamil, Shoaib Ashraf and Fox, Armando and Sen, Koushik},
Title={Multi-level Debugging for Multi-stage, Parallelizing Compilers},
Institution={EECS Department, University of California, Berkeley},
Year={2012},
Month={Dec},
URL={http://www.eecs.berkeley.edu/Pubs/TechRpts/2012/EECS-2012-227.html},
Number={UCB/EECS-2012-227}
}
A multi-stage compilation framework transforms portions of programs written in a productivity-level language into an efficiency-level language, such as C, with explicit hardware-specific optimizations. It is challenging for compiler programmers to debug errors in the compilation because they must perform complicated end-to-end reasoning, relating the programs across the multiple stages of compilation. To simplify this debugging effort, we present multi-level debugging, a novel combination of error-checking algorithms in a multi-stage compilation environment. Our method particularly aims to model and check sequential and parallel notions of nondeterminism and related bugs introduced by the compilation. Using our method, the programmer can systematically eliminate potential sources of the bug in the compilation process and focus only on the real source. We demonstrated on two real multi-stage compilers the effectiveness of multi-stage debugging in simplifying the diagnosis of manually-injected bugs as well as in an actual bug encountered during compiler development.
December 12, 2012 by hgpu