GCC 7 Release Series
Changes, New Features, and Fixes

This page is a brief summary of some of the huge number of improvements in GCC 7. For more information, see the Porting to GCC 7 page and the full GCC documentation.

Disclaimer: GCC 7 has not been released yet, so this document is a work-in-progress.

Caveats

General Optimizer Improvements

New Languages and Language specific improvements

OpenACC support in C, C++, and Fortran continues to be maintained and improved. See the OpenACC and Offloading wiki pages for further information.

Ada

BRIG (HSAIL)

Support for processing BRIG 1.0 files was added in this release. BRIG is a binary format for HSAIL (Heterogeneous System Architecture Intermediate Language). The BRIG frontend can be used for implementing HSAIL "finalizers" (compilation of HSAIL to a native ISA) for gcc-supported targets. An implementation of an HSAIL runtime library, libhsail-rt is also included.

C family

C

C++

Runtime Library (libstdc++)

Fortran

Go

Java (GCJ)

The GCC Java frontend and associated libjava runtime library have been removed from GCC.

libgccjit

The libgccjit API gained support for marking calls as requiring tail-call optimization via a new entrypoint: gcc_jit_rvalue_set_bool_require_tail_call.

libgccjit performs numerous checks at the API boundary, but if these succeed, it previously ignored errors and other diagnostics emitted within the core of GCC, and treated the compile of a gcc_jit_context as having succeeded. As of GCC 7 it now ensures that if any diagnostics are emitted, they are visible from the libgccjit API, and that the the context is flagged as having failed.

New Targets and Target Specific Improvements

AArch64

ARC

ARM

AVR

IA-32/x86-64

NVPTX

PowerPC / PowerPC64 / RS6000

RISC-V

SPARC

Operating Systems

AIX

Fuchsia

RTEMS

Other significant improvements