RealTime IT News

New GCC Heavy on Optimization

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.