to sensibly list here, but http://gcc.gnu.org/gcc-4.6/changes.html has a
nice overview.
Some highlights include
- a new quad-precision library that's used by the Fortran frontend
(on x86 and amd64);
- new -Wunused-but-set-variable and -Wunused-but-set-parameter warnings
for C family languages (enabled by -Wall and -Wall -Wextra, too);
- new -Wdouble-promotion warning for implicit promotions to double;
- a new general optimization level -Ofast combines -O3 with options that
can affect standards compliance but result in better optimized code;
- link-time optimizations (LTO) now scaling to large input sizes, using
better heuristics, and optimizing more aggressively;
- new command-line options -fstack-usage and -fstrict-volatile-bitfields
(for precisely defining and accessing memory-mapped peripheral registers);
- function attribute leaf that allows for more aggressive optimizations;
- new data type __int128 for targets having wide enough machine-mode support;
- support for selectively enabling and disabling warnings via
#pragma GCC diagnostic has been added. For instance:
#pragma GCC diagnostic error "-Wuninitialized"
foo(a); /* error is given for this one */
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wuninitialized"
foo(b); /* no diagnostic for this one */
#pragma GCC diagnostic pop
foo(c); /* error is given for this one */
#pragma GCC diagnostic pop
foo(d); /* depends on command line options */
- new command-line option-fmax-errors=N;
- experimental support for some features from the upcoming ISO C1X;
- similarly for ISO C++0x including constexpr, nullptr, noexcept,
unrestricted unions, range-based for loops, opaque enums, implicitly
deleted functions, and implicit move constructors;
- default warning when integers are cast to larger pointer types,
to disable via -Wno-int-to-pointer-cast;
- signficiantly better diagnostics for C++ code;
- loads and loads and loads of improvements to the Fortran frontend;
- a new Go frontend and run-time library;
- massive work on Objective-C and Objective-C++; notably extensive
support for Objective-C 2.0 (not enabled by this port yet);
- support for Intel Core 2 processors (-march=core2, -mtune=core2),
Intel Core i3/i5/i7 processors /with AVS (-march=corei7, -mtune=corei7,
-march=corei7-avx, -mtune=corei7-avx);
- support for AMD Bobcat (fam 14) processors (-march=btver1, -mtune=btver1);
Caveat:
- Most libstdc++ standard headers have been changed to no longer include
the cstddef header as an implementation detail.