Recapping The New Features Of GCC 6: OpenMP 4.5, HSA, C++14, AMD Zen & More
As GCC 6 should be officially released soon, here's a quick overview of the improvements and new features for this yearly free software compiler update.
Highlights of the forthcoming GCC 6 stable release include:
- Many link-time optimization (LTO) improvements for being able to deliver even greater performance. There are also a number of inter-procedural optimizations too.
- OpenMP 4.5 is supported by the GCC 6 C/C++ compilers.
- The GNU C/C++ compilers now support attributes on enumerators.
- The GCC C++ compiler (G++) now defaulting to GNU++14 (C++14) rather than the dated GNU++98 standard. While not the default, GCC 6 has added more C++17 support.
- GCC 6's libstdc++ has experimental C++17 support as well as an experimental implementation of the File System TS and v2 of the Library Fundamentals TS.
- Improvements to libgccjit as the embeddable GCC JIT (Just-In-Time compiler) library.
- Various ARM improvements.
- Support for generating HSA IL. That's the Heterogeneous System Architecture's Intermediate Language. In combination with a new plguin for libgomp in GCC 6, simple OpenMP can be transformed into HSAIL to then run on HSA-capable GPUs with a HSA runtime.
- AVX512 support is available for the few Skylake Xeons having this latest version of Advanced Vector Extensions.
- Support for new AMD instructions of monitorx and mwaitx. There's support for AMD Zen CPUs in GCC 6 via the -march=znver1 and -mtune=znver1 switches.
- Initial support for IBM Power9 processors using the OpenPOWER ISA 3.0 specification.
- Support for the IBM z13 processor is present in GCC 6 along with other S/390 / IBM z improvements.
- GCC 6 supports the Musl C library on Linux with AArch64 / ARM / MIPS / PowerPC / i386 / x32 / x86_64 targets, among others. The Musl support can be used with the -mmusl switch if it's not the default libc implementation.
You can find the exhaustive list of forthcoming GCC 6 features via this GNU.org page.