123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993 |
- This file contains information about GCC releases up to GCC 2.8.1, and
- a tiny bit of information on EGCS.
- For details of changes in EGCS releases and GCC 2.95 and later releases,
- see the release notes on the GCC web site or the file NEWS which contains
- the most relevant parts of those release notes in text form.
- Changes in GCC for EGCS (that are not listed in the web release notes)
- ---------------------------------------------------------------------
- The compiler now supports the "ADDRESSOF" optimization which can significantly
- reduce the overhead for certain inline calls (and inline calls in general).
- Compile time for certain programs using large constant initializers has been
- improved (affects glibc significantly).
- Various improvements have been made to better support cross compilations. They
- are still not easy, but they are improving.
- Target-specific changes:
- M32r: Major improvements to this port.
- Arm: Includes Thumb and super interworking support.
- 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).
- Copyright (C) 2000-2003 Free Software Foundation, Inc.
- Copying and distribution of this file, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved.
|