diff options
Diffstat (limited to 'gnu/egcs/gcc/NEWS')
-rw-r--r-- | gnu/egcs/gcc/NEWS | 2611 |
1 files changed, 1540 insertions, 1071 deletions
diff --git a/gnu/egcs/gcc/NEWS b/gnu/egcs/gcc/NEWS index 427df254eb6..d66c6e86ecd 100644 --- a/gnu/egcs/gcc/NEWS +++ b/gnu/egcs/gcc/NEWS @@ -1,1071 +1,1540 @@ -Noteworthy changes in GCC after EGCS 1.1. ------------------------------------------ - -Target specific NEWS - - RS6000/PowerPC: -mcpu=401 was added as an alias for -mcpu=403. -mcpu=e603e - was added to do -mcpu=603e and -msoft-float. - -Noteworthy changes in GCC for EGCS 1.1. ---------------------------------------- - -The compiler now implements global common subexpression elimination (gcse) as -well as global constant/copy propagation. (link to gcse page). - -More major improvements have been made to the alias analysis code. A new -option to allow front-ends to provide alias information to the optimizers -has also been added (-fstrict-aliasing). -fstrict-aliasing is off by default -now, but will be enabled by default in the future. (link to alias page) - -Major changes continue in the exception handling support. This release -includes some changes to reduce static overhead for exception handling. It -also includes some major changes to the setjmp/longjmp based EH mechanism to -make it less pessimistic. And finally, major infrastructure improvements -to the dwarf2 EH mechanism have been made to make our EH support extensible. - -We have fixed the infamous security problems with temporary files. - -The "regmove" optimization pass has been nearly completely rewritten. It now -uses much more information about the target to determine profitability of -transformations. - -The compiler now recomputes register usage information immediately before -register allocation. Previously such information was only not kept up to -date after instruction combination which led to poor register allocation -choices by our priority based register allocator. - -The register reloading phase of the compiler has been improved to better -optimize spill code. This primarily helps targets which generate lots of -spills (like the x86 ports and many register poor embedded ports). - -A few changes in the heuristics used by the register allocator and scheduler -have been made which can significantly improve performance for certain -applications. - -The compiler's branch shortening algorithms have been significantly improved -to work better on targets which align jump targets. - -The compiler now supports the "ADDRESSOF" optimization which can significantly -reduce the overhead for certain inline calls (and inline calls in general). - -The compiler now supports a code size optimization switch (-Os). When enabled -the compiler will prefer optimizations which improve code size over those -which improve code speed. - -The compiler has been improved to completely eliminate library calls which -compute constant values. This is particularly useful on machines which -do not have integer mul/div or floating point support on-chip. - -GCC now supports a "--help" option to print detailed help information. - -cpplib has been greatly improved. It is probably useable for some sites now -(major missing feature is trigraphs). - -Memory footprint for the compiler has been significantly reduced for certain -pathalogical cases. - -Build time improvements for targets which support lots of sched parameters -(alpha and mips primarily). - -Compile time for certain programs using large constant initializers has been -improved (effects glibc significantly). - -Plus an incredible number of infrastructure changes, warning fixes, bugfixes -and local optimizations. - -Various improvements have been made to better support cross compilations. They -are still not easy, but they are improving. - -Target specific NEWS - - Sparc: Now includes V8 plus and V9 support, lots of tuning for Ultrasparcs - and uses the Haifa scheduler by default. - - Alpha: EV6 tuned, optimized expansion of memcpy/bzero. - - x86: Data in the static store is aligned per Intel recommendations. Jump - targets are aligned per Intel recommendations. Improved epilogue - sequences for Pentium chips. Backend improvements which should help - register allocation on all x86 variants. Support for PPro conditional - move instructions has been fixed and enabled. Random changes - throughout the port to make generated code more Pentium friendly. - Improved support for 64bit integer operations. - Unixware 7, a System V Release 5 target is now supported. - SCO OpenServer targets can support GAS. See gcc/INSTALL for details. - - RS6000/PowerPC: Includes AIX4.3 support as well as PowerPC64 support. - Haifa instruction scheduling is enabled by default now. - - MIPS: Multiply/Multiply-Add support has been largely rewritten to generate - more efficient code. Includes mips16 support. - - M68K: Various micro-optimizations and Coldfire fixes. - - M32r: Major improvements to this port. - - Arm: Includes Thumb and super interworking support. - -EGCS includes all gcc2 changes up to and including the June 9, 1998 snapshot. - - -Noteworthy changes in GCC version 2.8.1 ---------------------------------------- - -Numerous bugs have been fixed and some minor performance -improvements (compilation speed) have been made. - -Noteworthy changes in GCC version 2.8.0 ---------------------------------------- - -A major change in this release is the addition of a framework for -exception handling, currently used by C++. Many internal changes and -optimization improvements have been made. These increase the -maintainability and portability of GCC. GCC now uses autoconf to -compute many host parameters. - -The following lists changes that add new features or targets. - -See cp/NEWS for new features of C++ in this release. - -New tools and features: - - The Dwarf 2 debugging information format is supported on ELF systems, and - is the default for -ggdb where available. It can also be used for C++. - The Dwarf version 1 debugging format is also permitted for C++, but - does not work well. - - gcov.c is provided for test coverage analysis and branch profiling - analysis is also supported; see -fprofile-arcs, -ftest-coverage, - and -fbranch-probabilities. - - Support for the Checker memory checking tool. - - New switch, -fstack-check, to check for stack overflow on systems that - don't have such built into their ABI. - - New switches, -Wundef and -Wno-undef to warn if an undefined identifier - is evaluated in an #if directive. - - Options -Wall and -Wimplicit now cause GCC to warn about implicit int - in declarations (e.g. `register i;'), since the C Standard committee - has decided to disallow this in the next revision of the standard; - -Wimplicit-function-declarations and -Wimplicit-int are subsets of - this. - - Option -Wsign-compare causes GCC to warn about comparison of signed and - unsigned values. - - Add -dI option of cccp for cxref. - -New features in configuration, installation and specs file handling: - - New option --enable-c-cpplib to configure script. - - You can use --with-cpu on the configure command to specify the default - CPU that GCC should generate code for. - - The -specs=file switch allows you to override default specs used in - invoking programs like cc1, as, etc. - - Allow including one specs file from another and renaming a specs - variable. - - You can now relocate all GCC files with a single environment variable - or a registry entry under Windows 95 and Windows NT. - -Changes in Objective-C: - - The Objective-C Runtime Library has been made thread-safe. - - The Objective-C Runtime Library contains an interface for creating - mutexes, condition mutexes, and threads; it requires a back-end - implementation for the specific platform and/or thread package. - Currently supported are DEC/OSF1, IRIX, Mach, OS/2, POSIX, PCThreads, - Solaris, and Windows32. The --enable-threads parameter can be used - when configuring GCC to enable and select a thread back-end. - - Objective-C is now configured as separate front-end language to GCC, - making it more convenient to conditionally build it. - - The internal structures of the Objective-C Runtime Library have - changed sufficiently to warrant a new version number; now version 8. - Programs compiled with an older version must be recompiled. - - The Objective-C Runtime Library can be built as a DLL on Windows 95 - and Windows NT systems. - - The Objective-C Runtime Library implements +load. - -The following new targets are supported (see also list under each -individual CPU below): - - Embedded target m32r-elf. - Embedded Hitachi Super-H using ELF. - RTEMS real-time system on various CPU targets. - ARC processor. - NEC V850 processor. - Matsushita MN10200 processor. - Matsushita MN10300 processor. - Sparc and PowerPC running on VxWorks. - Support both glibc versions 1 and 2 on Linux-based GNU systems. - -New features for DEC Alpha systems: - - Allow detailed specification of IEEE fp support: - -mieee, -mieee-with-inexact, and -mieee-conformant - -mfp-trap-mode=xxx, -mfp-round-mode=xxx, -mtrap-precision=xxx - -mcpu=xxx for CPU selection - Support scheduling parameters for EV5. - Add support for BWX, CIX, and MAX instruction set extensions. - Support Linux-based GNU systems. - Support VMS. - -Additional supported processors and systems for MIPS targets: - - MIPS4 instruction set. - R4100, R4300 and R5000 processors. - N32 and N64 ABI. - IRIX 6.2. - SNI SINIX. - -New features for Intel x86 family: - - Add scheduling parameters for Pentium and Pentium Pro. - Support stabs on Solaris-x86. - Intel x86 processors running the SCO OpenServer 5 family. - Intel x86 processors running DG/UX. - Intel x86 using Cygwin32 or Mingw32 on Windows 95 and Windows NT. - -New features for Motorola 68k family: - - Support for 68060 processor. - More consistent switches to specify processor. - Motorola 68k family running AUX. - 68040 running pSOS, ELF object files, DBX debugging. - Coldfire variant of Motorola m68k family. - -New features for the HP PA RISC: - - -mspace and -mno-space - -mlong-load-store and -mno-long-load-store - -mbig-switch -mno-big-switch - - GCC on the PA requires either gas-2.7 or the HP assembler; for best - results using GAS is highly recommended. GAS is required for -g and - exception handling support. - -New features for SPARC-based systems: - - The ultrasparc cpu. - The sparclet cpu, supporting only a.out file format. - Sparc running SunOS 4 with the GNU assembler. - Sparc running the Linux-based GNU system. - Embedded Sparc processors running the ELF object file format. - -mcpu=xxx - -mtune=xxx - -malign-loops=xxx - -malign-jumps=xxx - -malign-functions=xxx - -mimpure-text and -mno-impure-text - - Options -mno-v8 and -mno-sparclite are no longer supported on SPARC - targets. Options -mcypress, -mv8, -msupersparc, -msparclite, -mf930, - and -mf934 are deprecated and will be deleted in GCC 2.9. Use - -mcpu=xxx instead. - -New features for rs6000 and PowerPC systems: - - Solaris 2.51 running on PowerPC's. - The Linux-based GNU system running on PowerPC's. - -mcpu=604e,602,603e,620,801,823,mpc505,821,860,power2 - -mtune=xxx - -mrelocatable-lib, -mno-relocatable-lib - -msim, -mmve, -memb - -mupdate, -mno-update - -mfused-madd, -mno-fused-madd - - -mregnames - -meabi - -mcall-linux, -mcall-solaris, -mcall-sysv-eabi, -mcall-sysv-noeabi - -msdata, -msdata=none, -msdata=default, -msdata=sysv, -msdata=eabi - -memb, -msim, -mmvme - -myellowknife, -mads - wchar_t is now of type long as per the ABI, not unsigned short. - -p/-pg support - -mcpu=403 now implies -mstrict-align. - Implement System V profiling. - - Aix 4.1 GCC targets now default to -mcpu=common so that programs - compiled can be moved between rs6000 and powerpc based systems. A - consequence of this is that -static won't work, and that some programs - may be slightly slower. - - You can select the default value to use for -mcpu=xxx on rs6000 and - powerpc targets by using the --with-cpu=xxx option when configuring the - compiler. In addition, a new options, -mtune=xxx was added that - selects the machine to schedule for but does not select the - architecture level. - - Directory names used for storing the multilib libraries on System V - and embedded PowerPC systems have been shortened to work with commands - like tar that have fixed limits on pathname size. - -New features for the Hitachi H8/300(H): - - -malign-300 - -ms (for the Hitachi H8/S processor) - -mint32 - -New features for the ARM: - - -march=xxx, -mtune=xxx, -mcpu=xxx - Support interworking with Thumb code. - ARM processor with a.out object format, COFF, or AOF assembler. - ARM on "semi-hosted" platform. - ARM running NetBSD. - ARM running the Linux-based GNU system. - -New feature for Solaris systems: - - GCC installation no longer makes a copy of system include files, - thus insulating GCC better from updates to the operating system. - - -Noteworthy changes in GCC version 2.7.2 ---------------------------------------- - -A few bugs have been fixed (most notably the generation of an -invalid assembler opcode on some RS/6000 systems). - -Noteworthy changes in GCC version 2.7.1 ---------------------------------------- - -This release fixes numerous bugs (mostly minor) in GCC 2.7.0, but -also contains a few new features, mostly related to specific targets. - -Major changes have been made in code to support Windows NT. - -The following new targets are supported: - - 2.9 BSD on PDP-11 - Linux on m68k - HP/UX version 10 on HP PA RISC (treated like version 9) - DEC Alpha running Windows NT - -When parsing C, GCC now recognizes C++ style `//' comments unless you -specify `-ansi' or `-traditional'. - -The PowerPC System V targets (powerpc-*-sysv, powerpc-*-eabi) now use the -calling sequence specified in the System V Application Binary Interface -Processor Supplement (PowerPC Processor ABI Supplement) rather than the calling -sequence used in GCC version 2.7.0. That calling sequence was based on the AIX -calling sequence without function descriptors. To compile code for that older -calling sequence, either configure the compiler for powerpc-*-eabiaix or use -the -mcall-aix switch when compiling and linking. - -Noteworthy changes in GCC version 2.7.0 ---------------------------------------- - -GCC now works better on systems that use ".obj" and ".exe" instead of -".o" and no extension. This involved changes to the driver program, -gcc.c, to convert ".o" names to ".obj" and to GCC's Makefile to use -".obj" and ".exe" in filenames that are not targets. In order to -build GCC on such systems, you may need versions of GNU make and/or -compatible shells. At this point, this support is preliminary. - -Object file extensions of ".obj" and executable file extensions of -".exe" are allowed when using appropriate version of GNU Make. - -Numerous enhancements were made to the __attribute__ facility including -more attributes and more places that support it. We now support the -"packed", "nocommon", "noreturn", "volatile", "const", "unused", -"transparent_union", "constructor", "destructor", "mode", "section", -"align", "format", "weak", and "alias" attributes. Each of these -names may also be specified with added underscores, e.g., "__packed__". -__attribute__ may now be applied to parameter definitions, function -definitions, and structure, enum, and union definitions. - -GCC now supports returning more structures in registers, as specified by -many calling sequences (ABIs), such as on the HP PA RISC. - -A new option '-fpack-struct' was added to automatically pack all structure -members together without holes. - -There is a new library (cpplib) and program (cppmain) that at some -point will replace cpp (aka cccp). To use cppmain as cpp now, pass -the option CCCP=cppmain to make. The library is already used by the -fix-header program, which should speed up the fixproto script. - -New options for supported targets: - - GNU on many targets. - NetBSD on MIPS, m68k, VAX, and x86. - LynxOS on x86, m68k, Sparc, and RS/6000. - VxWorks on many targets. - - Windows/NT on x86 architecture. Initial support for Windows/NT on Alpha - (not fully working). - - Many embedded targets, specifically UDI on a29k, aout, coff, elf, - and vsta "operating systems" on m68k, m88k, mips, sparc, and x86. - -Additional support for x86 (i386, i486, and Pentium): - - Work with old and new linkers for Linux-based GNU systems, - supporting both a.out and ELF. - FreeBSD on x86. - Stdcall convention. - -malign-double, -mregparm=, -malign-loops= and -malign-jumps= switches. - On ISC systems, support -Xp like -posix. - -Additions for RS/6000: - - Instruction scheduling information for PowerPC 403. - AIX 4.1 on PowerPC. - -mstring and -mno-string. - -msoft-float and floating-point emulation included. - Preliminary support for PowerPC System V.4 with or without the GNU as. - Preliminary support for EABI. - Preliminary support for 64-bit systems. - Both big and little endian systems. - -New features for MIPS-based systems: - - r4650. - mips4 and R8000. - Irix 6.0. - 64-bit ABI. - Allow dollar signs in labels on SGI/Irix 5.x. - -New support for HP PA RISC: - - Generation of PIC (requires binutils-2.5.2.u6 or later). - HP-UX version 9 on HP PA RISC (dynamically links even with -g). - Processor variants for HP PA RISC: 700, 7100, and 7100LC. - Automatic generation of long calls when needed. - -mfast-indirect-calls for kernels and static binaries. - - The called routine now copies arguments passed by invisible reference, - as required by the calling standard. - -Other new miscellaneous target-specific support: - - -mno-multm on a29k. - -mold-align for i960. - Configuration for "semi-hosted" ARM. - -momit-leaf-frame-pointer for M88k. - SH3 variant of Hitachi Super-H and support both big and little endian. - -Changes to Objective-C: - - Bare-bones implementation of NXConstantString has been added, - which is invoked by the @"string" directive. - - Class * has been changed to Class to conform to the NextSTEP and - OpenStep runtime. - - Enhancements to make dynamic loading easier. - - The module version number has been updated to Version 7, thus existing - code will need to be recompiled to use the current run-time library. - -GCC now supports the ISO Normative Addendum 1 to the C Standard. -As a result: - - The header <iso646.h> defines macros for C programs written - in national variants of ISO 646. - - The following digraph tokens are supported: - <: :> <% %> %: %:%: - These behave like the following, respectively: - [ ] { } # ## - - Digraph tokens are supported unless you specify the `-traditional' - option; you do not need to specify `-ansi' or `-trigraphs'. Except - for contrived and unlikely examples involving preprocessor - stringizing, digraph interpretation doesn't change the meaning of - programs; this is unlike trigraph interpretation, which changes the - meanings of relatively common strings. - - The macro __STDC_VERSION__ has the value 199409L. - - As usual, for full conformance to the standard, you also need a - C library that conforms. - -The following lists changes that have been made to g++. If some -features mentioned below sound unfamiliar, you will probably want to -look at the recently-released public review copy of the C++ Working -Paper. For PostScript and PDF (Adobe Acrobat) versions, see the -archive at ftp://research.att.com/dist/stdc++/WP. For HTML and ASCII -versions, see ftp://ftp.cygnus.com/pub/g++. On the web, see -http://www.cygnus.com/~mrs/wp-draft. - -The scope of variables declared in the for-init-statement has been changed -to conform to http://www.cygnus.com/~mrs/wp-draft/stmt.html#stmt.for; as a -result, packages such as groff 1.09 will not compile unless you specify the --fno-for-scope flag. PLEASE DO NOT REPORT THIS AS A BUG; this is a change -mandated by the C++ standardization committee. - -Binary incompatibilities: - - The builtin 'bool' type is now the size of a machine word on RISC targets, - for code efficiency; it remains one byte long on CISC targets. - - Code that does not use #pragma interface/implementation will most - likely shrink dramatically, as g++ now only emits the vtable for a - class in the translation unit where its first non-inline, non-abstract - virtual function is defined. - - Classes that do not define the copy constructor will sometimes be - passed and returned in registers. This may illuminate latent bugs in - your code. - -Support for automatic template instantiation has *NOT* been added, due -to a disagreement over design philosophies. - -Support for exception handling has been improved; more targets are now -supported, and throws will use the RTTI mechanism to match against the -catch parameter type. Optimization is NOT SUPPORTED with --fhandle-exceptions; no need to report this as a bug. - -Support for Run-Time Type Identification has been added with -frtti. -This support is still in alpha; one major restriction is that any file -compiled with -frtti must include <typeinfo.h>. - -Preliminary support for namespaces has been added. This support is far -from complete, and probably not useful. - -Synthesis of compiler-generated constructors, destructors and -assignment operators is now deferred until the functions are used. - -The parsing of expressions such as `a ? b : c = 1' has changed from -`(a ? b : c) = 1' to `a : b ? (c = 1)'. - -The code generated for testing conditions, especially those using || -and &&, is now more efficient. - -The operator keywords and, and_eq, bitand, bitor, compl, not, not_eq, -or, or_eq, xor and xor_eq are now supported. Use -ansi or --foperator-names to enable them. - -The 'explicit' keyword is now supported. 'explicit' is used to mark -constructors and type conversion operators that should not be used -implicitly. - -g++ now accepts the typename keyword, though it currently has no -semantics; it can be a no-op in the current template implementation. -You may want to start using it in your code, however, since the -pending rewrite of the template implementation to compile STL properly -(perhaps for 2.8.0, perhaps not) will require you to use it as -indicated by the current draft. - -Handling of user-defined type conversion has been overhauled so that -type conversion operators are now found and used properly in -expressions and function calls. - --fno-strict-prototype now only applies to function declarations with -"C" linkage. - -g++ now warns about 'if (x=0)' with -Wparentheses or -Wall. - -#pragma weak and #pragma pack are supported on System V R4 targets, as -are various other target-specific #pragmas supported by gcc. - -new and delete of const types is now allowed (with no additional -semantics). - -Explicit instantiation of template methods is now supported. Also, -'inline template class foo<int>;' can be used to emit only the vtable -for a template class. - -With -fcheck-new, g++ will check the return value of all calls to -operator new, and not attempt to modify a returned null pointer. - -The template instantiation code now handles more conversions when -passing to a parameter that does not depend on template arguments. -This means that code like 'string s; cout << s;' now works. - -Invalid jumps in a switch statement past declarations that require -initializations are now caught. - -Functions declared 'extern inline' now have the same linkage semantics -as inline member functions. On supported targets, where previously -these functions (and vtables, and template instantiations) would have -been defined statically, they will now be defined as weak symbols so -that only one out-of-line definition is used. - -collect2 now demangles linker output, and c++filt has become part of -the gcc distribution. - -Noteworthy changes in GCC version 2.6.3: - -A few more bugs have been fixed. - -Noteworthy changes in GCC version 2.6.2: - -A few bugs have been fixed. - -Names of attributes can now be preceded and followed by double underscores. - -Noteworthy changes in GCC version 2.6.1: - -Numerous (mostly minor) bugs have been fixed. - -The following new configurations are supported: - - GNU on x86 (instead of treating it like MACH) - NetBSD on Sparc and Motorola 68k - AIX 4.1 on RS/6000 and PowerPC systems - Sequent DYNIX/ptx 1.x and 2.x. - Both COFF and ELF configurations on AViiON without using /bin/gcc - Windows/NT on x86 architecture; preliminary - AT&T DSP1610 digital signal processor chips - i960 systems on bare boards using COFF - PDP11; target only and not extensively tested - -The -pg option is now supported for Alpha under OSF/1 V3.0 or later. - -Files with an extension of ".c++" are treated as C++ code. - -The -Xlinker and -Wl arguments are now passed to the linker in the -position they were specified on the command line. This makes it -possible, for example, to pass flags to the linker about specific -object files. - -The use of positional arguments to the configure script is no longer -recommended. Use --target= to specify the target; see the GCC manual. - -The 386 now supports two new switches: -mreg-alloc=<string> changes -the default register allocation order used by the compiler, and --mno-wide-multiply disables the use of the mul/imul instructions that -produce 64 bit results in EAX:EDX from 32 bit operands to do long long -multiplies and 32-bit division by constants. - -Noteworthy changes in GCC version 2.6.0: - -Numerous bugs have been fixed, in the C and C++ front-ends, as -well as in the common compiler code. - -This release includes the C, Objective-C, and C++ compilers. However, -we have moved the files for the C++ compiler (G++) files to a -subdirectory, cp. Subsequent releases of GCC will split these files -to a separate TAR file. - -The G++ team has been tracking the development of the ANSI standard for C++. -Here are some new features added from the latest working paper: - - * built-in boolean type 'bool', with constants 'true' and 'false'. - * array new and delete (operator new [] and delete []). - * WP-conforming lifetime of temporaries. - * explicit instantiation of templates (template class A<int>;), - along with an option (-fno-implicit-templates) to disable emission - of implicitly instantiated templates, obsoletes -fexternal-templates. - * static member constants (static const int foo = 4; within the - class declaration). - -Many error messages have been improved to tell the user more about the -problem. Conformance checking with -pedantic-errors has been -improved. G++ now compiles Fresco. - -There is now an experimental implementation of virtual functions using -thunks instead of Cfront-style vtables, enabled with -fvtable-thunks. -This option also enables a heuristic which causes the compiler to only -emit the vtable in the translation unit where its first non-inline -virtual function is defined; using this option and --fno-implicit-templates, users should be able to avoid #pragma -interface/implementation altogether. - -Signatures have been added as a GNU C++ extension. Using the option --fhandle-signatures, users are able to turn on recognition of -signatures. A short introduction on signatures is in the section -`Extension to the C++ Language' in the manual. - -The `g++' program is now a C program, rather than a shell script. - -Lots and lots and lots of bugs fixes, in nested types, access control, -pointers to member functions, the parser, templates, overload -resolution, etc, etc. - -There have been two major enhancements to the Objective-C compiler: - -1) Added portability. It now runs on Alpha, and some problems with - message forwarding have been addressed on other platforms. - -2) Selectors have been redefined to be pointers to structs like: - { void *sel_id, char *sel_types }, where the sel_id is the unique - identifier, the selector itself is no longer unique. - - Programmers should use the new function sel_eq to test selector - equivalence. - -The following major changes have been made to the base compiler and -machine-specific files. - -- The MIL-STD-1750A is a new port, but still preliminary. - -- The h8/300h is now supported; both the h8/300 and h8/300h ports come - with 32 bit IEEE 754 software floating point support. - -- The 64-bit Sparc (v9) and 64-bit MIPS chips are supported. - -- NetBSD is supported on m68k, Intel x86, and pc523 systems and FreeBSD - on x86. - -- COFF is supported on x86, m68k, and Sparc systems running LynxOS. - -- 68K systems from Bull and Concurrent are supported and System V - Release 4 is supported on the Atari. - -- GCC supports GAS on the Motorola 3300 (sysV68) and debugging - (assuming GAS) on the Plexus 68K system. (However, GAS does not yet - work on those systems). - -- System V Release 4 is supported on MIPS (Tandem). - -- For DG/UX, an ELF configuration is now supported, and both the ELF - and BCS configurations support ELF and COFF object file formats. - -- OSF/1 V2.0 is supported on Alpha. - -- Function profiling is also supported on Alpha. - -- GAS and GDB is supported for Irix 5 (MIPS). - -- "common mode" (code that will run on both POWER and PowerPC - architectures) is now supported for the RS/6000 family; the - compiler knows about more PPC chips. - -- Both NeXTStep 2.1 and 3 are supported on 68k-based architectures. - -- On the AMD 29k, the -msoft-float is now supported, as well as - -mno-sum-in-toc for RS/6000, -mapp-regs and -mflat for Sparc, and - -membedded-pic for MIPS. - -- GCC can now convert division by integer constants into the equivalent - multiplication and shift operations when that is faster than the - division. - -- Two new warning options, -Wbad-function-cast and - -Wmissing-declarations have been added. - -- Configurations may now add machine-specific __attribute__ options on - type; many machines support the `section' attribute. - -- The -ffast-math flag permits some optimization that violate strict - IEEE rules, such as converting X * 0.0 to 0.0. - -Noteworthy changes in GCC version 2.5.8: - -This release only fixes a few serious bugs. These include fixes for a -bug that prevented most programs from working on the RS/6000, a bug -that caused invalid assembler code for programs with a `switch' -statement on the NS32K, a G++ problem that caused undefined names in -some configurations, and several less serious problems, some of which -can affect most configuration. - -Noteworthy change in GCC version 2.5.7: - -This release only fixes a few bugs, one of which was causing bootstrap -compare errors on some systems. - -Noteworthy change in GCC version 2.5.6: - -A few backend bugs have been fixed, some of which only occur on one -machine. - -The C++ compiler in 2.5.6 includes: - - * fixes for some common crashes - * correct handling of nested types that are referenced as `foo::bar' - * spurious warnings about friends being declared static and never - defined should no longer appear - * enums that are local to a method in a class, or a class that's - local to a function, are now handled correctly. For example: - class foo { void bar () { enum { x, y } E; x; } }; - void bar () { class foo { enum { x, y } E; E baz; }; } - -Noteworthy change in GCC version 2.5.5: - -A large number of C++ bugs have been fixed. - -The fixproto script adds prototypes conditionally on __cplusplus. - -Noteworthy change in GCC version 2.5.4: - -A bug fix in passing of structure arguments for the HP-PA architecture -makes code compiled with GCC 2.5.4 incompatible with code compiled -with earlier versions (if it passes struct arguments of 33 to 64 bits, -interspersed with other types of arguments). - -Noteworthy change in gcc version 2.5.3: - -The method of "mangling" C++ function names has been changed. So you -must recompile all C++ programs completely when you start using GCC -2.5. Also, GCC 2.5 requires libg++ version 2.5. Earlier libg++ -versions won't work with GCC 2.5. (This is generally true--GCC -version M.N requires libg++ version M.N.) - -Noteworthy GCC changes in version 2.5: - -* There is now support for the IBM 370 architecture as a target. -Currently the only operating system supported is MVS; GCC does not run -on MVS, so you must produce .s files using GCC as a cross compiler, -then transfer them to MVS to assemble them. This port is not reliable -yet. - -* The Power PC is now supported. - -* The i860-based Paragon machine is now supported. - -* The Hitachi 3050 (an HP-PA machine) is now supported. - -* The variable __GNUC_MINOR__ holds the minor version number of GCC, as -an integer. For version 2.5.X, the value is 5. - -* In C, initializers for static and global variables are now processed -an element at a time, so that they don't need a lot of storage. - -* The C syntax for specifying which structure field comes next in an -initializer is now `.FIELDNAME='. The corresponding syntax for -array initializers is now `[INDEX]='. For example, - - char whitespace[256] - = { [' '] = 1, ['\t'] = 1, ['\n'] = 1 }; - -This was changed to accord with the syntax proposed by the Numerical -C Extensions Group (NCEG). - -* Complex numbers are now supported in C. Use the keyword __complex__ -to declare complex data types. See the manual for details. - -* GCC now supports `long double' meaningfully on the Sparc (128-bit -floating point) and on the 386 (96-bit floating point). The Sparc -support is enabled on Solaris 2.x because earlier system versions -(SunOS 4) have bugs in the emulation. - -* All targets now have assertions for cpu, machine and system. So you -can now use assertions to distinguish among all supported targets. - -* Nested functions in C may now be inline. Just declare them inline -in the usual way. - -* Packed structure members are now supported fully; it should be possible -to access them on any supported target, no matter how little alignment -they have. - -* To declare that a function does not return, you must now write -something like this (works only in 2.5): - - void fatal () __attribute__ ((noreturn)); - -or like this (works in older versions too): - - typedef void voidfn (); - - volatile voidfn fatal; - -It used to be possible to do so by writing this: - - volatile void fatal (); - -but it turns out that ANSI C requires that to mean something -else (which is useless). - -Likewise, to declare that a function is side-effect-free -so that calls may be deleted or combined, write -something like this (works only in 2.5): - - int computation () __attribute__ ((const)); - -or like this (works in older versions too): - - typedef int intfn (); - - const intfn computation; - -* The new option -iwithprefixbefore specifies a directory to add to -the search path for include files in the same position where -I would -put it, but uses the specified prefix just like -iwithprefix. - -* Basic block profiling has been enhanced to record the function the -basic block comes from, and if the module was compiled for debugging, -the line number and filename. A default version of the basic block -support module has been added to libgcc2 that appends the basic block -information to a text file 'bb.out'. Machine descriptions can now -override the basic block support module in the target macro file. - -New features in g++: - -* The new flag `-fansi-overloading' for C++. Use a newly implemented -scheme of argument matching for C++. It makes g++ more accurately -obey the rules set down in Chapter 13 of the Annotated C++ Reference -Manual (the ARM). This option will be turned on by default in a -future release. - -* The -finline-debug flag is now gone (it was never really used by the - compiler). - -* Recognizing the syntax for pointers to members, e.g., "foo::*bar", has been - dramatically improved. You should not get any syntax errors or incorrect - runtime results while using pointers to members correctly; if you do, it's - a definite bug. - -* Forward declaration of an enum is now flagged as an error. - -* Class-local typedefs are now working properly. - -* Nested class support has been significantly improved. The compiler - will now (in theory) support up to 240 nested classes before hitting - other system limits (like memory size). - -* There is a new C version of the `g++' driver, to replace the old - shell script. This should significantly improve the performance of - executing g++ on a system where a user's PATH environment variable - references many NFS-mounted filesystems. This driver also works - under MS-DOS and OS/2. - -* The ANSI committee working on the C++ standard has adopted a new - keyword `mutable'. This will allow you to make a specific member be - modifiable in an otherwise const class. - -Noteworthy GCC changes in version 2.4.4: - - A crash building g++ on various hosts (including m68k) has been - fixed. Also the g++ compiler no longer reports incorrect - ambiguities in some situations where they do not exist, and - const template member functions are now being found properly. - -Noteworthy GCC changes in version 2.4: - -* On each target, the default is now to return short structures -compatibly with the "usual" compiler on that target. - -For most targets, this means the default is to return all structures -in memory, like long structures, in whatever way is used on that -target. Use -freg-struct-return to enable returning short structures -(and unions) in registers. - -This change means that newly compiled binaries are incompatible with -binaries compiled with previous versions of GCC. - -On some targets, GCC is itself the usual compiler. On these targets, -the default way to return short structures is still in registers. -Use -fpcc-struct-return to tell GCC to return them in memory. - -* There is now a floating point emulator which can imitate the way all -supported target machines do floating point arithmetic. - -This makes it possible to have cross compilation to and from the VAX, -and between machines of different endianness. However, this works -only when the target machine description is updated to use the new -facilities, and not all have been updated. - -This also makes possible support for longer floating point types. -GCC 2.4 supports extended format on the 68K if you use `long double', -for targets that have a 68881. (When we have run time library -routines for extended floating point, then `long double' will use -extended format on all 68K targets.) - -We expect to support extended floating point on the i386 and Sparc in -future versions. - -* Building GCC now automatically fixes the system's header files. -This should require no attention. - -* GCC now installs an unsigned data type as size_t when it fixes the -header files (on all but a handful of old target machines). -Therefore, the bug that size_t failed to be unsigned is fixed. - -* Building and installation are now completely separate. -All new files are constructed during the build process; -installation just copies them. - -* New targets supported: Clipper, Hitachi SH, Hitachi 8300, and Sparc -Lite. - -* A totally new and much better Objective C run time system is included. - -* Objective C supports many new features. Alas, I can't describe them -since I don't use that language; however, they are the same ones -supported in recent versions of the NeXT operating system. - -* The builtin functions __builtin_apply_args, __builtin_apply and -__builtin_return let you record the arguments and returned -value of a function without knowing their number or type. - -* The builtin string variables __FUNCTION__ and __PRETTY_FUNCTION__ -give the name of the function in the source, and a pretty-printed -version of the name. The two are the same in C, but differ in C++. - -* Casts to union types do not yield lvalues. - -* ## before an empty rest argument discards the preceding sequence -of non-whitespace characters from the macro definition. -(This feature is subject to change.) - - -New features specific to C++: - -* The manual contains a new section ``Common Misunderstandings with -GNU C++'' that C++ users should read. - -* #pragma interface and #pragma implementation let you use the same -C++ source file for both interface and implementation. -However, this mechanism is still in transition. - -* Named returned values let you avoid an extra constructor call -when a function result has a class type. - -* The C++ operators <? and >? yield min and max, respectively. - -* C++ gotos can exit a block safely even if the block has -aggregates that require destructors. - -* gcc defines the macro __GNUG__ when compiling C++ programs. - -* GNU C++ now correctly distinguishes between the prefix and postfix -forms of overloaded operator ++ and --. To avoid breaking old -code, if a class defines only the prefix form, the compiler -accepts either ++obj or obj++, unless -pedantic is used. - -* If you are using version 2.3 of libg++, you need to rebuild it with -`make CC=gcc' to avoid mismatches in the definition of `size_t'. - -Newly documented compiler options: - --fnostartfiles - Omit the standard system startup files when linking. - --fvolatile-global - Consider memory references to extern and global data items to - be volatile. - --idirafter DIR - Add DIR to the second include path. - --iprefix PREFIX - Specify PREFIX for later -iwithprefix options. - --iwithprefix DIR - Add PREFIX/DIR to the second include path. - --mv8 - Emit Sparc v8 code (with integer multiply and divide). --msparclite - Emit Sparclite code (roughly v7.5). - --print-libgcc-file-name - Search for the libgcc.a file, print its absolute file name, and exit. - --Woverloaded-virtual - Warn when a derived class function declaration may be an error - in defining a C++ virtual function. - --Wtemplate-debugging - When using templates in a C++ program, warn if debugging is - not yet fully available. - -+eN - Control how C++ virtual function definitions are used - (like cfront 1.x). - +This file contains information about GCC releases which has been +generated automatically from the online release notes. This file +covers releases of GCC (and the former EGCS project) since EGCS 1.0, +on the line of development that led to GCC 3; for information on GCC +2.8.1 and older releases of GCC 2, see ONEWS. + +====================================================================== +http://gcc.gnu.org/gcc-2.95/gcc-2.95.3.html + + GCC 2.95.3 + + January 11, 2001 + + The GNU project and the GCC developers are pleased to announce the + prerelease of GCC version 2.95.3. GCC used to stand for the GNU C + Compiler, but since the compiler supports several other languages + aside from C, it now stands for the GNU Compiler Collection. + + This is a minor release to address several bugs in the [1]GCC version + 2.95.2 release. + + * 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 setjmp/longjmp based exception handling. + + 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. + + The whole suite has been extensively [2]regression tested and + [3]package tested. It should be reliable and suitable for widespread + use. + + The GCC 2.95 release has several new optimizations, new targets, new + languages and other new features as compared to EGCS 1.1 or GCC 2.8. + See the [4]new features page for a more complete list of new features + found in the GCC 2.95 releases. + + The sources include installation instructions in both HTML and + plaintext forms in the install directory in the distribution. However, + the most up to date [5]installation instructions and [6]build/test + status are on the web pages. We will update those pages as new + information becomes available. + + The GCC developers would like to thank the numerous people that have + contributed new features, test results, bugfixes, etc to GCC. This + [7]amazing group of volunteers is what makes GCC successful. + + And finally, we can't in good conscience fail to mention some + [8]caveats to using GCC 2.95.3. + + Download GCC 2.95.3 from the [9]GNU FTP server (ftp://ftp.gnu.org) + Download GCC 2.95.3 from the [10]GCC FTP server (ftp://gcc.gnu.org) + [11]Find a GNU mirror site + [12]Find a GCC mirror site + + For additional information about GCC please see the [13]GCC project + web server or contact the [14]GCC development mailing list. + _________________________________________________________________ + + + [15]The GCC team + Last modified 2001-01-11 + +References + + 1. http://gcc.gnu.org/gcc-2.95/gcc-2.95.2.html + 2. http://gcc.gnu.org/gcc-2.95/regress.html + 3. http://gcc.gnu.org/gcc-2.95/othertest.html + 4. http://gcc.gnu.org/gcc-2.95/features.html + 5. http://gcc.gnu.org/install/index.html + 6. http://gcc.gnu.org/gcc-2.95/buildstat.html + 7. http://gcc.gnu.org/thanks.html + 8. http://gcc.gnu.org/gcc-2.95/caveats.html + 9. ftp://ftp.gnu.org/pub/gnu/gcc/ + 10. ftp://gcc.gnu.org/pub/gcc/releases/index.html + 11. http://www.gnu.org/order/ftp.html + 12. http://gcc.gnu.org/mirrors.html + 13. http://gcc.gnu.org/index.html + 14. mailto:gcc@gcc.gnu.org + 15. http://gcc.gnu.org/about.html +====================================================================== +http://gcc.gnu.org/gcc-2.95/gcc-2.95.2.html + + GCC 2.95.2 + + October 27, 1999 + + The GNU project and the GCC developers are pleased to announce the + release of GCC version 2.95.2. GCC used to stand for the GNU C + Compiler, but since the compiler supports several other languages + aside from C, it now stands for the GNU Compiler Collection. + + This is a minor release to address several bugs in the GCC version + 2.95.1 release. + + 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. + + The whole suite has been extensively [1]regression tested and + [2]package tested. It should be reliable and suitable for widespread + use. + + The GCC 2.95 release has several new optimizations, new targets, new + languages and other new features as compared to EGCS 1.1 or GCC 2.8. + See the [3]new features page for a more complete list of new features + found in the GCC 2.95 releases. + + The sources include installation instructions in both HTML and + plaintext forms in the install directory in the distribution. However, + the most up to date [4]installation instructions and [5]build/test + status are on the web pages. We will update those pages as new + information becomes available. + + The GCC developers would like to thank the numerous people that have + contributed new features, test results, bugfixes, etc to GCC. This + [6]amazing group of volunteers is what makes GCC successful. + + And finally, we can't in good conscience fail to mention some + [7]caveats to using GCC 2.95.2. + + Download GCC 2.95.2 from the [8]GNU FTP server (ftp://ftp.gnu.org) + Download GCC 2.95.2 from the [9]GCC/EGCS FTP server + (ftp://gcc.gnu.org) + [10]Find a GNU mirror site + [11]Find a GCC/EGCS mirror site + + For additional information about GCC please see the [12]GCC project + web server or contact the [13]GCC development mailing list. + _________________________________________________________________ + + + [14]The GCC team + Last modified 2000-11-10 + +References + + 1. http://gcc.gnu.org/gcc-2.95/regress.html + 2. http://gcc.gnu.org/gcc-2.95/othertest.html + 3. http://gcc.gnu.org/gcc-2.95/features.html + 4. http://gcc.gnu.org/install/index.html + 5. http://gcc.gnu.org/gcc-2.95/buildstat.html + 6. http://gcc.gnu.org/thanks.html + 7. http://gcc.gnu.org/gcc-2.95/caveats.html + 8. ftp://ftp.gnu.org/pub/gnu/gcc/ + 9. ftp://gcc.gnu.org/pub/gcc/releases/index.html + 10. http://www.gnu.org/order/ftp.html + 11. http://gcc.gnu.org/mirrors.html + 12. http://gcc.gnu.org/index.html + 13. mailto:gcc@gcc.gnu.org + 14. http://gcc.gnu.org/about.html +====================================================================== +http://gcc.gnu.org/gcc-2.95/gcc-2.95.1.html + + GCC 2.95.1 + + August 19, 1999 + + The GNU project and the GCC/EGCS developers are pleased to announce + the release of GCC version 2.95.1. GCC used to stand for the GNU C + Compiler, but since the compiler supports several other languages + aside from C, it now stands for the GNU Compiler Collection. + + This is a minor release to address several bugs in the GCC version + 2.95 release. + + * 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. + + The whole suite has been extensively [1]regression tested and + [2]package tested. It should be reliable and suitable for widespread + use. + + The compiler has several new optimizations, new targets, new languages + and other new features. See the [3]new features page for a more + complete list of new features found in the GCC 2.95 releases. + + The sources include installation instructions in both HTML and + plaintext forms in the install directory in the distribution. However, + the most up to date [4]installation instructions and [5]build/test + status are on the web pages. We will update those pages as new + information becomes available. + + The GCC developers would like to thank the numerous people that have + contributed new features, test results, bugfixes, etc to GCC. This + [6]amazing group of volunteers is what makes GCC successful. + + And finally, we can't in good conscience fail to mention some + [7]caveats to using GCC 2.95.1. + + Download GCC 2.95.1 from the [8]GNU FTP server (ftp://ftp.gnu.org) + Download GCC 2.95.1 from the [9]GCC/EGCS FTP server + (ftp://go.cygnus.com) + [10]Find a GNU mirror site + [11]Find a GCC/EGCS mirror site + + For additional information about GCC please see the [12]GCC project + web server or contact the [13]GCC development mailing list. + _________________________________________________________________ + + + [14]The GCC team + Last modified 2000-11-10 + +References + + 1. http://gcc.gnu.org/gcc-2.95/regress.html + 2. http://gcc.gnu.org/gcc-2.95/othertest.html + 3. http://gcc.gnu.org/gcc-2.95/features.html + 4. http://gcc.gnu.org/install/index.html + 5. http://gcc.gnu.org/gcc-2.95/buildstat.html + 6. http://gcc.gnu.org/thanks.html + 7. http://gcc.gnu.org/gcc-2.95/caveats.html + 8. ftp://ftp.gnu.org/pub/gnu/gcc/ + 9. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html + 10. http://www.gnu.org/order/ftp.html + 11. http://gcc.gnu.org/mirrors.html + 12. http://gcc.gnu.org/index.html + 13. mailto:gcc@gcc.gnu.org + 14. http://gcc.gnu.org/about.html +====================================================================== +http://gcc.gnu.org/gcc-2.95/gcc-2.95.html + + GCC 2.95 + + July 31, 1999 + + The GNU project and the GCC/EGCS developers are pleased to announce + the release of GCC version 2.95. GCC used to stand for the GNU C + Compiler, but since the compiler supports several other languages + aside from C, it now stands for the GNU Compiler Collection. + + This is the first release of GCC since the April 1999 GCC/EGCS + reunification and includes nearly a year's worth of new development + and bugfixes. + + The whole suite has been extensively [1]regression tested and + [2]package tested. It should be reliable and suitable for widespread + use. + + The compiler has several new optimizations, new targets, new languages + and other new features. See the [3]new features page for a more + complete list of new features found in the GCC 2.95 releases. + + The sources include installation instructions in both HTML and + plaintext forms in the install directory in the distribution. However, + the most up to date [4]installation instructions and [5]build/test + status are on the web pages. We will update those pages as new + information becomes available. + + The GCC developers would like to thank the numerous people that have + contributed new features, test results, bugfixes, etc to GCC. This + [6]amazing group of volunteers is what makes GCC successful. + + And finally, we can't in good conscience fail to mention some + [7]caveats to using GCC 2.95. + + Download GCC 2.95 from the [8]GNU FTP server (ftp://ftp.gnu.org) + Download GCC 2.95 from the [9]GCC/EGCS FTP server + (ftp://go.cygnus.com) + [10]Find a GNU mirror site + [11]Find a GCC/EGCS mirror site + + For additional information about GCC please see the [12]GCC project + web server or contact the [13]GCC development mailing list. + _________________________________________________________________ + + + [14]The GCC team + Last modified 2000-11-10 + +References + + 1. http://gcc.gnu.org/gcc-2.95/regress.html + 2. http://gcc.gnu.org/gcc-2.95/othertest.html + 3. http://gcc.gnu.org/gcc-2.95/features.html + 4. http://gcc.gnu.org/install/index.html + 5. http://gcc.gnu.org/gcc-2.95/buildstat.html + 6. http://gcc.gnu.org/thanks.html + 7. http://gcc.gnu.org/gcc-2.95/caveats.html + 8. ftp://ftp.gnu.org/pub/gnu/gcc/ + 9. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html + 10. http://www.gnu.org/order/ftp.html + 11. http://gcc.gnu.org/mirrors.html + 12. http://gcc.gnu.org/index.html + 13. mailto:gcc@gcc.gnu.org + 14. http://gcc.gnu.org/about.html +====================================================================== +http://gcc.gnu.org/gcc-2.95/features.html + + GCC 2.95 New Features + + * General Optimizer Improvements: + + [1]Localized register spilling to improve speed and code + density especially on small register class machines. + + [2]Global CSE using lazy code motion algorithms. + + [3]Improved global constant/copy propagation. + + [4]Improved control flow graph analysis and manipulation. + + [5]Local dead store elimination. + + [6]Memory Load hoisting/store sinking in loops. + + [7]Type based alias analysis is enabled by default. Note this + feature will expose bugs in the Linux kernel. Please refer to + the [8]FAQ for additional information on this issue. + + Major revamp of GIV detection, combination and simplification + to improve loop performance. + + Major improvements to register allocation and reloading. + * New Languages and Language specific improvements + + [9]Many C++ improvements. + + [10]Many Fortran improvements. + + [11]Java front-end has been integrated. A [12]runtime library + is available separately. + + [13]ISO C99 support + + [14]Chill front-end and runtime has been integrated. + + Boehm garbage collector support in libobjc. + + More support for various pragmas which appear in vendor + include files + * New Targets and Target Specific Improvements + + [15]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 + + Various performance improvements to the i960 port. + + Major rewrite of ns32k port in turn improves performance + * Other significant improvements + + [16]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 [17]features found in GCC 2.8. + _________________________________________________________________ + + + [18]The GCC team + Last modified 2000-12-04 + +References + + 1. http://gcc.gnu.org/news/spill.html + 2. http://gcc.gnu.org/news/lcm.html + 3. http://gcc.gnu.org/news/cprop.html + 4. http://gcc.gnu.org/news/cfg.html + 5. http://gcc.gnu.org/news/dse.html + 6. http://gcc.gnu.org/news/hoist.html + 7. http://gcc.gnu.org/news/alias.html + 8. http://gcc.gnu.org/fom_serv/cache/24.html + 9. http://gcc.gnu.org/gcc-2.95/c++features.html + 10. http://gcc.gnu.org/onlinedocs/g77_news.html + 11. http://sources.redhat.com/java/gcj-announce.txt + 12. http://gcc.gnu.org/javaannounce.html + 13. http://gcc.gnu.org/c99status.html + 14. http://gcc.gnu.org/news/chill.html + 15. http://gcc.gnu.org/news/sparc.html + 16. http://gcc.gnu.org/news/egcs-vcg.html + 17. http://gcc.gnu.org/egcs-1.0/features-2.8.html + 18. http://gcc.gnu.org/about.html +====================================================================== +http://gcc.gnu.org/gcc-2.95/caveats.html + + GCC 2.95 Caveats + + * GCC 2.95 will issue an error for invalid asm statements that had + been silently accepted by earlier versions of the compiler. This + is particularly noticeable when compiling older versions of the + Linux kernel (2.0.xx). Please refer to the [1]FAQ for more + information on this issue. + * GCC 2.95 implements type based alias analysis to disambiguate + memory references. Some programs, particularly the Linux kernel + violate ANSI/ISO aliasing rules and therefore may not operate + correctly when compiled with GCC 2.95. Please refer to the [2]FAQ + for more information on this issue. + * GCC 2.95 has a known bug in its handling of complex variables for + 64bit targets. Instead of silently generating incorrect code, GCC + 2.95 will issue a fatal error for situations it can not handle. + This primarily affects the Fortran community as Fortran makes more + use of complex variables than C or C++. + * GCC 2.95 has an integrated libstdc++, but does not have an + integrated libg++. Furthermore old libg++ releases will not work + with GCC 2.95. You can retrieve a recent copy of libg++ from the + [3]GCC ftp server. + Note most C++ programs only need libstdc++. + * Exception handling may not work with shared libraries, + particularly on alphas, hppas, rs6000/powerpc and mips based + platforms. Exception handling is known to work on x86 GNU/Linux + platforms with shared libraries. + * In general, GCC 2.95 is more rigorous about rejecting invalid C++ + code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0, + or EGCS 1.1. As a result it may be necessary to fix C++ code + before it will compile with GCC 2.95. + * G++ is also converting toward the ISO C++ standard; as a result + code which was previously valid (and thus accepted by other + compilers and older versions of g++) may no longer be accepted. + The flag -fpermissive may allow some non-conforming code to + compile with GCC 2.95. + * GCC 2.95 compiled C++ code is not binary compatible with EGCS + 1.1.x, EGCS 1.0.x or GCC 2.8.x. + * GCC 2.95 does not have changes from the GCC 2.8 tree that were + made between Sept 30, 1998 and April 30, 1999 (the official end of + the GCC 2.8 project). Future GCC releases will include all the + changes from the defunct GCC 2.8 sources. + _________________________________________________________________ + + + [4]The GCC team + Last modified 2000-11-10 + +References + + 1. http://gcc.gnu.org/faq.html#asmclobber + 2. http://gcc.gnu.org/fom_serv/cache/24.html + 3. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz + 4. http://gcc.gnu.org/about.html +====================================================================== +http://gcc.gnu.org/egcs-1.1/egcs-1.1.2.html + + EGCS 1.1.2 + + March 15, 1999 + + We are pleased to announce the release of EGCS 1.1.2. + + EGCS is a collaborative effort involving several groups of hackers + using an open development model to accelerate development and testing + of GNU compilers and runtime libraries. + + EGCS 1.1.2 is a minor update to the EGCS 1.1.1 compiler to fix several + serious problems in EGCS 1.1.1. + * General improvements and fixes + + Fix bug in loop optimizer which caused the SPARC (and + potentially other) ports to segfault. + + Fix infinite recursion in alias analysis and combiner code. + + Fix bug in regclass preferencing. + + Fix incorrect loop reversal which caused incorrect code to be + generated for several targets. + + Fix return value for builtin memcpy. + + Reduce compile time for certain loops which exposed quadratic + behavior in the loop optimizer. + + Fix bug which caused volatile memory to be written multiple + times when only one write was needed/desired. + + Fix compiler abort in caller-save.c + + Fix combiner bug which caused incorrect code generation for + certain division by constant operations. + + Fix incorrect code generation due to a bug in range check + optimizations. + + Fix incorrect code generation due to mis-handling of + clobbered values in CSE. + + Fix compiler abort/segfault due to incorrect register + splitting when unrolling loops. + + Fix code generation involving autoincremented addresses with + ternary operators. + + Work around bug in the scheduler which caused qt to be + mis-compiled on some platforms. + + Fix code generation problems with -fshort-enums. + + Tighten security for temporary files. + + Improve compile time for codes which make heavy use of + overloaded functions. + + Fix multiply defined constructor/destructor symbol problems. + + Avoid setting bogus RPATH environemnt variable during + bootstrap. + + Avoid GNU-make dependencies in the texinfo subdir. + + Install CPP wrapper script in $(prefix)/bin if --enable-cpp. + --enable-cpp= can be used to specify an additional install + directory for the cpp wrapper script. + + Fix CSE bug which caused incorrect label-label refs to appear + on some platforms. + + Avoid linking in EH routines from libgcc if they are not + needed. + + Avoid obscure bug in aliasing code. + + Fix bug in weak symbol handling. + * Platform-specific improvements and fixes + + Fix detection of PPro/PII on Unixware 7. + + Fix compiler segfault when building spec99 and other programs + for SPARC targets. + + Fix code-generation bugs for integer and floating point + conditional move instructions on the PPro/PII. + + Use fixincludes to fix byteorder problems on i?86-*-sysv. + + Fix build failure for the arc port. + + Fix floating point format configuration for i?86-gnu port + + Fix problems with hppa1.0-hp-hpux10.20 configuration when + threads are enabled + + Fix coldfire code generation bugs. + + Fix "unrecognized insn" problems for Alpha and PPC ports. + + Fix h8/300 code generation problem with floating point values + in memory. + + Fix unrecognized insn problems for the m68k port. + + Fix namespace-pollution problem for the x86 port. + + Fix problems with old assembler on x86 NeXT systems. + + Fix PIC code-generation problems for the SPARC port. + + Fix minor bug with LONG_CALLS in PowerPC SVR4 support. + + Fix minor ISO namespace violation in Alpha varargs/stdarg + support. + + Fix incorrect "braf" instruction usage for the SH port. + + Fix minor bug in va-sh which prevented its use with -ansi. + + Fix problems recognizing and supporting FreeBSD. + + Handle OpenBSD systems correctly. + + Minor fixincludes fix for Digital UNIX 4.0B. + + Fix problems with ctors/dtors in SCO shared libraries. + + Abort instead of generating incorrect code for PPro/PII + floating point conditional moves. + + Avoid multiply defined symbols on Linux/GNU systems using + libc-5.4.xx. + + Fix abort in alpha compiler. + + Fortran-specific fixes + * Fix the IDate intrinsic (VXT) (in libg2c) so the returned year is + in the documented, non-Y2K-compliant range of 0-99, instead of + being returned as 100 in the year 2000. + * Fix the `Date_and_Time' intrinsic (in libg2c) to return the + milliseconds value properly in Values(8). + * Fix the `LStat' intrinsic (in libg2c) to return device-ID + information properly in SArray(7). + + An important goal of EGCS is to allow wide scale testing of new + features and optimizations which are still under development. However, + EGCS has been carefully tested and should be comparable in quality to + most gcc releases. + + EGCS 1.1.2 is based on the June 6, 1998 snapshot of the GCC 2.8 + development sources; it contains all of the new features found in GCC + 2.8.1 as well as all new development from gcc2 up to June 6, 1998. + + See the [1]new features page for a more complete list of new features + found in EGCS 1.1 releases. + + The EGCS 1.1.2 release includes installation instructions in both HTML + and plaintext forms (see the INSTALL directory in the toplevel + directory of the EGCS 1.1.2 distribution). However, we also keep the + most up to date [2]installation instructions and [3]build/test status + on our web page. We will update those pages as new information becomes + available. + + The EGCS project would like to thank the numerous people that have + contributed new features, test results, bugfixes, etc. This [4]amazing + group of volunteers is what makes EGCS successful. + + And finally, we can't in good conscience fail to mention some + [5]caveats to using EGCS 1.1.2. [6]Download EGCS 1.1.2 from + egcs.cygnus.com (USA California) --> + + [7]Download EGCS 1.1.2 from go.cygnus.com (USA California - High speed + link provided by Stanford) + + The EGCS 1.1.2 release is also available on many [8]mirror sites. + _________________________________________________________________ + + Last modified on July 28, 1999. + +References + + 1. http://gcc.gnu.org/egcs-1.1/features.html + 2. http://gcc.gnu.org/install/index.html + 3. http://gcc.gnu.org/egcs-1.1/buildstat.html + 4. http://gcc.gnu.org/thanks.html + 5. http://gcc.gnu.org/egcs-1.1/caveats.html + 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html + 7. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html + 8. http://gcc.gnu.org/mirrors.html +====================================================================== +http://gcc.gnu.org/egcs-1.1/egcs-1.1.1.html + + EGCS 1.1.1 + + December 1, 1998 + + We are pleased to announce the release of EGCS 1.1.1. + + EGCS is a collaborative effort involving several groups of hackers + using an open development model to accelerate development and testing + of GNU compilers and runtime libraries. + + EGCS 1.1.1 is a minor update to the EGCS 1.1 compiler to fix several + serious problems in EGCS 1.1. + * General improvements and fixes + + Avoid some stack overflows when compiling large functions. + + Avoid incorrect loop invariant code motions. + + Fix some core dumps on Linux kernel code. + + Bring back the imake -Di386 and friends fix from EGCS 1.0.2. + + Fix code generation problem in gcse. + + Various documentation related fixes. + * g++/libstdc++ improvements and fixes + + MT safe EH fix for setjmp/longjmp based exception handling. + + Fix a few bad interactions between optimization and exception + handling. + + Fixes for demangling of template names starting with "__". + + Fix a bug that would fail to run destructors in some cases + with -O2. + + Fix 'new' of classes with virtual bases. + + Fix crash building Qt on the Alpha. + + Fix failure compiling WIFEXITED macro on GNU/Linux. + + Fix some -frepo failures. + * g77 and libf2c improvements and fixes + + Various documentation fixes. + + Avoid compiler crash on RAND intrinsic. + + Fix minor bugs in makefiles exposed by BSD make programs. + + Define _XOPEN_SOURCE for libI77 build to avoid potential + problems on some 64-bit systems. + + Fix problem with implicit endfile on rewind. + + Fix spurious recursive I/O errors. + * platform specific improvements and fixes + + Match all versions of UnixWare7. + + Do not assume x86 SVR4 or UnixWare targets can handle stabs + + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion + from unsigned ints to double precision floats. + + Fix ARM ABI issue with NetBSD. + + Fix a few arm code generation bugs. + + Fixincludes will fix additional broken SCO OpenServer header + files. + + Fix a m68k backend bug which caused invalid offsets in reg+d + addresses. + + Fix problems with 64bit AIX 4.3 support. + + Fix handling of long longs for varargs/stdarg functions on + the ppc. + + Minor fixes to CPP predefines for Windows. + + Fix code generation problems with gpr<->fpr copies for 64bit + ppc + + Fix a few coldfire code generation bugs. + + Fix some more header file problems on SunOS 4.x + + Fix assert.h handling for RTEMS. + + Fix Windows handling of TREE_SYMBOL_REFERENCED. + + Fix x86 compiler abort in reg-stack pass. + + Fix cygwin/windows problem with section attributes. + + Fix Alpha code generation problem exposed by SMP Linux + kernels. + + Fix typo in m68k 32->64bit integer conversion. + + Make sure target libraries build with -fPIC for PPC & Alpha + targets. + + An important goal of EGCS is to allow wide scale testing of new + features and optimizations which are still under development. However, + EGCS has been carefully tested and should be comparable in quality to + most gcc releases. + + EGCS 1.1.1 is based on the June 6, 1998 snapshot of the GCC 2.8 + development sources; it contains all of the new features found in GCC + 2.8.1 as well as all new development from gcc2 up to June 6, 1998. + + See the [1]new features page for a more complete list of new features + found in EGCS 1.1 releases. + + The EGCS 1.1.1 release includes installation instructions in both HTML + and plaintext forms (see the INSTALL directory in the toplevel + directory of the EGCS 1.1.1 distribution). However, we also keep the + most up to date [2]installation instructions and [3]build/test status + on our web page. We will update those pages as new information becomes + available. + + The EGCS project would like to thank the numerous people that have + contributed new features, test results, bugfixes, etc. This [4]amazing + group of volunteers is what makes EGCS successful. + + And finally, we can't in good conscience fail to mention some + [5]caveats to using EGCS 1.1.1. + + [6]Download EGCS 1.1.1 from egcs.cygnus.com (USA California) + + The EGCS 1.1.1 release is also available on many mirror sites. + [7]Goto mirror list to find a closer site + _________________________________________________________________ + + Last modified on July 28, 1999. + +References + + 1. http://gcc.gnu.org/egcs-1.1/features.html + 2. http://gcc.gnu.org/install/index.html + 3. http://gcc.gnu.org/egcs-1.1/buildstat.html + 4. http://gcc.gnu.org/thanks.html + 5. http://gcc.gnu.org/egcs-1.1/caveats.html + 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html + 7. http://gcc.gnu.org/mirrors.html +====================================================================== +http://gcc.gnu.org/egcs-1.1/egcs-1.1.html + + EGCS 1.1 + + September 3, 1998 + + We are pleased to announce the release of EGCS 1.1. + + EGCS is a free software project to further the development of the GNU + compilers using an open development environment. + + EGCS 1.1 is a major new release of the EGCS compiler system. It has + been [1]extensively tested and is believed to be stable and suitable + for widespread use. + + EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8 + development sources; it contains all of the new features found in GCC + 2.8.1 as well as all new development from GCC up to June 6, 1998. + + EGCS also contains many improvements and features not found in GCC or + in older versions of EGCS. + * Global common subexpression elimination and global constant/copy + propagation (aka [2]gcse) + * Ongoing improvements to the [3]alias analysis support to allow for + better optimizations throughout the compiler. + * Vastly improved [4]C++ compiler and integrated C++ runtime + libraries. + * Fixes for the /tmp symlink race security problems. + * New targets including mips16, arm-thumb and 64 bit PowerPC. + * Improvements to GNU Fortran (g77) compiler and runtime library + made since [5]g77 version 0.5.23. + + See the [6]new features page for a more complete list of new features + found in EGCS 1.1 releases. + + The EGCS 1.1 release includes installation instructions in both HTML + and plaintext forms (see the INSTALL directory in the toplevel + directory of the EGCS 1.1 distribution). However, we also keep the + most up to date [7]installation instructions and [8]build/test status + on our web page. We will update those pages as new information becomes + available. + + The EGCS project would like to thank the numerous people that have + contributed new features, test results, bugfixes, etc. This [9]amazing + group of volunteers is what makes EGCS successful. + + And finally, we can't in good conscience fail to mention some + [10]caveats to using EGCS 1.1. + + [11]Download EGCS 1.1 from egcs.cygnus.com (USA California) + + [12]Download EGCS 1.1 from go.cygnus.com (USA California -- High speed + link provided by Stanford) + + The EGCS 1.1 release is also available on many mirror sites. + [13]Goto mirror list to find a closer site + _________________________________________________________________ + + Last modified on September 4, 1999. + +References + + 1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html + 2. http://gcc.gnu.org/news/gcse.html + 3. http://gcc.gnu.org/news/alias.html + 4. http://gcc.gnu.org/egcs-1.1/c++features.html + 5. http://gcc.gnu.org/onlinedocs/g77_news.html + 6. http://gcc.gnu.org/egcs-1.1/features.html + 7. http://gcc.gnu.org/install/index.html + 8. http://gcc.gnu.org/egcs-1.1/buildstat.html + 9. http://gcc.gnu.org/thanks.html + 10. http://gcc.gnu.org/egcs-1.1/caveats.html + 11. ftp://egcs.cygnus.com/pub/egcs/releases/index.html + 12. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html + 13. http://gcc.gnu.org/mirrors.html +====================================================================== +http://gcc.gnu.org/egcs-1.1/features.html + + EGCS 1.1 new features + + * Integrated GNU Fortran (g77) compiler and runtime library with + improvements, based on [1]g77 version 0.5.23. + * Vast improvements in the C++ compiler; so many they have [2]page + of their own! + * Compiler implements [3]global common subexpression elimination and + global copy/constant propagation. + * More major improvements in the [4]alias analysis code. + * More major improvements in the exception handling code to improve + performance, lower static overhead and provide the infrastructure + for future improvements. + * The infamous /tmp symlink race security problems have been fixed. + * The regmove optimization pass has been nearly completely rewritten + to improve performance of generated code. + * The compiler now recomputes register usage information before + local register allocation. By providing more accurate information + to the priority based allocator, we get better register + allocation. + * The register reloading phase of the compiler optimizes spill code + much better than in previous releases. + * Some bad interactions between the register allocator and + instruction scheduler have been fixed, resulting in much better + code for certain programs. Additionally, we have tuned the + scheduler in various ways to improve performance of generated code + for some architectures. + * The compiler's branch shortening algorithms have been + significantly improved to work better on targets which align jump + targets. + * The compiler now supports -Os to prefer optimizing for code space + over optimizing for code speed. + * The compiler will now totally eliminate library calls which + compute constant values. This primarily helps targets with no + integer div/mul support and targets without floating point + support. + * The compiler now supports an extensive "--help" option. + * cpplib has been greatly improved and may be suitable for limited + use. + * Memory footprint for the compiler has been significantly reduced + for some pathological cases. + * The time to build EGCS has been improved for certain targets + (particularly the alpha and mips platforms). + * Many infrastructure improvements throughout the compiler, plus the + usual mountain of bugfixes and minor improvements. + * Target dependent improvements: + + SPARC port now includes V8 plus and V9 support as well as + performance tuning for Ultra class machines. The SPARC port + now uses the Haifa scheduler. + + Alpha port has been tuned for the EV6 processor and has an + optimized expansion of memcpy/bzero. The Alpha port now uses + the Haifa scheduler. + + RS6000/PowerPC: EGCS 1.1 includes support for the Power64 + architecture and aix4.3 support. The RS6000/PowerPC port now + uses the Haifa scheduler. + + x86: Alignment of static store data and jump targets is per + Intel recommendations now. Various improvements throughout + the x86 port to improve performance on Pentium processors. + Conditional move support has been fixed and enabled for PPro + processors. The x86 port also better supports 64bit + operations now. + + MIPS has improved multiply/multiply-add support and now + includes mips16 ISA support. + + M68k has many micro-optimizations and Coldfire fixes. + * Core compiler is based on the GCC development tree from June 9, + 1998, so we have all of the [5]features found in GCC 2.8. + + [6]Return to the EGCS home page + + Last modified: September 4, 1999 + +References + + 1. http://gcc.gnu.org/onlinedocs/g77_news.html + 2. http://gcc.gnu.org/egcs-1.1/c++features.html + 3. http://gcc.gnu.org/news/gcse.html + 4. http://gcc.gnu.org/news/alias.html + 5. http://gcc.gnu.org/egcs-1.0/features-2.8.html + 6. http://gcc.gnu.org/index.html +====================================================================== +http://gcc.gnu.org/egcs-1.1/caveats.html + + EGCS 1.1 Caveats + + * EGCS has an integrated libstdc++, but does not have an integrated + libg++. Furthermore old libg++ releases will not work with EGCS; + HJ Lu has made a [1]libg++ snapshot available which may work with + EGCS. + Note most C++ programs only need libstdc++. + * Exception handling may not work with shared libraries, + particularly on alphas, hppas, rs6000/powerpc and mips based + platforms. Exception handling is known to work on x86-linux + platforms with shared libraries. + * Some versions of the Linux kernel have bugs which prevent them + from being compiled or from running when compiled by EGCS. See + [2]the FAQ for additional information. + * In general, EGCS is more rigorous about rejecting invalid C++ code + or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As + a result it may be necessary to fix C++ code before it will + compile with EGCS. + * G++ is also converting toward the ISO C++ standard; as a result + code which was previously valid (and thus accepted by other + compilers and older versions of g++) may no longer be accepted. + * EGCS 1.1 compiled C++ code is not binary compatible with EGCS + 1.0.x or GCC 2.8.x due to changes necessary to support thread safe + exception handling. + + [3]Return to the GCC home page + + Last modified: July 28, 1999 + +References + + 1. ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1.2.tar.gz + 2. http://gcc.gnu.org/fom_serv/cache/24.html + 3. http://gcc.gnu.org/index.html +====================================================================== +http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.html + + EGCS 1.0.3 + + May 15, 1998 + + We are pleased to announce the release of EGCS 1.0.3. + + EGCS is a collaborative effort involving several groups of hackers + using an open development model to accelerate development and testing + of GNU compilers and runtime libraries. + + EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few + problems reported by Red Hat for builds of Red Hat 5.1. + * Generic bugfixes: + + Fix a typo in the libio library which resulted in incorrect + behavior of istream::get. + + Fix the Fortran negative array index problem. + + Fix a major problem with the ObjC runtime thread support + exposed by glibc2. + + Reduce memory consumption of the Haifa scheduler. + * Target specific bugfixes: + + Fix one x86 floating point code generation bug exposed by + glibc2 builds. + + Fix one x86 internal compiler error exposed by glibc2 builds. + + Fix profiling bugs on the Alpha. + + Fix ImageMagick & emacs 20.2 build problems on the Alpha. + + Fix rs6000/ppc bug when converting values from integer types + to floating point types. + + An important goal of EGCS is to allow wide scale testing of new + features and optimizations which are still under development. However, + EGCS has been carefully tested and should be comparable in quality to + most GCC releases. + + EGCS 1.0.3 is based on an August 2, 1997 snapshot of the GCC 2.8 + development sources; it contains nearly all of the new features found + in GCC 2.8. + + EGCS also contains many improvements and features not found in GCC 2.7 + or GCC 2.8. + * Integrated C++ runtime libraries, including support for most major + GNU/Linux systems! + * The integrated libstdc++ library includes a verbatim copy of + [1]SGI's STL release instead of a modified copy. + * Integrated GNU Fortran compiler + * New instruction scheduler + * New alias analysis code + + See the [2]new features page for a more complete list of new features + found in EGCS 1.0.x releases. + + The EGCS 1.0.3 release includes installation instructions in both HTML + and plaintext forms (see the INSTALL directory in the toplevel + directory of the EGCS 1.0.3 distribution). However, we also keep the + most up to date [3]installation instructions and [4]build/test status + on our web page. We will update those pages as new information becomes + available. + + And, we can't in good conscience fail to mention some [5]caveats to + using EGCS. + + Update: Big thanks to Stanford for providing a high speed link for + downloading EGCS (go.cygnus.com)! + + [6]Download EGCS 1.0.3 from ftp.cygnus.com (USA California) + + [7]Download EGCS 1.0.3 from go.cygnus.com (USA California -- High + speed link provided by Stanford) + + The EGCS 1.0.3 release is also available on many mirror sites. + [8]Goto mirror list to find a closer site + + We'd like to thank the numerous people that have contributed new + features, test results, bugfixes, etc. Unfortunately, they're far too + numerous to mention by name. + _________________________________________________________________ + + Last modified on February 22, 1999. + +References + + 1. http://www.sgi.com/Technology/STL + 2. http://gcc.gnu.org/egcs-1.0/features.html + 3. http://gcc.gnu.org/install/index.html + 4. http://gcc.gnu.org/egcs-1.0/buildstat.html + 5. http://gcc.gnu.org/egcs-1.0/caveats.html + 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html + 7. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html + 8. http://gcc.gnu.org/mirrors.html +====================================================================== +http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.html + + EGCS 1.0.2 + + March 16, 1998 + + We are pleased to announce the release of EGCS 1.0.2. + + EGCS is a collaborative effort involving several groups of hackers + using an open development model to accelerate development and testing + of GNU compilers and runtime libraries. + + EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several + serious problems in EGCS 1.0.1. + * General improvements and fixes + + Memory consumption significantly reduced, especially for + templates and inline functions. + + Fix various problems with glibc2.1. + + Fix loop optimization bug exposed by rs6000/ppc port. + + Fix to avoid potential code generation problems in jump.c. + + Fix some undefined symbol problems in dwarf1 debug support. + * g++/libstdc++ improvements and fixes + + libstdc++ in the EGCS release has been updated and should be + link compatible with libstdc++-2.8. + + Various fixes in libio/libstdc++ to work better on Linux + systems. + + Fix problems with duplicate symbols on systems that do not + support weak symbols. + + Memory corruption bug and undefined symbols in bastring have + been fixed. + + Various exception handling fixes. + + Fix compiler abort for very long thunk names. + * g77 improvements and fixes + + Fix compiler crash for omitted bound in Fortran CASE + statement. + + Add missing entries to g77 lang-options. + + Fix problem with -fpedantic in the g77 compiler. + + Fix "backspace" problem with g77 on alphas. + + Fix x86 backend problem with Fortran literals and -fpic. + + Fix some of the problems with negative subscripts for g77 on + alphas. + + Fixes for Fortran builds on cygwin32/mingw32. + * platform specific improvements and fixes + + Fix long double problems on x86 (exposed by glibc) + + x86 ports define i386 again to keep imake happy. + + Fix exception handling support on NetBSD ports. + + Several changes to collect2 to fix many problems with AIX. + + Define __ELF__ for rs6000/linux. + + Fix -mcall-linux problem on rs6000/linux. + + Fix stdarg/vararg problem for rs6000/linux. + + Allow autoconf to select a proper install problem on AIX 3.1. + + m68k port support includes -mcpu32 option as well as cpu32 + multilibs. + + Fix stdarg bug for irix6. + + Allow EGCS to build on irix5 without the gnu assembler. + + Fix problem with static linking on sco5. + + Fix bootstrap on sco5 with native compiler. + + Fix for abort building newlib on H8 target. + + Fix fixincludes handling of math.h on SunOS. + + Minor fix for motorola 3300 m68k systems. + + An important goal of EGCS is to allow wide scale testing of new + features and optimizations which are still under development. However, + EGCS has been carefully tested and should be comparable in quality to + most GCC releases. + + EGCS 1.0.2 is based on an August 2, 1997 snapshot of the GCC 2.8 + development sources; it contains nearly all of the new features found + in GCC 2.8. + + EGCS also contains many improvements and features not found in GCC 2.7 + or GCC 2.8. + * Integrated C++ runtime libraries, including support for most major + linux systems! + * The integrated libstdc++ library includes a verbatim copy of + [1]SGI's STL release. + * Integrated GNU Fortran compiler + * New instruction scheduler + * New alias analysis code + + See the [2]new features page for a more complete list of new features + found in EGCS 1.0.x releases. + + The EGCS 1.0.2 release includes installation instructions in both HTML + and plaintext forms (see the INSTALL directory in the toplevel + directory of the EGCS 1.0.2 distribution). However, we also keep the + most up to date [3]installation instructions and [4]build/test status + on our web page. We will update those pages as new information becomes + available. + + And, we can't in good conscience fail to mention some [5]caveats to + using EGCS. + + Update: Big thanks to Stanford for providing a high speed link for + downloading EGCS (go.cygnus.com)! + + [6]Download EGCS 1.0.2 from ftp.cygnus.com (USA California) + + [7]Download EGCS 1.0.2 from go.cygnus.com (USA California -- High + speed link provided by Stanford) + + The EGCS 1.0.2 release is also available on many mirror sites. + [8]Goto mirror list to find a closer site + + We'd like to thank the numerous people that have contributed new + features, test results, bugfixes, etc. Unfortunately, they're far too + numerous to mention by name. + _________________________________________________________________ + + Last modified on July 28, 1999. + +References + + 1. http://www.sgi.com/Technology/STL/ + 2. http://gcc.gnu.org/egcs-1.0/features.html + 3. http://gcc.gnu.org/install/index.html + 4. http://gcc.gnu.org/egcs-1.0/buildstat.html + 5. http://gcc.gnu.org/egcs-1.0/caveats.html + 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html + 7. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html + 8. http://gcc.gnu.org/mirrors.html +====================================================================== +http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.html + + EGCS 1.0.1 + + January 6, 1998 + + We are pleased to announce the release of EGCS 1.0.1. + + EGCS is a collaborative effort involving several groups of hackers + using an open development model to accelerate development and testing + of GNU compilers and runtime libraries. + + EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few + critical bugs and add support for Red Hat 5.0 Linux. Changes since the + EGCS 1.0 release: + * Add support for Red Hat 5.0 Linux and better support for Linux + systems using glibc2. + Many programs failed to link when compiled with EGCS 1.0 on Red + Hat 5.0 or on systems with newer versions of glibc2. EGCS 1.0.1 + should fix these problems. + * Compatability with both EGCS 1.0 and GCC 2.8 libgcc exception + handling interfaces. + To avoid future compatibility problems, we strongly urge anyone + who is planning on distributing shared libraries that contain C++ + code to upgrade to EGCS 1.0.1 first. + Soon after EGCS 1.0 was released, the GCC developers made some + incompatible changes in libgcc's exception handling interfaces. + These changes were needed to solve problems on some platforms. + This means that GCC 2.8.0, when released, will not be seamlessly + compatible with shared libraries built by EGCS 1.0. The reason is + that the libgcc.a in GCC 2.8.0 will not contain a function needed + by the old interface. + The result of this is that there may be compatibility problems + with shared libraries built by EGCS 1.0 when used with GCC 2.8.0. + With EGCS 1.0.1, generated code uses the new (GCC 2.8.0) + interface, and libgcc.a has the support routines for both the old + and the new interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be + freely mixed, and EGCS 1.0.1 and GCC 2.8.0 code can be freely + mixed). + The maintainers of GCC 2.x have decided against including seamless + support for the old interface in 2.8.0, since it was never + "official", so to avoid future compatibility problems we recommend + against distributing any shared libraries built by EGCS 1.0 that + contain C++ code (upgrade to 1.0.1 and use that). + * Various bugfixes in the x86, hppa, mips, and rs6000/ppc backends. + The x86 changes fix code generation errors exposed when building + glibc2 and the Linux dynamic linker (ld.so). + The hppa change fixes a compiler abort when configured for use + with RTEMS. + The MIPS changes fix problems with the definition of LONG_MAX on + newer systems, allow for command line selection of the target ABI, + and fix one code generation problem. + The rs6000/ppc change fixes some problems with passing structures + to varargs/stdarg functions. + * A few machine independent bugfixes, mostly to fix code generation + errors when building Linux kernels or glibc. + * Fix a few critical exception handling and template bugs in the C++ + compiler. + * Fix Fortran namelist bug on alphas. + * Fix build problems on x86-solaris systems. + + An important goal of EGCS is to allow wide scale testing of new + features and optimizations which are still under development. However, + EGCS has been carefully tested and should be comparable in quality to + most GCC releases. + + EGCS 1.0.1 is based on an August 2, 1997 snapshot of the GCC 2.8 + development sources; it contains nearly all of the new features found + in GCC 2.8. + + EGCS also contains many improvements and features not found in GCC 2.7 + and even the soon to be released GCC 2.8 compilers. + * Integrated C++ runtime libraries, including support for most major + linux systems! + * The integrated libstdc++ library includes a verbatim copy of + [1]SGI's STL release. + * Integrated GNU Fortran compiler + * New instruction scheduler + * New alias analysis code + + See the [2]new features page for a more complete list of new features + found in EGCS 1.0.x releases. + + The EGCS 1.0.1 release includes installation instructions in both HTML + and plaintext forms (see the INSTALL directory in the toplevel + directory of the EGCS 1.0.1 distribution). However, we also keep the + most up to date [3]installation instructions and [4]build/test status + on our web page. We will update those pages as new information becomes + available. + + And, we can't in good conscience fail to mention some [5]caveats to + using EGCS. + + Update: Big thanks to Stanford for providing a high speed link for + downloading EGCS (go.cygnus.com)! + + [6]Download EGCS 1.0.1 from ftp.cygnus.com (USA California) + + [7]Download EGCS 1.0.1 from go.cygnus.com (USA California -- High + speed link provided by Stanford) + + The EGCS 1.0.1 release is also available on many mirror sites. + [8]Goto mirror list to find a closer site + + We'd like to thank the numerous people that have contributed new + features, test results, bugfixes, etc. Unfortunately, they're far too + numerous to mention by name. + _________________________________________________________________ + + Last modified on July 28, 1999. + +References + + 1. http://www.sgi.com/Technology/STL/ + 2. http://gcc.gnu.org/egcs-1.0/features.html + 3. http://gcc.gnu.org/install/index.html + 4. http://gcc.gnu.org/egcs-1.0/buildstat.html + 5. http://gcc.gnu.org/egcs-1.0/caveats.html + 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html + 7. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html + 8. http://gcc.gnu.org/mirrors.html +====================================================================== +http://gcc.gnu.org/egcs-1.0/egcs-1.0.html + + EGCS 1.0 + + December 3, 1997 + + We are pleased to announce the release of EGCS 1.0. + + EGCS is a collaborative effort involving several groups of hackers + using an open development model to accelerate development and testing + of GNU compilers and runtime libraries. + + An important goal of EGCS is to allow wide scale testing of + experimental features and optimizations; therefore, EGCS contains some + features and optimizations which are still under development. However, + EGCS has been carefully tested and should be comparable in quality to + most GCC releases. + + EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8 + development sources; it contains nearly all of the new features found + in GCC 2.8. + + EGCS 1.0 also contains many improvements and features not found in GCC + 2.7 and even the soon to be released GCC 2.8 compilers. + * Integrated C++ runtime libraries, including support for most major + linux systems! + * The integrated libstdc++ library includes a verbatim copy of + [1]SGI's STL release. + * Integrated GNU Fortran compiler + * New instruction scheduler + * New alias analysis code + + See the [2]new features page for a more complete list of new features. + + The EGCS 1.0 release includes installation instructions in both HTML + and plaintext forms (see the INSTALL directory in the toplevel + directory of the EGCS 1.0 distribution). However, we also keep the + most up to date [3]installation instructions and [4]build/test status + on our web page. We will update those pages as new information becomes + available. + + And, we can't in good conscience fail to mention some [5]caveats to + using EGCS. + + Update: The T1 into our main California offices has been 100% + saturated since shortly after the release. We've added an EGCS 1.0 + mirror at our Massachusetts office to help share the load. We also + encourage folks to use the many mirrors available throughout the + world. + + Update: Big thanks to Stanford for providing a high speed link for + downloading EGCS! (go.cygnus.com) + + [6]Download EGCS 1.0 from ftp.cygnus.com (USA California) + + [7]Download EGCS 1.0 from go.cygnus.com (USA California -- High speed + link provided by Stanford) + + The EGCS 1.0 release should be available on most mirror sites by now. + [8]Goto mirror list to find a closer site + + We'd like to thank the numerous people that have contributed new + features, test results, bugfixes, etc. Unfortunately, they're far too + numerous to mention by name. + _________________________________________________________________ + + Last modified on July 28, 1999. + +References + + 1. http://www.sgi.com/Technology/STL + 2. http://gcc.gnu.org/egcs-1.0/features.html + 3. http://gcc.gnu.org/install/index.html + 4. http://gcc.gnu.org/egcs-1.0/buildstat.html + 5. http://gcc.gnu.org/egcs-1.0/caveats.html + 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html + 7. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html + 8. http://gcc.gnu.org/mirrors.html +====================================================================== +http://gcc.gnu.org/egcs-1.0/features.html + + EGCS 1.0 features + + * Core compiler is based on the gcc2 development tree from Aug 2, + 1997, so we have most of the [1]features found in GCC 2.8. + * Integrated GNU Fortran compiler based on g77-0.5.22-19970929. + * Vast improvements in the C++ compiler; so many they have [2]page + of their own! + * Integrated C++ runtime libraries, including support for most major + linux systems! + * New instruction scheduler from IBM Haifa which includes support + for function wide instruction scheduling as well as superscalar + scheduling. + * Significantly improved alias analysis code. + * Improved register allocation for two address machines. + * Significant code generation improvements for Fortran code on + Alphas + * Various optimizations from the g77 project as well as improved + loop optimizations. + * Dwarf2 debug format support for some targets. + * egcs libstdc++ includes the SGI STL implementation without + changes. + * As a result of these and other changes, egcs libstc++ is not + binary compatible with previous releases of libstdc++. + * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The + SCO Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0 + and 1.1), Support for RTEMS on several embedded targets, Support + for arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and + MN103, NEC V850, Sparclet, Solaris & Linux on PowerPCs, etc. + * Integrated testsuites for gcc, g++, g77, libstdc++ and libio. + * RS6000/PowerPC ports generate code which can run on all + RS6000/PowerPC variants by default. + * -mcpu= and -march= switches for the x86 port to allow better + control over how the x86 port generates code. + * Includes the template repository patch (aka repo patch); note the + new template code makes repo obsolete for ELF systems using gnu-ld + such as Linux. + * Plus the usual assortment of bugfixes and improvements. + + [3]Return to the egcs home page + + Last modified: July 28, 1999 + +References + + 1. http://gcc.gnu.org/egcs-1.0/features-2.8.html + 2. http://gcc.gnu.org/egcs-1.0/c++features.html + 3. http://gcc.gnu.org/index.html +====================================================================== +http://gcc.gnu.org/egcs-1.0/caveats.html + + EGCS 1.0 Caveats + + * EGCS has an integrated libstdc++, but does not have an integrated + libg++. Furthermore old libg++ releases will not work with egc; HJ + Lu has made a [1]libg++ snapshot available which may work with + EGCS. + Note most C++ programs only need libstdc++. + * Note that using -pedantic or -Wreturn-type can cause an explosion + in the amount of memory needed for template-heavy C++ code, such + as code that uses STL. Also note that -Wall includes + -Wreturn-type, so if you use -Wall you will need to specify + -Wno-return-type to turn it off. + * Exception handling may not work with shared libraries, + particularly on alphas, hppas, and mips based platforms. Exception + handling is known to work on x86-linux platforms with shared + libraries. + * Some versions of the Linux kernel have bugs which prevent them + from being compiled or from running when compiled by EGCS. See + [2]the FAQ for additional information. + * In general, EGCS is more rigorous about rejecting invalid C++ code + or deprecated C++ constructs than G++ 2.7. As a result it may be + necessary to fix C++ code before it will compile with EGCS. + * G++ is also aggressively tracking the C++ standard; as a result + code which was previously valid (and thus accepted by other + compilers and older versions of G++) may no longer be accepted. + * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS + 1.0.x and later releases should work with Red Hat Linux 5.0. + + [3]Return to the GCC home page + + Last modified: August 27, 1998 + +References + + 1. ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1.2.tar.gz + 2. http://gcc.gnu.org/fom_serv/cache/24.html + 3. http://gcc.gnu.org/index.html +====================================================================== |