Bringing Major Features, GCC 4.9 RC1 Has Been Released
GCC 4.9 is running slightly behind schedule compared to its 4.8 release last year, but it's landing heavy. As of this morning, the GCC 4.9.0 code was down to zero P1 regressions (the most severe regressions) while there's less than 100 less severe regressions. With the code reaching that state today, Jakub Jelinek of Red Hat has noted in his status report that GCC 4.9 was branched and the GCC 4.9.0-rc1 version built and announced. The GCC 4.9 code branch is frozen and only blocking regressions and documentation fixes will be allowed. The plan is to do the final GCC 4.9.0 release after Easter monday (21 April) while an RC2 is coming next week.
The GCC 4.9.0 RC1 build is available from this FTP archive. With GCC 4.9 having been branched, GCC 4.10 is now in stage one development while of course that major version will come in 2015.
So what's found in GCC 4.9? We've had dozens of Phoronix articles covering features merged over the past year along with early compiler benchmarks. Some of the highlights for new compiler features in GCC 4.9 include:
- Many Link-Time Optimization (LTO) improvements. There's been a ton of GCC LTO work throughout and should perform better, use less memory, and better optimize binaries. Firefox as a very heavy use-case now can do debug-enabled builds with 3.5GB of RAM rather than 15GB and the link time dropped from 1700 seconds to 350 seconds.
- Inter-Procedural Optimization improvements along with Feedback-directed Optimization improvements.
- OpenMP 4.0 support.
- Google has added an Undefined Behavior Sanitizer to GCC 4.9, complementing the existing Address Sanitizer, etc. When passing -fsanitize=undefined, GCC will attempt to detect undefined runtime behavior for C/C++ code-bases.
- Support for colored diagnostic output.
- Intel Cilk Plus is now available for GCC C/C++ front-ends for data and task parallelism.
- Support for new ISO C11 features like Atomics, Thread-Local Storage, Generic Selections, and other changes that bring it on-par with GCC's ISO C99 support.
- C++1y support improvements (C++14). There's also experimental C++14 support for the libstdc++ run-time library.
- Many 64-bit ARM (AArch64) compiler back-end improvements. There's also tuning support for Cortex-A53 and Cortex-A57 processors.
- Support for the ARMv7ve architecture.
- Performance optimizations for the Cortex-A15 and other ARMv7 32-bit processors.
- Intel AVX-512 support for hardware out of Intel in the year ahead.
- Support for Intel's Silvermont and Broadwell architectures via -march=silvermont and -march=broadwell, respectively.
- Support for AMD's Excavator architecture via -march=bdver4.
- Support for IBM POWER8 processors.