Content area
Full Text
International Journal of Parallel Programming, Vol. 32, No. 4, August 2004 ( 2004)
Received December 9, 2003; revised January 13, 2004; accepted March 15, 2004 Extensibility in complex compiler systems goes well beyond modularity of design and it needs to be considered from the early stages of the design, especially the design of the Intermediate Representation. One of the primary barriers to compiler pass extensibility and modularity is interference between passes caused by transformations that invalidate existing analysis information. In this paper, we also present a callback system which is provided to automatically track changes to the compilers internal representation (IR) allowing full pass reordering and an easy-to-use interface for developing lazy update incremental analysis passes. We present a new algorithm for incremental interprocedural data ow analysis and demonstrate the benets of our design framework and our prototype compiler system. It is shown that compilation time for multiple data ow analysis algorithms can be cut in half by incrementally updating data ow analysis.
KEY WORDS: Compiler construction; incremental compilation.
1. INTRODUCTION
Compiler design concerns both the effectiveness of the analysis and code optimization methods as well as the efciency of the compilation process itself. The latter has been the subject of research (along with compiler optimization algorithms) primarily with respect to the complexity of individual analysis or optimization algorithms. However, a global approach to
1 Microsoft Corporation, 1 Microsoft Way, Redmond, WA 98052, USA. E-mail: scarroll@ microsoft.com.
2 Center for Supercomputing Research and Development, University of Illinois, 1308 W. Main, Urbana-Champaign IL 61801, USA. E-mail: [email protected]
3 To whom correspondence should be addressed.
289
0885-7458/04/0800-0289/0 2004 Plenum Publishing Corporation
A Framework for Incremental Extensible Compiler Construction
Steven Carroll1,3 and Constantine Polychronopoulos2
290 Carroll and Polychronopoulos
compiler efciency that considers the entire ensemble of analysis and optimization passes is a considerably more complex subject that has attracted much less attention by the research community.
The complexity of compiler systems, especially those that include program restructuring and code optimization for microarchitectures that support instruction level parallelism (ILP), is such that their development time and, correspondingly, their life-cycle far outlast the life-cycle of processors and computer systems. Typical production compilers represent, at a minimum, tens of man-years of development effort. It is typical to expect a plethora of...