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)