GCC 3.0 New Features
Additional changes in GCC 3.0.4
- GCC 3.0 now supports newer versions of the NetBSD operating system,
which use the ELF object file format, on x86 processors.
- Correct debugging information is generated from functions
that have lines from multiple files (e.g. yacc output).
- A fix for whitespace handling in the
preprocessor, which can affect Fortran.
- Fixes to the exception handling runtime.
- More fixes for bad code generation in C++.
- A fix for shared library generation under AIX 4.3.
- Documentation updates.
- Port of GCC to Tensilica's Xtensa processor contributed.
- A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).
Additional changes in GCC 3.0.3
- A fix to correct an accidental change to the PowerPC ABI.
- Fixes for bad code generation on a variety of architectures.
- Improvements to the debugging information generated for C++
- Fixes for bad code generation in C++.
- A fix to avoid crashes in the C++ demangler.
- A fix to the C++ standard library to avoid buffer overflows.
- Miscellaneous improvements for a variety of architectures.
Additional changes in GCC 3.0.2
- Fixes for bad code generation during loop unrolling.
- Fixes for bad code generation by the sibling call optimization.
- Minor improvements to x86 code generation.
- Implementation of function descriptors in C++ vtables for IA64.
- Numerous minor bug-fixes.
Additional changes in GCC 3.0.1
- C++ fixes for incorrect code-generation.
- Improved cross-compiling support for the C++ standard library.
- Fixes for some embedded targets that worked in GCC 2.95.3, but
not in GCC 3.0.
- Fixes for various exception-handling bugs.
- A port to the S/390 architecture.
General Optimizer Improvements
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.
- Here is a partial list of C++
improvements, both new features and those no longer
- 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
- 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
- Support for more ISO C99 features.
- Many improvements to support for checking calls to format
functions such as
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[i++] = i;), included in
- Additional warning option
- Improvements to
- Fortran improvements are listed in
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
- Port of GCC to Sun's picoJava processor core contributed.
- Substantially rewritten and improved C preprocessor
- Many improvements to other documentation.
- Manpages for
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 info files are included in the release tarballs
alongside their Texinfo sources, avoiding problems on some
platforms with building
makeinfo as part of the
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.
gccbug script provided to assist in submitting
bug reports to our bug tracking system. (Bug reports previously
submitted directly to our mailing lists, for which you received
no bug tracking number, should be submitted again 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 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 bug fixes and almost all the features found in GCC 2.95.