Software Update: GCC 3.0

Spread the love

bkor was the first to send us the news that GCC 3.0 is out. This very popular open source compiler for C, among others, has received a whole lot of new features that you here can view. Not only will programs be optimized a lot better, but from now on it will also be possible to work with Java and to make executables for various new processors such as Itanium. Furthermore, a lot of bugs have been fixed. The source code is here (mirrors) and for binaries you can here justly:

GCC 3.0 New Features

  • General Optimizer Improvements:
    • Basic block reordering pass
    • New if-conversion pass with support for conditional (predicated) execution.
    • New tail call and sibling call elimination optimizations.
    • New registry renaming pass.
    • New (experimental) static single assignment (SSA) representation support.
    • New dead-code elimination pass implemented using the SSA representation.
    • Global null pointer test elimination
    • Global code hoisting/unification
    • More builtins and optimizations for stdio.h, string.h and old BSD functions, as well as for ISO C99 functions.
    • New builtin __builtin_expect for giving hints to the branch predictor.
  • New Languages ​​and Language specific improvements:
    • The GNU Compiler for the Java(TM) language (GCJ) is now integrated and supported, including the run-time library containing most common non-GUI Java classes, a bytecode interpreter, and the Boehm conservative garbage collector. Many bugs have been fixed. GCJ can compile Java source or Java bytecodes to either native code or Java class files, and supports native methods written in either the standard JNI or the more efficient and convenient CNI.
    • New C++ ABI. On the IA-64 platform GCC is capable of inter-operating with other IA-64 compilers.
    • The new ABI also significantly reduces the size of symbol and debug information.
    • New C++ support library
      and many C++ bug fixes, vastly improving our conformance to the ISO C++ standard.
    • New inliner for C++
    • Rewritten C preprocessor, integrated into the C, C++ and Objective C compilers, with very many improvements including ISO C99 support and improvements to dependency generation
    • Support for more ISO C99 features.
    • Many improvements to support for checking calls to format functions such as printf and scanf, including support for ISO C99 format features, extensions from the Single Unix Specification and GNU libc 2.2, checking of strfmon formats and features to assist in auditing for format string security bugs .
    • New warnings for C code that may have undefined semantics because of violations of sequence point rules in the C standard (such as a = a++;, a[n] = b[n++]† and a[i++] = i;), included in -Wall.
    • Additional warning option -Wfloat-equal.
    • Improvements to -Wtraditional.
    • Fortran improvements are listed in
      the Fortran documentation
  • New Targets and Target Specific Improvements:
    • New x86 backend, generating much improved code.
    • Support for a generic i386-elf target contributed.
    • New option to emit x86 assembly code using Intel style syntax (-mintel-syntax).
    • HPUX 11 support contributed.
    • Improved PowerPC code generation, including scheduled prologue and epilogue.
    • Port of gcc to Intel’s IA-64 processor contributed.
    • Port of gcc to Motorola’s MCore 210 and 340 contributed.
    • New unified backend for Arm, Thumb and StrongArm contributed.
    • Port of gcc to Intel’s XScale processor contributed.
    • Port of gcc to Atmel’s AVR microcontrollers contributed.
    • Port of gcc to Mitsubishi’s D30V processor contributed.
    • Port of gcc to Matsushita’s AM33 processor (a member of the MN10300 processor family) contributed.
    • Port of gcc to Fujitsu’s FR30 processor contributed.
    • Port of gcc to Motorola’s 68HC11 and 68HC12 processors contributed.
    • Port of gcc to Sun’s picoJava processor core contributed.
  • Documentation improvements:
    • Substantially rewritten and improved C preprocessor manual.
    • Many improvements to other documentation.
    • Manpages for gcc, cpp and gcov are now generated automatically from the master Texinfo manual, eliminating the problem of manpages being out of date. (The generated manpages are only extracts from the full manual, which is provided in Texinfo form, from which info, HTML, other formats and a printed manual can be generated.)
    • Generated info files are included in the release tarballs alongside their Texinfo sources, avoiding problems on some platforms with building makeinfo as part of the GCC distribution.
  • Other significant improvements:
    • Garbage collection used internally by the compiler for most memory allocation instead of obstacles.
    • Lengauer and Tarjan algorithm used for computing dominators in the CFG. This algorithm can be significantly faster and more space efficient than our older algorithm.
    • gccbug script provided to assist in submitting bug reports to the GCC GNATS bug tracking database. (Bug reports previously submitted directly to the GCC mailing lists, for which no GNATS bug tracking number has been received, should be submitted again to the bug tracking database using gccbug if you can reproduce the problem with GCC 3.0.)
    • The internal libgcc library is built as a shared library on systems that support it.
    • Extensive test suite included with GCC, with many new tests. In addition to tests for GCC bugs that have been fixed, many tests have been added for language features, compiler warnings and builtin functions.
    • Additional language-independent warning options -Wpacked, -Wpadded, -Wunreachable-code and -Wdisabled-optimization.
    • Target-independent options -falign-functions, -falign-loops and -falign-jumps.
  • Plus a great many bug fixes and almost all the features found in GCC 2.95

Version number 3.0
Operating systems Windows 9x, Windows NT, Windows 2000, Linux, BSD, Windows XP
Website GCC
Download
You might also like