The GCC 4.0 Release Series
[Posted April 27, 2005 by cook]
Release Series 4.0
of
GCC, the GNU Compiler Collection,
was announced this week.
GCC 4.0 features a long list of
changes.
This release includes the merge of the
Tree SSA
(Static Single Assignment) optimization framework branch
into the mainline code (LWN covered Tree SSA one year ago).
"This merge has brought in a completely new optimization framework based on a higher level intermediate representation than the existing RTL representation." This should result in improved performance.
Also, GCC 4.0 adds
Swing Modulo Scheduling:
"SMS is intended to schedule instructions of loops rather than the traditional scheduler (in GCC) that does not give a special handling for loops." SMS is optionally activated with the
-fmodulo-sched switch.
Highlights of the language specific improvements include:
- The C Family
- Addition of a new sentinel attribute for warning about non Null-terminated functions.
- Aliases to undefined symbols now cause errors.
- An error is generated when the address of a register variable is taken.
- C and Objective-C
- New warnings enforce more strict aliasing.
- Several deprecated extensions have been removed.
- The fwritable-strings option has been removed.
- The #pragma pack() semantics have been made similar to those used by other compilers.
- An error is generated when an array with an incomplete element type is encountered.
- C++
- Performance has been improved when compiling without optimizations.
- ELF visibility attributes can now be applied to a class type, easing cross-platform project development.
- The new -fvisibility-inlines-hidden option can hide exported symbols to improve binary load times.
- The G++ minimum and maximum operators have been deprecated.
- Several modifications to the handling of friends of classes have been added.
- Java
- Several naming conflicts with external tools have been resolved.
- The -findirect-dispatch argument now produces code that adheres to the binary compatibility rules of the Java Language Specification.
- libgcj now supports using GCJ as a Just In Time (JIT) compiler.
- Numerous improvements have been added to the class library.
- Fortran
- The GNU Fortran 77 front end has been replaced by the newer
GNU Fortran 95.
- Ada
- Ada support has been extended to more platforms.
- New Ada 2005 features have been added.
- Runtime Library
- The Runtime Library has been optimized, new features have been added.
Target-specific improvements have been added to the
AMD64, IA-64, MIPS, S/390 and zSeries, SPARC and NetWare platforms.
Support has been declared obsolete for the Intel i860, Ubicom IP2022,
National Semiconductor NS32K, SPARClite, and OpenBSD 32-bit SPARC
platforms
The
build status
document shows the list of platforms that the new release
has been successfully tested on.
More information on this and upcoming releases is available on the
GCC Wiki.
Thanks should go to the long list of GCC
contributors, GCC continues to be one of the most important
cornerstones of Linux kernel and open source application development.
It may be interesting to follow the comment thread on the
original LWN announcement.
(
Log in to post comments)