Simple GCC projects

This page lists projects which are feasible for people who aren't intimately familiar with GCC's internals. Many of them are things which would be extremely helpful if they got done, but the core team never seems to get around to them. They're all busy wrestling with the problems that do require deep familiarity with the internals. We hope this will make it easier for more people to assist the GCC project, by giving new developers places to jump in.

Most of these projects require a reasonable amount of experience with C and the Unix programming environment. Do not despair if any individual task seems daunting; there's probably an easier one. If you have no programming skills, we can still use your help with documentation or our bug tracker.

We assume that you already know how to get the latest sources, configure and build the compiler, and run the test suite. You should also familiarize yourself with the requirements for contributions to GCC.

Many of these projects will require at least a reading knowledge of GCC's intermediate language, RTL. It may help to understand the higher-level tree structure as well. Unfortunately, for this we only have an incomplete, C/C++ specific manual.

Remember to keep other developers informed of any substantial projects you intend to work on.

Bug patrol

These projects all have to do with bugs in the compiler, and our testsuite which is supposed to make sure no bugs come back.

General code cleanliness

These are projects which will generally make it easier to work with the source tree.

Port cleanliness

This involves mostly bringing back ends up to date with the current state of the art in the machine-independent code. Many ports date back to the 1980s and have not been actively maintained since then. There is also work to be done in cleaning up the places where the MI code uses machine-specific macros.

In addition to understanding RTL, you need to read the machine description and target macros sections of the GCC manual.

Configuration and Makefiles

This largely consists of the same sort of thing as the above, but for per-host configuration instead of per-target. You will need to understand autoconf, or Make, to do these projects.

Library infrastructure

These tasks are about improving the utility routine library used by GCC. If you like data structures, these may be for you.

User interface

Optimizer improvements

These require some knowledge of compiler internals and substantial programming skills, but not detailed knowledge of GCC internals. I think.

C/C++ front end