Among the features over GCC 6 with GCC 7.1 will include:
- Various new optimizations including a new store merging pass, a new code hoisting optimization, a new loop-splitting optimization pass, and others.
- AddressSanitizer and UndefinedBehaviorSanitizer picked up some new sanitizer options.
- Initial support for the AMD HSA IL / BRIG 1.0 front-end.
- GCC 7 adds more fix-it hints around misspelled field names and other suggestions when hitting warnings or errors -- including misspelled function names and macro names. Similarly, the preprocessor can now offer suggestions for misspelled directives.
- Better detection of buffer overflows and other possible invalid memory accesses.
- GCC 7 has experimental support for all current C++17 draft specifications. Libstdc++ also has experimental support for C++17.
- Partial support for OpenMP 4.5 with the Fortran front-end.
- GCC 7's Go language front-end has GO 1.8 support.
- Java (GCJ) was dropped.
- ARMv8.2-A and ARMv8.3-A architecture support in the AArch64 target. There is also now formal support for the Cortex A73, Broadcom Vulcan, ThunderX CN81xx/CN83xx/CN88xx/CN99xx, and Qualcomm Falkor.
- Support for ARMv5/ARMv5E has been deprecated.
- More AVX-512 support in the x86_64 code.
- NVIDIA's NVPTX back-end now supports OpenMP target region offloading.
- The RISC-V port was merged.
- The PowerPC and SPARC ports now use the LRA local register allocator by default. All new GCC targets will also use LRA.
- Support was added for Google's Fuchsia OS.
- More helpful dumping of Assembly via -fverbose-asm now including comments showing the source lines corresponding to the given Assembly, etc.
- GCC and G++ programs can now give suggestions for misspelled arguments and misspelled parameters.
Those are the changes of GCC 7 that were of most interest to me. If you want to see the extensive list of all the GCC changes and have plenty of time on your hands for reading the lengthy change list, see the GCC documentation. GCC 7.1 will likely be officially released within the next week or two.