This workshop is a 4-day instructional workshop (and not a forum for contributed presentations) and involves lectures and laboratory exercises aimed at providing details of the internals of GCC (GNU Compiler Collection).

Workshop: June 30 - July 03 2012   

Slides: July 10 2012
Hostel IP Addresses: June 30 2012
Change in Venue: June 20 2012
Workshop Schedule: June 16 2012
Selected Candidates: June 01 2012
Registration closed: May 31 2012
What's New?: May 13 2012
GCC Code Carnival: May 13 2012

GCC is the de-facto standard compiler generation framework on GNU/Linux and many variants of Unix. In the last 25 years of its existence, it has seen a rapid growth and wide acceptability.

What is GCC?

GCC, an acronym for GNU Compiler Collection, is a compiler generation framework which generates production quality optimizing compilers from descriptions of target platforms. It follows an open development model whereby its source is available for all for inspection and modification. It supports a wide variety of source languages and target machines (including operating system specific variants) in a ready-to-deploy form. Besides, new machines can be added by describing instruction set architectures and some other information (eg. calling conventions).

Novices may want to see the  Wikipedia introduction to GCC. For experts, the GCC page contains a wealth of information including installation instructions, reference manuals (which include users' guides as well as details of GCC internals), a set of frequently asked questions, a wiki page for the developers of GCC, additional reading material, and several mailing lists for more detailed issues and queries. An excellent description of GCC internals can also be found on Wikipedia.

GCC celebrates 25th anniversary

Youtube link to 1989 - 2012 Development History of GCC.

From the release announcement:

"When Richard Stallman announced the first public release of GCC in 1987, few could have imagined the broad impact that it has had. It has prototyped many language features that later were adopted as part of their respective standards — everything from "long long" type to transactional memory. It deployed an architecture-neutral automatic vectorization facility, OpenMP, and Polyhedral loop nest optimization. It has provided the toolchain infrastructure for the GNU/Linux ecosystem used everywhere from Google and Facebook to financial markets and stock exchanges. We salute and thank the hundreds of developers who have contributed over the years to make GCC one of the most long-lasting and successful free software projects in the history of this industry."

Who should attend this workshop?

Anybody who has done at least a first level undergraduate course in compiler construction and has some experience of either working in compilers or teaching compilers. A sound understanding of the process of compilation is a must. Familiarity with Unix/Linux (particularly, the command line style of working) is absolutely necessary. We have identified some homework exercises to be done before the participants arrive for the workshop.

Take-aways from the workshop

After attending this workshop

  • A teacher of compiler construction will be able to take examples of real compilation processes to illustrate the difference phases of compilation
  • A compiler developer wanting to retarget GCC to a new machine will know how to write machine descriptions systematically
  • A researcher exploring machine independent optimizations will be able to add data flow analysis based optimization passes to GCC
  • A researcher exploring retargetable compilation will be exposed to real issues in an industry strength compiler
  • A software engineer will be exposed to the architecture of a very large and very successful software

Structure of the workshop

This a 4 day workshop from June 30, 2012 to July 3, 2012. The offering of the workshop has a lot of new material and all the material has been upgraded to GCC 4.6.2.

Here is a conceptual structure of the coverage and a detailed workshop schedule.

What is new in this workshop?

This workshop differs from the past workshop in the following two ways:

  • Coverage: We intend to cover data flow analysis, more details of LTO frameworks, and machine descriptions using specRTL. We also plan to use and release some tools that we have developed for understanding GCC. These include build browsers and compilation browsers.

  • GCC Code Carnival: In an attempt to involve a larger number of people in our research and development, we plan to inaugurate a GCC Code Carnival  in this year's workshop. This is a programming contest. We will hold a session to describe the projects. You can take up any of these projects and implement them after the workshop at your own locations and submit the code later. We can assist you with this through email or face to face during the workshop. It is not necessary for you to attend the workshop for participating in the contest but attending it will make it easier for you to participate.