GCC 4.8 Release Series
Changes, New Features, and Fixes

Caveats

GCC now uses C++ as its implementation language. This means that to build GCC from sources, you will need a C++ compiler that understands C++ 2003. For more details on the rationale and specific changes, please refer to the C++ conversion page.

To enable the Graphite framework for loop optimizations you now need CLooG version 0.18.0 and ISL version 0.11.1. Both can be obtained from the GCC infrastructure directory. The installation manual contains more information about requirements to build GCC.

GCC now uses a more aggressive analysis to derive an upper bound for the number of iterations of loops using constraints imposed by language standards. This may cause non-conforming programs to no longer work as expected, such as SPEC CPU 2006 464.h264ref and 416.gamess. A new option, -fno-aggressive-loop-optimizations, was added to disable this aggressive analysis. In some loops that have known constant number of iterations, but undefined behavior is known to occur in the loop before reaching or during the last iteration, GCC will warn about the undefined behavior in the loop instead of deriving lower upper bound of the number of iterations for the loop. The warning can be disabled with -Wno-aggressive-loop-optimizations.

On ARM, a bug has been fixed in GCC's implementation of the AAPCS rules for the layout of vectors that could lead to wrong code being generated. Vectors larger than 8 bytes in size are now by default aligned to an 8-byte boundary. This is an ABI change: code that makes explicit use of vector types may be incompatible with binary objects built with older versions of GCC. Auto-vectorized code is not affected by this change.

On AVR, support has been removed for the command-line option -mshort-calls deprecated in GCC 4.7.

On AVR, the configure option --with-avrlibc supported since GCC 4.7.2 is turned on per default for all non-RTEMS configurations. This option arranges for a better integration of AVR Libc with avr-gcc. For technical details, see PR54461. To turn off the option in non-RTEMS configurations, use --with-avrlibc=no. If the compiler is configured for RTEMS, the option is always turned off.

More information on porting to GCC 4.8 from previous versions of GCC can be found in the porting guide for this release.

General Optimizer Improvements (and Changes)

New Languages and Language specific improvements

C family

C++

Runtime Library (libstdc++)

Fortran

Go

New Targets and Target Specific Improvements

AArch64

ARM

AVR

IA-32/x86-64

FRV

MIPS

PowerPC / PowerPC64 / RS6000

RX

S/390, System z

SH

SPARC

TILE-Gx

V850

XStormy16

Operating Systems

Windows (Cygwin)

GCC 4.8.1

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

The C++11 <chrono> std::chrono::system_clock and std::chrono::steady_clock classes have changed ABI in GCC 4.8.1, they both are now separate (never typedefs of each other), both use std::chrono::nanoseconds resolution, on most GNU/Linux configurations std::chrono::steady_clock is now finally monotonic, and both classes are mangled differently than in the previous GCC releases. std::chrono::system_clock::now() with std::chrono::microseconds resp. std::chrono::seconds resolution is still exported for backwards compatibility with default configured libstdc++. Note that libstdc++ configured with --enable-libstdcxx-time= used to be ABI incompatible with default configured libstdc++ for those two classes and no ABI compatibility can be offered for those configurations, so any C++11 code that uses those classes and has been compiled and linked against libstdc++ configured with the non-default --enable-libstdcxx-time= configuration option needs to be recompiled.

GCC 4.8.2

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

GCC 4.8.3

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

Support for the new powerpc64le-linux platform has been added. It defaults to generating code that conforms to the ELFV2 ABI.

GCC 4.8.4

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