GCC 5 Is Coming This Month With OpenMP 4.0, Offloading, Cilk Plus & More
GCC 5 is expected to be formally released later this month and it by far is looking to be the most exciting GNU Compiler Collection update yet! GCC 5 has amassed a ton of exciting open-source compiler features over the past year.
Here's a look at some of the features that get me the most excited about GCC 5.0:
- The GCC C compiler now defaults to GNU11 (C11) rather than GNU89 (C89)! LLVM's Clang compiler took a similar move but at least before they were on C99.
- Optimization improvements! The inter-procedural optimizations include a new Identical Code Folding (ICF) pass for unifying identical functions, virtual tables are now optimized, write-only variables are now detected and optimized out, and many other optimizations.
- Memory usage and link times were improved when enabling link-time optimizations (LTO).
- OpenMP 4.0 is fully-supported by GCC 5 for C, C++, and Fortran. The OpenMP 4.0 support also includes initial offloading support, including early support for upcoming Intel Xeon Phi MICs.
- GCC C and C++ now supports Intel's Cilk Plus parallel programming interface.
- New _has_include and _has_include_next pre-processor constructs for attempting to include header files only if they are present on the system.
- GCC 5's C++ support now includes many C++14 features from variable templates to aggregates with non-static data member initializers, sized deallocation functions, and much more.
- GCC 5's libstdc++ library has full support for C++11 and experimental support for C++14.
- GCC 5's Go language support has complete support for Go 1.4.2.
- GCC 5 adds initial support for its Just-In-Time (JIT) compilation via the new libgccjit library. Libgccjit is finally in mainline, but it's still considered an experimental option for this release as an embeddable JIT compiler.
- Improved 64-bit ARM (AArch64) code generation for the Cortex-A57 and A53. There's also new support for the ARM Cortex-A72 (and with a A53 big.LITTLE design), the Cavium ThunderX, and Applied Micro X-Gene 1. Within the 32-bit ARM world is support for the new AArch64 processors when on a 32-bit stack along with the new Cortex-A17 processor.
- AVX-512 support for Intel's future Skylake server processors.
- MIPS Release 3 and 5 and 6 are now supported. There's also support for the Cavium Octeon 3 and Imagination P5600 MIPS processors.
- GCC is now officially supported on DragonFlyBSD.
You can find out more about the upcoming GCC 5.0 release via our dozens of GCC 5 articles over the past year on Phoronix along with the lengthy release notes documented at gcc.gnu.org.
Here's a look at some of the features that get me the most excited about GCC 5.0:
- The GCC C compiler now defaults to GNU11 (C11) rather than GNU89 (C89)! LLVM's Clang compiler took a similar move but at least before they were on C99.
- Optimization improvements! The inter-procedural optimizations include a new Identical Code Folding (ICF) pass for unifying identical functions, virtual tables are now optimized, write-only variables are now detected and optimized out, and many other optimizations.
- Memory usage and link times were improved when enabling link-time optimizations (LTO).
- OpenMP 4.0 is fully-supported by GCC 5 for C, C++, and Fortran. The OpenMP 4.0 support also includes initial offloading support, including early support for upcoming Intel Xeon Phi MICs.
- GCC C and C++ now supports Intel's Cilk Plus parallel programming interface.
- New _has_include and _has_include_next pre-processor constructs for attempting to include header files only if they are present on the system.
- GCC 5's C++ support now includes many C++14 features from variable templates to aggregates with non-static data member initializers, sized deallocation functions, and much more.
- GCC 5's libstdc++ library has full support for C++11 and experimental support for C++14.
- GCC 5's Go language support has complete support for Go 1.4.2.
- GCC 5 adds initial support for its Just-In-Time (JIT) compilation via the new libgccjit library. Libgccjit is finally in mainline, but it's still considered an experimental option for this release as an embeddable JIT compiler.
- Improved 64-bit ARM (AArch64) code generation for the Cortex-A57 and A53. There's also new support for the ARM Cortex-A72 (and with a A53 big.LITTLE design), the Cavium ThunderX, and Applied Micro X-Gene 1. Within the 32-bit ARM world is support for the new AArch64 processors when on a 32-bit stack along with the new Cortex-A17 processor.
- AVX-512 support for Intel's future Skylake server processors.
- MIPS Release 3 and 5 and 6 are now supported. There's also support for the Cavium Octeon 3 and Imagination P5600 MIPS processors.
- GCC is now officially supported on DragonFlyBSD.
You can find out more about the upcoming GCC 5.0 release via our dozens of GCC 5 articles over the past year on Phoronix along with the lengthy release notes documented at gcc.gnu.org.
10 Comments