LWN.net Logo

The GCC 4.0 Release Series

Release Series 4.0 of GCC, the GNU Compiler Collection, was announced this week.

GCC 4.0 features a long list of changes. [GCC] 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)

Copyright © 2005, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds