The Gnu Compiler Collection
(GCC) is likely the most popular
compiler that runs under Linux:
"The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, as well as libraries for these languages (libstdc++, libgcj,...)."
The GCC project has
the release of GCC version 4.4.0.
"This release is a major release, containing new features (as well as many other improvements) relative to GCC 4.3.x."
It also marks the first version in the GCC 4.4 release series.
document details the many modifications that have been made for this
Some of the broader changes in version 4.4.0 include a number of
improvements to the optimizer, the following new
command line switches have been added:
- -findirect-inlining: makes inliner inline indirect calls that have known targets.
- -ftree-switch-conversion: if possible, turns simple initializations of scalar variables in switch statements into static array initializations.
- -ftree-builtin-call-dce: eliminates unnecessary calls to some builtin functions when the return value is not used.
- -fconserve-stack: minimizes stack usage even at the expense of slower code.
- -fno-dwarf2-cfi-asm: tells the assembler to ignore .cfi directives.
Also, the Graphite
branch has been merged. Graphite (Gimple Represented as Polyhedra) is a framework for high-level loop optimizations that uses the
GCC now includes C, C++, and Fortran support for version 3.0 of
an API specification for parallel programming.
New warning command line options include
- -Wframe-larger-than=NUMBER: warn if any stack frame is larger than NUMBER bytes.
- -Wno-mudflap: disable warnings about constructs which can not be instrumented when using -fmudflap.
C language improvements include:
- a new optimize attribute allows setting the optimize level
on a per-function basis.
- uninitialized warnings now work without enabling optimizations.
- -Wparentheses can now warn about expressions such as (!x | y).
- -Wsequence-points can now warn within if, while, do while and for blocks.
- The new -dU option allows preprocessor macro definitions to be dumped.
C++ language improvements include:
experimental ISO C++0x standard support has been added.
- -fdiagnostics-show-option reports errors that can be downgraded to warnings via -fpermissive.
- -Wconversion has improved warnings for invalid enumeral types.
- -Wuninitialized has improved warnings for non-static reference and const
ants for classes without constructors.
- value-initialization has been improved for objects with an empty initializer.
FORTRAN language improvements include:
- The libcpp preprocessor is now built-in and available by default.
- The new -Warray-temporaries option is available for warning about array temporaries.
- The new -fcheck-array-temporaries option notifies when an array temporary had to be created.
- The DWARF debugging model symbol generation has been improved.
- Intrinsics now default to external declarations.
- The new -falign-commons flag is available for aligning variables in COMMON blocks.
- Fortran 2003 support has been extended.
- Fortran 2008 support has been added.
libstdc++ Runtime Library improvements include:
- experimental support has been added for non-standard pointer types in containers.
- libstdc++ bug 30928 (add casts to libc overloads) has been fixed for targets running glibc 2.10 or later.
- Many other bugs have been fixed, especially in <locale>.
Target-specific improvements include:
- ARM: support is added for three new processors as well as other improvements.
- AVR: support has been added for 25 new devices.
- IA-32/x86-64: support has been added for more built-in functions, better optimization and float128.
- M68K/ColdFire: adds instruction scheduling support and more.
- MIPS: includes efficiency improvements, new options, and support for several new processors.
- picochip: an initial C-only language port has been done.
- Power Architecture and PowerPC: support for several new processors has been added.
- S/390, zSeries and System z9/z10: includes support for a new processor.
The GCC project continues to keep up with the changing processor
landscape and new language standards as they evolve.
Meanwhile, GCC progress marches on, as documented in the
GCC 4.4.1 and
to post comments)