The GCC compiler is one of the most fundamental projects in the modern
software ecosystem. It has enjoyed a long and storied history that continues to grow with this week’s release of version 4.1.
Originally standing for GNU C Compiler, GCC now refers to GNU
Compiler Collection and is in every GNU/Linux distribution. It is also frequently used as a compiler of choice
for other operating systems.
Version 4.1 includes numerous optimization and functional improvements
over its predecessor, which was released last year.
Mark Mitchell, release manager of GCC and founder of CodeSourcery, said
that the GCC 4.0 release was the first to have the new TREE-SSA
optimization framework.
“In GCC 4.1, as expected, that framework has become much more robust and
more powerful,” Mitchell told internetnews.com. “That has translated into
significant performance improvements on some important benchmarks.”
Among those benchmarks are PowerPC gains of several percentage points on the
industry-standard SPEC benchmarks. The new release also corrects a large
number of defects that were in 4.0.
GCC contributor Daniel Berlin told internetnews.com that the most significant advancements are the new infrastructure for
inter-procedural optimizations and the improvements to auto-vectorization.
“Both are user visible, though the second more than the first, and can
provide noticeable improvements in code quality over what 4.0 did,” Berlin
said. “Certainly, the optimizers are in general more tuned than they were in
4.0. You are likely to get better generated code performance.”
Beyond improved code generation CodeSourcery’s Mitchell explained that from
the user’s perspective, the most significant new features are
stronger Fortran 95 support and support for more CPU
architectures and new chips in existing architectures.
“For example, GCC 4.1 contains support for the new Morpho Technology MT
architecture,” Mitchell said. “GCC 4.1 also contains CodeSourcery’s
implementation of the ABI for the ARM Architecture, which permits
interoperation with our tools targeting ARM processors.”
Though GCC as a project is 15-plus years old at this point, Mitchell believes
that there is still plenty of room left for innovation. The GCC 4.2 release
is expected to make the optimization infrastructure and dataflow analysis
engine even more powerful.
“There are significant changes planned to improve inter-procedural
optimization,” Mitchell said. “CodeSourcery contributed support for
infrastructure that will, for the first time, give GCC an understanding of
global data layout.”
Looking beyond 4.2, Mitchell sees inter-module optimization, the ability to
perform optimization when combining various portions of a large program, as
being a hot topic.
“There are optimizations that can’t be done when looking at any one part,
but which can be done when you have a picture of the program in its
entirety,” Mitchell said.
Before 4.2 sees the light of day, though, plans are already in the works for
GCC 4.1.1, which will be a bug-fix release of 4.1.0. GCC 4.1.1 is expected to
be released in the next two months.