program registration submissions committee lodging portland

T02: Demystifying GCC: Under the Hood of the GNU Compiler Collection

T02: Demystifying GCC: Under the Hood of the GNU Compiler Collection

Sunday, Oct 22, from 08:30 to 12:00, D133

This tutorial studies the implementation details of the GNU Compiler Collection (GCC). Many researchers have avoided using GCC as a research and development platform, largely because GCC's own design goals are not entirely compatible with many modern compiler design principles. This makes GCC especially intimidating for new developers. It is our position that GCC's portability, support for multiple language front-ends, and active development community make it a useful platform for much language and compiler research. In this tutorial, we mitigate its chief limitation: that it has a high learning curve. After attending this tutorial, participants will be able to navigate GCC's source tree, will have an understanding of GCC's intermediate representations, will be comfortable making localized modifications to GCC source, and will have an idea of what necessary edits compose more substantial modifications. This tutorial will demystify GCC so that participants can use it as a research and development platform for language and compiler research, add front-ends for new high-level languages, port GCC to new target platforms, and make other contributions.

Advanced:  Tutorial participants are assumed to have a general knowledge of high-level programming languages, compiler construction, and parsing. No familiarity with GCC internals is requisite. We target a technical audience (researchers, developers, and other technical staff) with an interest in modifying GCC in minor or substantial ways. This tutorial is appropriate for a participant that is conducting language/compiler research and development, or a participant that wants to contribute new development or bugfixes to the open-source GCC project itself.

Goals: After participation in our tutorial, attendees will be able to trace the path of source language input through GCC's front-, middle-, and back-end; add new language features to the C, C++, and Java front-ends; add new analysis and optimization passes; alter the produced code to support different runtime environments; and locate and fix bugs in GCC that they identify. Further, participants will feel comfortable making such edits; they will pass more easily through GCC's steep learning curve.

Format: We will present a number of slides in lecture format, but frequently bring up source code for examination. We will walk through a number of small modifications to GCC in front of participants. We expect participants to have a laptop from which they can download, compile, and edit GCC.

Ron Cytron, Washington University in St. Louis: Ron Cytron ( ) is a professor of Computer Science and Engineering at Washington University in St. Louis. He has decades of experience teaching compilation, program optimization, languages, and software development to students, researchers, and industry practitioners. Ron earned his Ph.D. in computer science at the University of Illinois at Urbana-Champaign in 1984.

Morgan Deters, Washington University in St. Louis: Morgan Deters ( ) is finishing his dissertation in the Department of Computer Science and Engineering at Washington University in St. Louis, where he studies under Dr. Ron Cytron. His chief research interests include compiler support for advanced language mechanisms and middleware support for real-time and embedded systems. Morgan has worked with and modified GCC for his research, and has lectured on the topic.

Kenneth Zadeck, NaturalBridge, Inc.: Dr. Kenneth Zadeck is a coinventor of Static Single Assignment (SSA) Form and has published extensively on the construction and use of that form. His contributions include novel algorithms for code motion, value numbering, and constant propagation. Since the adoption of SSA Form into gcc, Kenneth has bolstered the gcc effort by contributing optimization algorithms that use SSA. He is a principal of NaturalBridge, a company that offers the BulletTrain Java Compiler, and he is Fortune 500 company consultant in the area of program optimization. Kenneth can be reached at or at (914) 238-1919.

Related Onward! Papers
Related Panels
Related Practitioner Reports
Related Research Papers
Related Tutorials
Related Workshops

While Space Available
program registration submissions committee lodging portland
For comments and questions about the web site
please contact us at
© 2005 OOPSLA