diff options
Diffstat (limited to 'contrib/gcc/ONEWS')
-rw-r--r-- | contrib/gcc/ONEWS | 1071 |
1 files changed, 0 insertions, 1071 deletions
diff --git a/contrib/gcc/ONEWS b/contrib/gcc/ONEWS deleted file mode 100644 index 427df254eb6f..000000000000 --- a/contrib/gcc/ONEWS +++ /dev/null @@ -1,1071 +0,0 @@ -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). - |