A.3. Changes in GCC
A.3.1. Changes Since Red Hat Developer Toolset 4.1
- The C++ compiler defaults to C++14 rather than C++98. Certain experimental C++17 language and runtime features have also been made available.
- Source locations are now tracked as ranges rather than points, which allows much richer diagnostics as well as "fixit" hints.
- New warnings have been implemented for statically detecting certain likely programming errors, including: negative shifts, shift overflow, tautological comparisons, null pointer dereferences, duplicated conditions, and misleading indentation.
- Various optimizer improvements have been added, particularly in alias analysis which helps to remove abstraction penalties for C++ code, improvements in the vectorizer, redundancy elimination, useless conditional elimination, and others.
- OpenMP 4.5 support for C and C++ has been added.
- Additional sanitizers to detect undefined behavior at runtime have been added.
- A new option,
-mfloat128, has been implemented. It allows users to experiment with IEEE 128-bit floating point.The 64-bit IBM POWER architecture now supports IEEE 128-bit floating-point using the
__float128data type. Note that Red Hat Developer Toolset does not enable this support default, and
__float128is not supported by the Red Hat Enterprise Linux 7 runtime.
- Support has been added for Intel Skylake processors with support for the AVX-512 extensions and the following instruction sets: Foundation (F), Byte and Word (BW), Doubleword and Quadword (DQ), Vector Length Extensions (VL), and Conflict Detection (CD).
- Support has been added for 64-bit ARM (AArch64) LSE extensions and support for new implementations and code-generation tuning for those implementations of the AArch64 ISA.
- Early support has been added for IEEE 128-bit floating point.
- Support for the z13 processor of the IBM z Systems architecture has been added.