Recently Google hosted just over 100 GCC
(GNU Compiler Collection) developers at our Mountain View, CA headquarters for the 3rd annual GNU Tools Cauldron
. The purpose of this 2+ day workshop was to gather GNU tools developers together to coordinate work, exchange reports on ongoing efforts, and discuss development plans for the next 12 months.
For me, the most interesting result was the final realization that GCC is once again in need of a major code base reorganization. For several quarters we have been working on modernizing the codebase. We switched it to C++, we started converting core data structures and are beating the refactoring drum. All those efforts were not wasted and there are two major efforts in progress now that will fundamentally alter the structure of the compiler.
The one I'm most hopeful about is Red Hat's proposal to extend the modularization effort we had started last year
. This will see the compiler split into hermetic modules that will only be able to communicate via well-defined interfaces (if you've ever hacked on GCC, you'll know how much this simplifies life).
The other, related, effort is the removal of all global state
from the compiler. The final goal is to allow the compiler to be turned into a shared library and used for JIT purposes.
Among my favorites of the videos of the presentations
from the Cauldron are those dealing with this overhaul of the GCC codebase. This is going to fundamentally transform GCC internals over the next couple of years. GCC 5.0 will be unrecognizable. Watch the videos on the removal of global state and GCC re-architecture. Exciting stuff!
Another especially interesting moment at the Cauldron was when Dehao Chen presented his work on AutoFDO
. This work will significantly simplify the usability of FDO technologies. I can't wait to see this submitted to trunk.
We also had the usual collection of presentations about optimizations, runtime BOFs, new features and “lively discussion” over meals. Good, geeky times were had by all.
By Diego Novillo, Compiler team