GCC 2.95 New Features
- General Optimizer Improvements:
- New Languages and Language specific improvements
- New Targets and Target Specific Improvements
- SPARC backend rewrite.
- -mschedule=8000 will optimize code for PA8000 class processors;
-mpa-risc-2-0 will generate code for PA2.0 processors
- Various micro-optimizations for the ia32 port. K6 optimizations
- Compiler will attempt to align doubles in the stack on the ia32 port
- Alpha EV6 support
- PowerPC 750
- RS6000/PowerPC: -mcpu=401 was added as an alias for -mcpu=403.
-mcpu=e603e was added to do -mcpu=603e and -msoft-float.
- c3x, c4x
- HyperSPARC
- SparcLite86x
- sh4
- Support for new systems (OpenBSD, FreeBSD, UWIN, Interix, arm-linux)
- vxWorks targets include support for vxWorks threads
- StrongARM 110 and ARM9 support added. ARM Scheduling parameters
rewritten.
- Various changes to the MIPS port to avoid assembler macros, which
in turn improves performance
- Various performance improvements to the i960 port.
- Major rewrite of ns32k port
- Other significant improvements
- Ability to dump cfg information and
display it using vcg.
- The new faster scheme for fixing vendor header files is enabled by
default.
- Experimental internationalization support.
- multibyte character support
- Some compile-time speedups for pathological problems
- Better support for complex types
- Plus the usual mountain of bugfixes
- Core compiler is based on the gcc2 development tree from Sept 30, 1998,
so we have all of the features
found in GCC 2.8.
Additional Changes in GCC 2.95.1
- Generic bugfixes and improvements
- Various documentation fixes related to the GCC/EGCS merger.
- Fix memory management bug which could lead to spurious aborts, core
dumps or random parsing errors in the compiler.
- Fix a couple bugs in the dwarf1 and dwarf2 debug record support.
- Fix infinite loop in the CSE optimizer.
- Avoid undefined behavior in compiler FP emulation code
- Fix install problem when prefix is overridden on the make install
command.
- Fix problem with unwanted installation of assert.h on some systems.
- Fix problem with finding the wrong assembler in a single tree
build.
- Avoid increasing the known alignment of a register that is
already known to be a pointer.
- Platform specific bugfixes and improvements
- Codegen bugfix for prologue/epilogue for cpu32 target.
- Fix long long code generation bug for the Coldfire target.
- Fix various aborts in the SH compiler.
- Fix bugs in libgcc support library for the SH.
- Fix alpha ev6 code generation bug.
- Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on AIX
platforms.
- Fix -fpic code generation bug for rs6000/ppc svr4 targets.
- Fix varargs/stdarg code generation bug for rs6000/ppc svr4 targets.
- Fix weak symbol handling for rs6000/ppc svr4 targets.
- Fix various problems with 64bit code generation for the rs6000/ppc
port.
- Fix codegen bug which caused tetex to be mis-compiled on the x86.
- Fix compiler abort in new cfg code exposed by x86 port.
- Fix out of range array reference in code convert flat
registers to the x87 stacked FP register file.
- Fix minor vxworks configuration bug.
- Fix return type of bsearch for SunOS 4.x.
- Language & Runtime specific fixes.
- The G++ signature extension has been deprecated. It will be
removed in the next major release of G++. Use of signatures
will result in a warning from the compiler.
- Several bugs relating to templates and namespaces were fixed.
- A bug that caused crashes when combining templates with -g
on DWARF1 platforms was fixed.
- Pointers-to-members, virtual functions, and multiple
inheritance should now work together correctly.
- Some code-generation bugs relating to function try blocks
were fixed.
- G++ is a little bit more lenient with certain archaic
constructs than in GCC 2.95.
- Fix to prevent shared library version #s from bring truncated
to 1 digit
- Fix missing std:: in the libstdc++ library.
- Fix stream locking problems in libio.
- Fix problem in java compiler driver.
Additional Changes in GCC 2.95.2
The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While the
optimizations performed by -fstrict-aliasing are valid according to the C and
C++ standards, the optimization have caused some problems, particularly with
old non-conforming code.
The GCC developers are experimenting with ways to warn users about code
which violates the C/C++ standards, but those warnings are not ready for
widespread use at this time. Rather than wait for those warnings the GCC
developers have chosen to disable -fstrict-aliasing by default for the
GCC 2.95.2 release.
We strongly encourage developers to find and fix
code which violates the C/C++ standards as -fstrict-aliasing may be
enabled by default in future releases. Use the option
-fstrict-aliasing to re-enable these optimizations.
- Generic bugfixes and improvements
- Fix incorrectly optimized memory reference in global common
subexpression elimination (GCSE) optimization pass.
- Fix code generation bug in regmove.c in which it could
incorrectly change a "const" value.
- Fix bug in optimization of conditionals involving volatile
memory references.
- Avoid over-allocation of stack space for some procedures.
- Fixed bug in the compiler which caused incorrect optimization
of an obscure series of bit manipulations, shifts and arithmetic.
- Fixed register allocator bug which caused teTeX to be mis-compiled
on SPARC targets.
- Avoid incorrect optimization of degenerate case statements for
certain targets such as the ARM.
- Fix out of range memory reference in the jump optimizer.
- Avoid dereferencing null pointer in fix-header.
- Fix test for GCC specific features so that it is possible
to bootstrap with gcc-2.6.2 and older versions of GCC.
- Fix typo in scheduler which could potentially cause out of
range memory accesses.
- Avoid incorrect loop reversal which caused incorrect code for
certain loops on PowerPC targets.
- Avoid incorrect optimization of switch statements on certain
targets (for example the ARM).
- Platform specific bugfixes and improvements
- Work around bug in Sun V5.0 compilers which caused bootstrap
comparison failures on SPARC targets.
- Fix SPARC backend bug which caused aborts in final.c.
- Fix sparc-hal-solaris2* configuration fragments.
- Fix bug in sparc block profiling.
- Fix obscure code generation bug for the PARISC targets.
- Define __STDC_EXT__ for HPUX configurations.
- Various POWERPC64 code generation bugfixes.
- Fix abort for PPC targets using ELF (ex GNU/Linux).
- Fix collect2 problems for AIX targets.
- Correct handling of .file directive for PPC targets.
- Fix bug in fix_trunc x86 patterns.
- Fix x86 port to correctly pop the FP stack for functions that
return structures in memory.
- Fix minor bug in strlen x86 pattern.
- Use stabs debugging instead of dwarf1 for x86-solaris targets.
- Fix template repository code to handle leading underscore
in mangled names.
- Fix weak/weak alias support for OpenBSD.
- GNU/Linux for the ARM has C++ compatible include files.
- Language & Runtime specific fixes.
- Fix handling of constructor attribute in the C front-end
which caused problems building the Chill runtime library
on some targets.
- Fix minor problem merging type qualifiers in the C front-end.
- Fix aliasing bug for pointers and references (C/C++).
- Fix incorrect "non-constant initializer bug" when
-traditional or -fwritable-strings is enabled.
- Fix build error for Chill front-end on SunOS.
- Do not complain about duplicate instantiations when using
-frepo (C++).
- Fix array bounds handling in C++ front-end which caused
problems with dwarf debugging information in some circumstances.
- Fix minor namespace problem.
- Fix problem linking java programs.
Additional Changes in GCC 2.95.3
- Generic bugfixes and improvements
- Fix numerous problems that caused incorrect optimization in the
register reloading code.
- Fix numerous problems that caused incorrect optimization in the
loop optimizer.
- Fix aborts in the functions build_insn_chain and scan_loops
under some circumstances.
- Fix an alias analysis bug.
- Fix an infinite compilation bug in the combiner.
- A few problems with complex number support have been fixed.
- It is no longer possible for gcc to act as a fork bomb when
installed incorrectly.
- The -fpack-struct option should be recognized now.
- Fixed a bug that caused incorrect code to be generated due to
a lost stack adjustment.
- Platform specific bugfixes and improvements
- Support building ARM toolchains hosted on Windows.
- Fix attribute calculations in ARM toolchains.
- arm-linux support has been improved.
- Fix a PIC failure on sparc targets.
- On ix86 targets, the regparm attribute should now work reliably.
- Several updates for the h8300 port.
- Fix problem building libio with glibc 2.2.
Please send FSF & GNU inquiries & questions to
gnu@gnu.org.
There are also other ways
to contact the FSF.
These pages are maintained by
the GCC team.
For questions related to the use of GCC, please consult these web
pages and the GCC manuals. If
that fails, the gcc-help@gcc.gnu.org
mailing list might help.
Please send comments on these web pages and the development of GCC to our
developer mailing list at gcc@gnu.org
or gcc@gcc.gnu.org. All of our lists
have public archives.
Copyright (C) Free Software Foundation, Inc.,
51 Franklin St, Fifth Floor, Boston, MA 02110, USA.
Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.
Last modified 2006-06-21
|
|