GCC 5 Release Series — Changes, New Features, and Fixes

GCC 5 Release Series

Changes, New Features, and Fixes

Caveats

General Optimizer Improvements

New Languages and Language specific improvements

C family

if __has_include()

include

define have_optional 1

elif __has_include(<experimental/optional>)

include <experimental/optional>

define have_optional 1

define experimental_optional

else

define have_optional 0

endif

#endif
The header search paths for __has_include and __has_include_next are equivalent to those of the standard directive #include and the extension #include_next respectively.

if __has_attribute(noinline)

attribute((noinline))

endif

#endif
foo(int x);
If an attribute exists, a nonzero constant integer is returned. For standardized C++ attributes a date is returned, otherwise the constant returned is 1. Both __has_attribute and__has_cpp_attribute will add underscores to an attribute name if necessary to resolve the name. For C++11 and onwards the attribute may be scoped.

C

C++

Runtime Library (libstdc++)

Fortran

Go

libgccjit

New in GCC 5 is the ability to build GCC as a shared library for embedding in other processes (such as interpreters), suitable for Just-In-Time compilation to machine code.

The shared library has a C APIand aC++ wrapper APIproviding some "syntactic sugar". There are also bindings available from 3rd parties forPython and forD.

For example, this library can be used by interpreters forcompiling functions from bytecode to machine code.

The library can also be used for ahead-of-time compilation, enabling GCC to be plugged into a pre-existing front end. An example of using this to build a compiler for an esoteric language we'll refer to as "brainf" can be seen here.

libgccjit is licensed under the GPLv3 (or at your option, any later version)

It should be regarded as experimental at this time.

New Targets and Target Specific Improvements

Reporting stack usage

AArch64

ARM

AVR

IA-32/x86-64

MIPS

NDS32

RX

SH

Operating Systems

AIX

DragonFly BSD

FreeBSD

VxWorks MILS

Other significant improvements

This is the list of problem reports (PRs) from GCC's bug tracking system that are known to be fixed in the 5.2 release. This list might not be complete (that is, it is possible that some PRs that have been fixed are not listed here).

Target Specific Changes

IA-32/x86-64

S/390, System z, IBM z Systems

GCC 5.3

This is the list of problem reports (PRs) from GCC's bug tracking system that are known to be fixed in the 5.3 release. This list might not be complete (that is, it is possible that some PRs that have been fixed are not listed here).

Target Specific Changes

IA-32/x86-64

S/390, System z, IBM z Systems

GCC 5.4

This is the list of problem reports (PRs) from GCC's bug tracking system that are known to be fixed in the 5.4 release. This list might not be complete (that is, it is possible that some PRs that have been fixed are not listed here).

GCC 5.5

This is the list of problem reports (PRs) from GCC's bug tracking system that are known to be fixed in the 5.5 release. This list might not be complete (that is, it is possible that some PRs that have been fixed are not listed here).

Target Specific Changes

IA-32/x86-64