Fall 2005 Programming Language Seminar:
GCC Internals

[ Washington University in St Louis ]
Department of Computer Science

Synopsis Information Calendar Links

Synopsis:
The GNU Compiler Collection (GCC) is a widely popular optimizing compiler for a number of architectures that supports C, C++, Java, Objective C, FORTRAN, and Ada.

This seminar will be an examination of how GCC works under the hood. At each meeting, we will walk through parts of the GCC source tree and try to make sense of them. In particular, we will focus on changes to the Java front-end and library required to make them a suitable real-time Java platform. We'll also investigate how optimization passes are coded, how the Boehm garbage collector operates, and the requisite GCC basics like the build system, the tree-based intermediate representations, structure of front-ends and back-ends, etc. Other topics of interest to the seminar attendees will also be explored.

Many researchers are intimidated by GCC's size, initial learning curve, and the fact that its structure isn't that of a clean textbook compiler. However, GCC is a good fit for many research implementations in the area of compilation, languages, and runtime systems, and its full support of language features and numerous back-ends make it attractive for many projects. The purpose of this seminar is to demystify GCC so that it can be used as a basis for research and experimentation.

We will be using the most recent version of the GCC compiler suite, which is (at the time of writing) 4.0.1. We'll probably also be peeking at 4.1 development work.

Important Information:

Course number     E81 7201
Meeting place Lopata 400 (Linux lab)
Meeting time Mondays, 1:00-3:00pm
Credit 1 unit
Grade option pass/fail only *

* You pass the seminar by attending and participating.

Registration for this seminar is CLOSED.

Seminar Calendar:
The Fall 2005 programming language seminar meets Mondays at 1:00pm in Lopata 400.

Date Topic Discussion Leader Notes & Materials
5 September Labor Day: no seminar
12 September Organizational Meeting
how to obtain and build gcc, source tree layout, gcc basic features...
Morgan Deters Notes
19 September Front-end essentials
gcc/g++/gcj drivers and cpp/cc1/jc1/collect2/etc, front-end specification, parsing intro...
Morgan Deters Notes
26 September GENERIC intermediate representation I
all about trees, tree types, decls, lists, WFLs, expressions...
Delvin Defoe Notes
3 October GENERIC intermediate representation II
debugging trees, in-depth study of both Java front-ends, name lookup, runtime check emission, conversion to GIMPLE...
Morgan Deters (partial)
10 October - Seminar Cancelled -
17 October Optimization engine I
static single assignment conversion and maintenance, what happens at different -O levels, dead store elimination walk-through...
Rob LeGrand Notes
24 October Optimization engine II
sparse conditional constant propagation walk-through...
Bob Zimmermann (partial)
31 October Register Transfer Language (RTL)
RTL conversion, passes over RTL...
Kevin Klues (partial)
7 November Code generation
machine descriptions, register allocation, instruction selection...
Greg Hackmann ...
14 November Runtime support I
object layout, method invocation (vtables), runtime checks, standard libraries...
Justin Thiel Notes
Final project
21 November - Thanksgiving -
28 November Debugging support
all about how debugging/profiling/coverage analysis works...
Rob Klapper ...
5 December Runtime support II
profiling support in glibc, the Boehm collector, crt stuff
Morgan Deters Notes
12 December Final project discussions
final projects discussed, changes to expect in GCC's future, dynamic linker, wrap up...
(be prepared to say a few words about what you've done with GCC, any pitfalls you've run across, any interesting findings, etc.)
(agenda)
Make sure to copy anything out of /usr/share/cse7201 that you want to keep!
Our directories will be removed from the lab machines after the semester is over...

Links:

Looking for something else?


Morgan Deters / About me / OpenPGP Public Key / 02 Jan 2006

This page is certified valid HTML 4.01!  This page refers to certified valid CSS!  I support the AnyBrowser campaign