bkor was de eerste die ons het nieuws stuurde dat GCC 3.0 uit is. Deze zeer populaire opensource compiler voor onder andere C heeft een hele berg nieuwe features gekregen, die je hier kunt bekijken. Niet alleen zullen programma's een stuk beter geoptimaliseerd worden, maar is het voortaan ook mogelijk met Java te werken en om executables te maken voor verschillende nieuwe processors zoals Itanium. Verder zijn er natuurlijk een hoop bugs gefixed. De source code is hier (mirrors) te vinden en voor binaries kun je hier terecht:
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 register 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
scanf, including support for ISO C99 format features, extensions from the Single Unix Specification and GNU libc 2.2, checking of
strfmonformats 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
- Additional warning option
- Improvements to
- Fortran improvements are listed in the Fortran documentation.
- New Targets and Target Specific Improvements:
- New x86 back-end, generating much improved code.
- Support for a generic i386-elf target contributed.
- New option to emit x86 assembly code using Intel style 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 back-end 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
gcovare 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
makeinfoas part of the GCC distribution.
- Other significant improvements:
- Garbage collection used internally by the compiler for most memory allocation instead of obstacks.
- 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.
gccbugscript 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
gccbugif you can reproduce the problem with GCC 3.0.)
- The internal
libgcclibrary is built as a shared library on systems that support it.
- Extensive testsuite 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
- Target-independent options
- Plus a great many bugfixes and almost all the features found in GCC 2.95.