xref: /netbsd/external/gpl3/gcc.old/dist/gcc/ONEWS (revision 10d565ef)
1*10d565efSmrgThis file contains information about GCC releases up to GCC 2.8.1, and
2*10d565efSmrga tiny bit of information on EGCS.
3*10d565efSmrg
4*10d565efSmrgFor details of changes in EGCS releases and GCC 2.95 and later releases,
5*10d565efSmrgsee the release notes on the GCC web site or the file NEWS which contains
6*10d565efSmrgthe most relevant parts of those release notes in text form.
7*10d565efSmrg
8*10d565efSmrgChanges in GCC for EGCS (that are not listed in the web release notes)
9*10d565efSmrg---------------------------------------------------------------------
10*10d565efSmrg
11*10d565efSmrgThe compiler now supports the "ADDRESSOF" optimization which can significantly
12*10d565efSmrgreduce the overhead for certain inline calls (and inline calls in general).
13*10d565efSmrg
14*10d565efSmrgCompile time for certain programs using large constant initializers has been
15*10d565efSmrgimproved (affects glibc significantly).
16*10d565efSmrg
17*10d565efSmrgVarious improvements have been made to better support cross compilations.  They
18*10d565efSmrgare still not easy, but they are improving.
19*10d565efSmrg
20*10d565efSmrgTarget-specific changes:
21*10d565efSmrg
22*10d565efSmrg    M32r: Major improvements to this port.
23*10d565efSmrg
24*10d565efSmrg    Arm: Includes Thumb and super interworking support.
25*10d565efSmrg
26*10d565efSmrgNoteworthy changes in GCC version 2.8.1
27*10d565efSmrg---------------------------------------
28*10d565efSmrg
29*10d565efSmrgNumerous bugs have been fixed and some minor performance
30*10d565efSmrgimprovements (compilation speed) have been made.
31*10d565efSmrg
32*10d565efSmrgNoteworthy changes in GCC version 2.8.0
33*10d565efSmrg---------------------------------------
34*10d565efSmrg
35*10d565efSmrgA major change in this release is the addition of a framework for
36*10d565efSmrgexception handling, currently used by C++.  Many internal changes and
37*10d565efSmrgoptimization improvements have been made.  These increase the
38*10d565efSmrgmaintainability and portability of GCC.  GCC now uses autoconf to
39*10d565efSmrgcompute many host parameters.
40*10d565efSmrg
41*10d565efSmrgThe following lists changes that add new features or targets.
42*10d565efSmrg
43*10d565efSmrgSee cp/NEWS for new features of C++ in this release.
44*10d565efSmrg
45*10d565efSmrgNew tools and features:
46*10d565efSmrg
47*10d565efSmrg    The Dwarf 2 debugging information format is supported on ELF systems, and
48*10d565efSmrg    is the default for -ggdb where available.  It can also be used for C++.
49*10d565efSmrg    The Dwarf version 1 debugging format is also permitted for C++, but
50*10d565efSmrg    does not work well.
51*10d565efSmrg
52*10d565efSmrg    gcov.c is provided for test coverage analysis and branch profiling
53*10d565efSmrg    analysis is also supported; see -fprofile-arcs, -ftest-coverage,
54*10d565efSmrg    and -fbranch-probabilities.
55*10d565efSmrg
56*10d565efSmrg    Support for the Checker memory checking tool.
57*10d565efSmrg
58*10d565efSmrg    New switch, -fstack-check, to check for stack overflow on systems that
59*10d565efSmrg    don't have such built into their ABI.
60*10d565efSmrg
61*10d565efSmrg    New switches, -Wundef and -Wno-undef to warn if an undefined identifier
62*10d565efSmrg    is evaluated in an #if directive.
63*10d565efSmrg
64*10d565efSmrg    Options -Wall and -Wimplicit now cause GCC to warn about implicit int
65*10d565efSmrg    in declarations (e.g. `register i;'), since the C Standard committee
66*10d565efSmrg    has decided to disallow this in the next revision of the standard;
67*10d565efSmrg    -Wimplicit-function-declarations and -Wimplicit-int are subsets of
68*10d565efSmrg    this.
69*10d565efSmrg
70*10d565efSmrg    Option -Wsign-compare causes GCC to warn about comparison of signed and
71*10d565efSmrg    unsigned values.
72*10d565efSmrg
73*10d565efSmrg    Add -dI option of cccp for cxref.
74*10d565efSmrg
75*10d565efSmrgNew features in configuration, installation and specs file handling:
76*10d565efSmrg
77*10d565efSmrg    New option --enable-c-cpplib to configure script.
78*10d565efSmrg
79*10d565efSmrg    You can use --with-cpu on the configure command to specify the default
80*10d565efSmrg    CPU that GCC should generate code for.
81*10d565efSmrg
82*10d565efSmrg    The -specs=file switch allows you to override default specs used in
83*10d565efSmrg    invoking programs like cc1, as, etc.
84*10d565efSmrg
85*10d565efSmrg    Allow including one specs file from another and renaming a specs
86*10d565efSmrg    variable.
87*10d565efSmrg
88*10d565efSmrg    You can now relocate all GCC files with a single environment variable
89*10d565efSmrg    or a registry entry under Windows 95 and Windows NT.
90*10d565efSmrg
91*10d565efSmrgChanges in Objective-C:
92*10d565efSmrg
93*10d565efSmrg    The Objective-C Runtime Library has been made thread-safe.
94*10d565efSmrg
95*10d565efSmrg    The Objective-C Runtime Library contains an interface for creating
96*10d565efSmrg    mutexes, condition mutexes, and threads; it requires a back-end
97*10d565efSmrg    implementation for the specific platform and/or thread package.
98*10d565efSmrg    Currently supported are DEC/OSF1, IRIX, Mach, OS/2, POSIX, PCThreads,
99*10d565efSmrg    Solaris, and Windows32.  The --enable-threads parameter can be used
100*10d565efSmrg    when configuring GCC to enable and select a thread back-end.
101*10d565efSmrg
102*10d565efSmrg    Objective-C is now configured as separate front-end language to GCC,
103*10d565efSmrg    making it more convenient to conditionally build it.
104*10d565efSmrg
105*10d565efSmrg    The internal structures of the Objective-C Runtime Library have
106*10d565efSmrg    changed sufficiently to warrant a new version number; now version 8.
107*10d565efSmrg    Programs compiled with an older version must be recompiled.
108*10d565efSmrg
109*10d565efSmrg    The Objective-C Runtime Library can be built as a DLL on Windows 95
110*10d565efSmrg    and Windows NT systems.
111*10d565efSmrg
112*10d565efSmrg    The Objective-C Runtime Library implements +load.
113*10d565efSmrg
114*10d565efSmrgThe following new targets are supported (see also list under each
115*10d565efSmrgindividual CPU below):
116*10d565efSmrg
117*10d565efSmrg    Embedded target m32r-elf.
118*10d565efSmrg    Embedded Hitachi Super-H using ELF.
119*10d565efSmrg    RTEMS real-time system on various CPU targets.
120*10d565efSmrg    ARC processor.
121*10d565efSmrg    NEC V850 processor.
122*10d565efSmrg    Matsushita MN10200 processor.
123*10d565efSmrg    Matsushita MN10300 processor.
124*10d565efSmrg    Sparc and PowerPC running on VxWorks.
125*10d565efSmrg    Support both glibc versions 1 and 2 on Linux-based GNU systems.
126*10d565efSmrg
127*10d565efSmrgNew features for DEC Alpha systems:
128*10d565efSmrg
129*10d565efSmrg    Allow detailed specification of IEEE fp support:
130*10d565efSmrg      -mieee, -mieee-with-inexact, and -mieee-conformant
131*10d565efSmrg      -mfp-trap-mode=xxx, -mfp-round-mode=xxx, -mtrap-precision=xxx
132*10d565efSmrg    -mcpu=xxx for CPU selection
133*10d565efSmrg    Support scheduling parameters for EV5.
134*10d565efSmrg    Add support for BWX, CIX, and MAX instruction set extensions.
135*10d565efSmrg    Support Linux-based GNU systems.
136*10d565efSmrg    Support VMS.
137*10d565efSmrg
138*10d565efSmrgAdditional supported processors and systems for MIPS targets:
139*10d565efSmrg
140*10d565efSmrg    MIPS4 instruction set.
141*10d565efSmrg    R4100, R4300 and R5000 processors.
142*10d565efSmrg    N32 and N64 ABI.
143*10d565efSmrg    IRIX 6.2.
144*10d565efSmrg    SNI SINIX.
145*10d565efSmrg
146*10d565efSmrgNew features for Intel x86 family:
147*10d565efSmrg
148*10d565efSmrg    Add scheduling parameters for Pentium and Pentium Pro.
149*10d565efSmrg    Support stabs on Solaris-x86.
150*10d565efSmrg    Intel x86 processors running the SCO OpenServer 5 family.
151*10d565efSmrg    Intel x86 processors running DG/UX.
152*10d565efSmrg    Intel x86 using Cygwin32 or Mingw32 on Windows 95 and Windows NT.
153*10d565efSmrg
154*10d565efSmrgNew features for Motorola 68k family:
155*10d565efSmrg
156*10d565efSmrg    Support for 68060 processor.
157*10d565efSmrg    More consistent switches to specify processor.
158*10d565efSmrg    Motorola 68k family running AUX.
159*10d565efSmrg    68040 running pSOS, ELF object files, DBX debugging.
160*10d565efSmrg    Coldfire variant of Motorola m68k family.
161*10d565efSmrg
162*10d565efSmrgNew features for the HP PA RISC:
163*10d565efSmrg
164*10d565efSmrg    -mspace and -mno-space
165*10d565efSmrg    -mlong-load-store and -mno-long-load-store
166*10d565efSmrg    -mbig-switch -mno-big-switch
167*10d565efSmrg
168*10d565efSmrg    GCC on the PA requires either gas-2.7 or the HP assembler; for best
169*10d565efSmrg    results using GAS is highly recommended.  GAS is required for -g and
170*10d565efSmrg    exception handling support.
171*10d565efSmrg
172*10d565efSmrgNew features for SPARC-based systems:
173*10d565efSmrg
174*10d565efSmrg    The ultrasparc cpu.
175*10d565efSmrg    The sparclet cpu, supporting only a.out file format.
176*10d565efSmrg    Sparc running SunOS 4 with the GNU assembler.
177*10d565efSmrg    Sparc running the Linux-based GNU system.
178*10d565efSmrg    Embedded Sparc processors running the ELF object file format.
179*10d565efSmrg    -mcpu=xxx
180*10d565efSmrg    -mtune=xxx
181*10d565efSmrg    -malign-loops=xxx
182*10d565efSmrg    -malign-jumps=xxx
183*10d565efSmrg    -malign-functions=xxx
184*10d565efSmrg    -mimpure-text and -mno-impure-text
185*10d565efSmrg
186*10d565efSmrg    Options -mno-v8 and -mno-sparclite are no longer supported on SPARC
187*10d565efSmrg    targets.  Options -mcypress, -mv8, -msupersparc, -msparclite, -mf930,
188*10d565efSmrg    and -mf934 are deprecated and will be deleted in GCC 2.9.  Use
189*10d565efSmrg    -mcpu=xxx instead.
190*10d565efSmrg
191*10d565efSmrgNew features for rs6000 and PowerPC systems:
192*10d565efSmrg
193*10d565efSmrg    Solaris 2.51 running on PowerPC's.
194*10d565efSmrg    The Linux-based GNU system running on PowerPC's.
195*10d565efSmrg    -mcpu=604e,602,603e,620,801,823,mpc505,821,860,power2
196*10d565efSmrg    -mtune=xxx
197*10d565efSmrg    -mrelocatable-lib, -mno-relocatable-lib
198*10d565efSmrg    -msim, -mmve, -memb
199*10d565efSmrg    -mupdate, -mno-update
200*10d565efSmrg    -mfused-madd, -mno-fused-madd
201*10d565efSmrg
202*10d565efSmrg    -mregnames
203*10d565efSmrg    -meabi
204*10d565efSmrg    -mcall-linux, -mcall-solaris, -mcall-sysv-eabi, -mcall-sysv-noeabi
205*10d565efSmrg    -msdata, -msdata=none, -msdata=default, -msdata=sysv, -msdata=eabi
206*10d565efSmrg    -memb, -msim, -mmvme
207*10d565efSmrg    -myellowknife, -mads
208*10d565efSmrg    wchar_t is now of type long as per the ABI, not unsigned short.
209*10d565efSmrg    -p/-pg support
210*10d565efSmrg    -mcpu=403 now implies -mstrict-align.
211*10d565efSmrg    Implement System V profiling.
212*10d565efSmrg
213*10d565efSmrg    Aix 4.1 GCC targets now default to -mcpu=common so that programs
214*10d565efSmrg    compiled can be moved between rs6000 and powerpc based systems.  A
215*10d565efSmrg    consequence of this is that -static won't work, and that some programs
216*10d565efSmrg    may be slightly slower.
217*10d565efSmrg
218*10d565efSmrg    You can select the default value to use for -mcpu=xxx on rs6000 and
219*10d565efSmrg    powerpc targets by using the --with-cpu=xxx option when configuring the
220*10d565efSmrg    compiler.  In addition, a new options, -mtune=xxx was added that
221*10d565efSmrg    selects the machine to schedule for but does not select the
222*10d565efSmrg    architecture level.
223*10d565efSmrg
224*10d565efSmrg    Directory names used for storing the multilib libraries on System V
225*10d565efSmrg    and embedded PowerPC systems have been shortened to work with commands
226*10d565efSmrg    like tar that have fixed limits on pathname size.
227*10d565efSmrg
228*10d565efSmrgNew features for the Hitachi H8/300(H):
229*10d565efSmrg
230*10d565efSmrg    -malign-300
231*10d565efSmrg    -ms (for the Hitachi H8/S processor)
232*10d565efSmrg    -mint32
233*10d565efSmrg
234*10d565efSmrgNew features for the ARM:
235*10d565efSmrg
236*10d565efSmrg    -march=xxx, -mtune=xxx, -mcpu=xxx
237*10d565efSmrg    Support interworking with Thumb code.
238*10d565efSmrg    ARM processor with a.out object format, COFF, or AOF assembler.
239*10d565efSmrg    ARM on "semi-hosted" platform.
240*10d565efSmrg    ARM running NetBSD.
241*10d565efSmrg    ARM running the Linux-based GNU system.
242*10d565efSmrg
243*10d565efSmrgNew feature for Solaris systems:
244*10d565efSmrg
245*10d565efSmrg    GCC installation no longer makes a copy of system include files,
246*10d565efSmrg    thus insulating GCC better from updates to the operating system.
247*10d565efSmrg
248*10d565efSmrg
249*10d565efSmrgNoteworthy changes in GCC version 2.7.2
250*10d565efSmrg---------------------------------------
251*10d565efSmrg
252*10d565efSmrgA few bugs have been fixed (most notably the generation of an
253*10d565efSmrginvalid assembler opcode on some RS/6000 systems).
254*10d565efSmrg
255*10d565efSmrgNoteworthy changes in GCC version 2.7.1
256*10d565efSmrg---------------------------------------
257*10d565efSmrg
258*10d565efSmrgThis release fixes numerous bugs (mostly minor) in GCC 2.7.0, but
259*10d565efSmrgalso contains a few new features, mostly related to specific targets.
260*10d565efSmrg
261*10d565efSmrgMajor changes have been made in code to support Windows NT.
262*10d565efSmrg
263*10d565efSmrgThe following new targets are supported:
264*10d565efSmrg
265*10d565efSmrg	2.9 BSD on PDP-11
266*10d565efSmrg	Linux on m68k
267*10d565efSmrg	HP/UX version 10 on HP PA RISC (treated like version 9)
268*10d565efSmrg	DEC Alpha running Windows NT
269*10d565efSmrg
270*10d565efSmrgWhen parsing C, GCC now recognizes C++ style `//' comments unless you
271*10d565efSmrgspecify `-ansi' or `-traditional'.
272*10d565efSmrg
273*10d565efSmrgThe PowerPC System V targets (powerpc-*-sysv, powerpc-*-eabi) now use the
274*10d565efSmrgcalling sequence specified in the System V Application Binary Interface
275*10d565efSmrgProcessor Supplement (PowerPC Processor ABI Supplement) rather than the calling
276*10d565efSmrgsequence used in GCC version 2.7.0.  That calling sequence was based on the AIX
277*10d565efSmrgcalling sequence without function descriptors.  To compile code for that older
278*10d565efSmrgcalling sequence, either configure the compiler for powerpc-*-eabiaix or use
279*10d565efSmrgthe -mcall-aix switch when compiling and linking.
280*10d565efSmrg
281*10d565efSmrgNoteworthy changes in GCC version 2.7.0
282*10d565efSmrg---------------------------------------
283*10d565efSmrg
284*10d565efSmrgGCC now works better on systems that use ".obj" and ".exe" instead of
285*10d565efSmrg".o" and no extension.  This involved changes to the driver program,
286*10d565efSmrggcc.c, to convert ".o" names to ".obj" and to GCC's Makefile to use
287*10d565efSmrg".obj" and ".exe" in filenames that are not targets.  In order to
288*10d565efSmrgbuild GCC on such systems, you may need versions of GNU make and/or
289*10d565efSmrgcompatible shells.  At this point, this support is preliminary.
290*10d565efSmrg
291*10d565efSmrgObject file extensions of ".obj" and executable file extensions of
292*10d565efSmrg".exe" are allowed when using appropriate version of GNU Make.
293*10d565efSmrg
294*10d565efSmrgNumerous enhancements were made to the __attribute__ facility including
295*10d565efSmrgmore attributes and more places that support it.  We now support the
296*10d565efSmrg"packed", "nocommon", "noreturn", "volatile", "const", "unused",
297*10d565efSmrg"transparent_union", "constructor", "destructor", "mode", "section",
298*10d565efSmrg"align", "format", "weak", and "alias" attributes.  Each of these
299*10d565efSmrgnames may also be specified with added underscores, e.g., "__packed__".
300*10d565efSmrg__attribute__ may now be applied to parameter definitions, function
301*10d565efSmrgdefinitions, and structure, enum, and union definitions.
302*10d565efSmrg
303*10d565efSmrgGCC now supports returning more structures in registers, as specified by
304*10d565efSmrgmany calling sequences (ABIs), such as on the HP PA RISC.
305*10d565efSmrg
306*10d565efSmrgA new option '-fpack-struct' was added to automatically pack all structure
307*10d565efSmrgmembers together without holes.
308*10d565efSmrg
309*10d565efSmrgThere is a new library (cpplib) and program (cppmain) that at some
310*10d565efSmrgpoint will replace cpp (aka cccp).  To use cppmain as cpp now, pass
311*10d565efSmrgthe option CCCP=cppmain to make.  The library is already used by the
312*10d565efSmrgfix-header program, which should speed up the fixproto script.
313*10d565efSmrg
314*10d565efSmrgNew options for supported targets:
315*10d565efSmrg
316*10d565efSmrg    GNU on many targets.
317*10d565efSmrg    NetBSD on MIPS, m68k, VAX, and x86.
318*10d565efSmrg    LynxOS on x86, m68k, Sparc, and RS/6000.
319*10d565efSmrg    VxWorks on many targets.
320*10d565efSmrg
321*10d565efSmrg    Windows/NT on x86 architecture.  Initial support for Windows/NT on Alpha
322*10d565efSmrg    (not fully working).
323*10d565efSmrg
324*10d565efSmrg    Many embedded targets, specifically UDI on a29k, aout, coff, elf,
325*10d565efSmrg    and vsta "operating systems" on m68k, m88k, mips, sparc, and x86.
326*10d565efSmrg
327*10d565efSmrgAdditional support for x86 (i386, i486, and Pentium):
328*10d565efSmrg
329*10d565efSmrg    Work with old and new linkers for Linux-based GNU systems,
330*10d565efSmrg	supporting both a.out and ELF.
331*10d565efSmrg    FreeBSD on x86.
332*10d565efSmrg    Stdcall convention.
333*10d565efSmrg    -malign-double, -mregparm=, -malign-loops= and -malign-jumps=  switches.
334*10d565efSmrg    On ISC systems, support -Xp like -posix.
335*10d565efSmrg
336*10d565efSmrgAdditions for RS/6000:
337*10d565efSmrg
338*10d565efSmrg    Instruction scheduling information for PowerPC 403.
339*10d565efSmrg    AIX 4.1 on PowerPC.
340*10d565efSmrg    -mstring and -mno-string.
341*10d565efSmrg    -msoft-float and floating-point emulation included.
342*10d565efSmrg    Preliminary support for PowerPC System V.4 with or without the GNU as.
343*10d565efSmrg    Preliminary support for EABI.
344*10d565efSmrg    Preliminary support for 64-bit systems.
345*10d565efSmrg    Both big and little endian systems.
346*10d565efSmrg
347*10d565efSmrgNew features for MIPS-based systems:
348*10d565efSmrg
349*10d565efSmrg    r4650.
350*10d565efSmrg    mips4 and R8000.
351*10d565efSmrg    Irix 6.0.
352*10d565efSmrg    64-bit ABI.
353*10d565efSmrg    Allow dollar signs in labels on SGI/Irix 5.x.
354*10d565efSmrg
355*10d565efSmrgNew support for HP PA RISC:
356*10d565efSmrg
357*10d565efSmrg    Generation of PIC (requires binutils-2.5.2.u6 or later).
358*10d565efSmrg    HP-UX version 9 on HP PA RISC (dynamically links even with -g).
359*10d565efSmrg    Processor variants for HP PA RISC: 700, 7100, and 7100LC.
360*10d565efSmrg    Automatic generation of long calls when needed.
361*10d565efSmrg    -mfast-indirect-calls for kernels and static binaries.
362*10d565efSmrg
363*10d565efSmrg    The called routine now copies arguments passed by invisible reference,
364*10d565efSmrg    as required by the calling standard.
365*10d565efSmrg
366*10d565efSmrgOther new miscellaneous target-specific support:
367*10d565efSmrg
368*10d565efSmrg    -mno-multm on a29k.
369*10d565efSmrg    -mold-align for i960.
370*10d565efSmrg    Configuration for "semi-hosted" ARM.
371*10d565efSmrg    -momit-leaf-frame-pointer for M88k.
372*10d565efSmrg    SH3 variant of Hitachi Super-H and support both big and little endian.
373*10d565efSmrg
374*10d565efSmrgChanges to Objective-C:
375*10d565efSmrg
376*10d565efSmrg    Bare-bones implementation of NXConstantString has been added,
377*10d565efSmrg    which is invoked by the @"string" directive.
378*10d565efSmrg
379*10d565efSmrg    Class * has been changed to Class to conform to the NextSTEP and
380*10d565efSmrg    OpenStep runtime.
381*10d565efSmrg
382*10d565efSmrg    Enhancements to make dynamic loading easier.
383*10d565efSmrg
384*10d565efSmrg    The module version number has been updated to Version 7, thus existing
385*10d565efSmrg    code will need to be recompiled to use the current run-time library.
386*10d565efSmrg
387*10d565efSmrgGCC now supports the ISO Normative Addendum 1 to the C Standard.
388*10d565efSmrgAs a result:
389*10d565efSmrg
390*10d565efSmrg    The header <iso646.h> defines macros for C programs written
391*10d565efSmrg    in national variants of ISO 646.
392*10d565efSmrg
393*10d565efSmrg    The following digraph tokens are supported:
394*10d565efSmrg	<:	:>	<%	%>	%:	%:%:
395*10d565efSmrg    These behave like the following, respectively:
396*10d565efSmrg	[	]	{	}	#	##
397*10d565efSmrg
398*10d565efSmrg    Digraph tokens are supported unless you specify the `-traditional'
399*10d565efSmrg    option; you do not need to specify `-ansi' or `-trigraphs'.  Except
400*10d565efSmrg    for contrived and unlikely examples involving preprocessor
401*10d565efSmrg    stringizing, digraph interpretation doesn't change the meaning of
402*10d565efSmrg    programs; this is unlike trigraph interpretation, which changes the
403*10d565efSmrg    meanings of relatively common strings.
404*10d565efSmrg
405*10d565efSmrg    The macro __STDC_VERSION__ has the value 199409L.
406*10d565efSmrg
407*10d565efSmrg  As usual, for full conformance to the standard, you also need a
408*10d565efSmrg  C library that conforms.
409*10d565efSmrg
410*10d565efSmrgThe following lists changes that have been made to g++.  If some
411*10d565efSmrgfeatures mentioned below sound unfamiliar, you will probably want to
412*10d565efSmrglook at the recently-released public review copy of the C++ Working
413*10d565efSmrgPaper.  For PostScript and PDF (Adobe Acrobat) versions, see the
414*10d565efSmrgarchive at ftp://research.att.com/dist/stdc++/WP.  For HTML and ASCII
415*10d565efSmrgversions, see ftp://ftp.cygnus.com/pub/g++.  On the web, see
416*10d565efSmrghttp://www.cygnus.com/~mrs/wp-draft.
417*10d565efSmrg
418*10d565efSmrgThe scope of variables declared in the for-init-statement has been changed
419*10d565efSmrgto conform to http://www.cygnus.com/~mrs/wp-draft/stmt.html#stmt.for; as a
420*10d565efSmrgresult, packages such as groff 1.09 will not compile unless you specify the
421*10d565efSmrg-fno-for-scope flag.  PLEASE DO NOT REPORT THIS AS A BUG; this is a change
422*10d565efSmrgmandated by the C++ standardization committee.
423*10d565efSmrg
424*10d565efSmrgBinary incompatibilities:
425*10d565efSmrg
426*10d565efSmrg    The builtin 'bool' type is now the size of a machine word on RISC targets,
427*10d565efSmrg    for code efficiency; it remains one byte long on CISC targets.
428*10d565efSmrg
429*10d565efSmrg    Code that does not use #pragma interface/implementation will most
430*10d565efSmrg    likely shrink dramatically, as g++ now only emits the vtable for a
431*10d565efSmrg    class in the translation unit where its first non-inline, non-abstract
432*10d565efSmrg    virtual function is defined.
433*10d565efSmrg
434*10d565efSmrg    Classes that do not define the copy constructor will sometimes be
435*10d565efSmrg    passed and returned in registers.  This may illuminate latent bugs in
436*10d565efSmrg    your code.
437*10d565efSmrg
438*10d565efSmrgSupport for automatic template instantiation has *NOT* been added, due
439*10d565efSmrgto a disagreement over design philosophies.
440*10d565efSmrg
441*10d565efSmrgSupport for exception handling has been improved; more targets are now
442*10d565efSmrgsupported, and throws will use the RTTI mechanism to match against the
443*10d565efSmrgcatch parameter type.  Optimization is NOT SUPPORTED with
444*10d565efSmrg-fhandle-exceptions; no need to report this as a bug.
445*10d565efSmrg
446*10d565efSmrgSupport for Run-Time Type Identification has been added with -frtti.
447*10d565efSmrgThis support is still in alpha; one major restriction is that any file
448*10d565efSmrgcompiled with -frtti must include <typeinfo.h>.
449*10d565efSmrg
450*10d565efSmrgPreliminary support for namespaces has been added.  This support is far
451*10d565efSmrgfrom complete, and probably not useful.
452*10d565efSmrg
453*10d565efSmrgSynthesis of compiler-generated constructors, destructors and
454*10d565efSmrgassignment operators is now deferred until the functions are used.
455*10d565efSmrg
456*10d565efSmrgThe parsing of expressions such as `a ? b : c = 1' has changed from
457*10d565efSmrg`(a ? b : c) = 1' to `a : b ? (c = 1)'.
458*10d565efSmrg
459*10d565efSmrgThe code generated for testing conditions, especially those using ||
460*10d565efSmrgand &&, is now more efficient.
461*10d565efSmrg
462*10d565efSmrgThe operator keywords and, and_eq, bitand, bitor, compl, not, not_eq,
463*10d565efSmrgor, or_eq, xor and xor_eq are now supported.  Use -ansi or
464*10d565efSmrg-foperator-names to enable them.
465*10d565efSmrg
466*10d565efSmrgThe 'explicit' keyword is now supported.  'explicit' is used to mark
467*10d565efSmrgconstructors and type conversion operators that should not be used
468*10d565efSmrgimplicitly.
469*10d565efSmrg
470*10d565efSmrgg++ now accepts the typename keyword, though it currently has no
471*10d565efSmrgsemantics; it can be a no-op in the current template implementation.
472*10d565efSmrgYou may want to start using it in your code, however, since the
473*10d565efSmrgpending rewrite of the template implementation to compile STL properly
474*10d565efSmrg(perhaps for 2.8.0, perhaps not) will require you to use it as
475*10d565efSmrgindicated by the current draft.
476*10d565efSmrg
477*10d565efSmrgHandling of user-defined type conversion has been overhauled so that
478*10d565efSmrgtype conversion operators are now found and used properly in
479*10d565efSmrgexpressions and function calls.
480*10d565efSmrg
481*10d565efSmrg-fno-strict-prototype now only applies to function declarations with
482*10d565efSmrg"C" linkage.
483*10d565efSmrg
484*10d565efSmrgg++ now warns about 'if (x=0)' with -Wparentheses or -Wall.
485*10d565efSmrg
486*10d565efSmrg#pragma weak and #pragma pack are supported on System V R4 targets, as
487*10d565efSmrgare various other target-specific #pragmas supported by gcc.
488*10d565efSmrg
489*10d565efSmrgnew and delete of const types is now allowed (with no additional
490*10d565efSmrgsemantics).
491*10d565efSmrg
492*10d565efSmrgExplicit instantiation of template methods is now supported.  Also,
493*10d565efSmrg'inline template class foo<int>;' can be used to emit only the vtable
494*10d565efSmrgfor a template class.
495*10d565efSmrg
496*10d565efSmrgWith -fcheck-new, g++ will check the return value of all calls to
497*10d565efSmrgoperator new, and not attempt to modify a returned null pointer.
498*10d565efSmrg
499*10d565efSmrgThe template instantiation code now handles more conversions when
500*10d565efSmrgpassing to a parameter that does not depend on template arguments.
501*10d565efSmrgThis means that code like 'string s; cout << s;' now works.
502*10d565efSmrg
503*10d565efSmrgInvalid jumps in a switch statement past declarations that require
504*10d565efSmrginitializations are now caught.
505*10d565efSmrg
506*10d565efSmrgFunctions declared 'extern inline' now have the same linkage semantics
507*10d565efSmrgas inline member functions.  On supported targets, where previously
508*10d565efSmrgthese functions (and vtables, and template instantiations) would have
509*10d565efSmrgbeen defined statically, they will now be defined as weak symbols so
510*10d565efSmrgthat only one out-of-line definition is used.
511*10d565efSmrg
512*10d565efSmrgcollect2 now demangles linker output, and c++filt has become part of
513*10d565efSmrgthe gcc distribution.
514*10d565efSmrg
515*10d565efSmrgNoteworthy changes in GCC version 2.6.3:
516*10d565efSmrg
517*10d565efSmrgA few more bugs have been fixed.
518*10d565efSmrg
519*10d565efSmrgNoteworthy changes in GCC version 2.6.2:
520*10d565efSmrg
521*10d565efSmrgA few bugs have been fixed.
522*10d565efSmrg
523*10d565efSmrgNames of attributes can now be preceded and followed by double underscores.
524*10d565efSmrg
525*10d565efSmrgNoteworthy changes in GCC version 2.6.1:
526*10d565efSmrg
527*10d565efSmrgNumerous (mostly minor) bugs have been fixed.
528*10d565efSmrg
529*10d565efSmrgThe following new configurations are supported:
530*10d565efSmrg
531*10d565efSmrg	GNU on x86 (instead of treating it like MACH)
532*10d565efSmrg	NetBSD on Sparc and Motorola 68k
533*10d565efSmrg	AIX 4.1 on RS/6000 and PowerPC systems
534*10d565efSmrg	Sequent DYNIX/ptx 1.x and 2.x.
535*10d565efSmrg	Both COFF and ELF configurations on AViiON without using /bin/gcc
536*10d565efSmrg	Windows/NT on x86 architecture; preliminary
537*10d565efSmrg	AT&T DSP1610 digital signal processor chips
538*10d565efSmrg	i960 systems on bare boards using COFF
539*10d565efSmrg	PDP11; target only and not extensively tested
540*10d565efSmrg
541*10d565efSmrgThe -pg option is now supported for Alpha under OSF/1 V3.0 or later.
542*10d565efSmrg
543*10d565efSmrgFiles with an extension of ".c++" are treated as C++ code.
544*10d565efSmrg
545*10d565efSmrgThe -Xlinker and -Wl arguments are now passed to the linker in the
546*10d565efSmrgposition they were specified on the command line.  This makes it
547*10d565efSmrgpossible, for example, to pass flags to the linker about specific
548*10d565efSmrgobject files.
549*10d565efSmrg
550*10d565efSmrgThe use of positional arguments to the configure script is no longer
551*10d565efSmrgrecommended.  Use --target= to specify the target; see the GCC manual.
552*10d565efSmrg
553*10d565efSmrgThe 386 now supports two new switches: -mreg-alloc=<string> changes
554*10d565efSmrgthe default register allocation order used by the compiler, and
555*10d565efSmrg-mno-wide-multiply disables the use of the mul/imul instructions that
556*10d565efSmrgproduce 64 bit results in EAX:EDX from 32 bit operands to do long long
557*10d565efSmrgmultiplies and 32-bit division by constants.
558*10d565efSmrg
559*10d565efSmrgNoteworthy changes in GCC version 2.6.0:
560*10d565efSmrg
561*10d565efSmrgNumerous bugs have been fixed, in the C and C++ front-ends, as
562*10d565efSmrgwell as in the common compiler code.
563*10d565efSmrg
564*10d565efSmrgThis release includes the C, Objective-C, and C++ compilers.  However,
565*10d565efSmrgwe have moved the files for the C++ compiler (G++) files to a
566*10d565efSmrgsubdirectory, cp.  Subsequent releases of GCC will split these files
567*10d565efSmrgto a separate TAR file.
568*10d565efSmrg
569*10d565efSmrgThe G++ team has been tracking the development of the ANSI standard for C++.
570*10d565efSmrgHere are some new features added from the latest working paper:
571*10d565efSmrg
572*10d565efSmrg	* built-in boolean type 'bool', with constants 'true' and 'false'.
573*10d565efSmrg	* array new and delete (operator new [] and delete []).
574*10d565efSmrg	* WP-conforming lifetime of temporaries.
575*10d565efSmrg	* explicit instantiation of templates (template class A<int>;),
576*10d565efSmrg          along with an option (-fno-implicit-templates) to disable emission
577*10d565efSmrg          of implicitly instantiated templates, obsoletes -fexternal-templates.
578*10d565efSmrg	* static member constants (static const int foo = 4; within the
579*10d565efSmrg          class declaration).
580*10d565efSmrg
581*10d565efSmrgMany error messages have been improved to tell the user more about the
582*10d565efSmrgproblem.  Conformance checking with -pedantic-errors has been
583*10d565efSmrgimproved.  G++ now compiles Fresco.
584*10d565efSmrg
585*10d565efSmrgThere is now an experimental implementation of virtual functions using
586*10d565efSmrgthunks instead of Cfront-style vtables, enabled with -fvtable-thunks.
587*10d565efSmrgThis option also enables a heuristic which causes the compiler to only
588*10d565efSmrgemit the vtable in the translation unit where its first non-inline
589*10d565efSmrgvirtual function is defined; using this option and
590*10d565efSmrg-fno-implicit-templates, users should be able to avoid #pragma
591*10d565efSmrginterface/implementation altogether.
592*10d565efSmrg
593*10d565efSmrgSignatures have been added as a GNU C++ extension.  Using the option
594*10d565efSmrg-fhandle-signatures, users are able to turn on recognition of
595*10d565efSmrgsignatures.  A short introduction on signatures is in the section
596*10d565efSmrg`Extension to the C++ Language' in the manual.
597*10d565efSmrg
598*10d565efSmrgThe `g++' program is now a C program, rather than a shell script.
599*10d565efSmrg
600*10d565efSmrgLots and lots and lots of bugs fixes, in nested types, access control,
601*10d565efSmrgpointers to member functions, the parser, templates, overload
602*10d565efSmrgresolution, etc, etc.
603*10d565efSmrg
604*10d565efSmrgThere have been two major enhancements to the Objective-C compiler:
605*10d565efSmrg
606*10d565efSmrg1) Added portability.  It now runs on Alpha, and some problems with
607*10d565efSmrg   message forwarding have been addressed on other platforms.
608*10d565efSmrg
609*10d565efSmrg2) Selectors have been redefined to be pointers to structs like:
610*10d565efSmrg   { void *sel_id, char *sel_types }, where the sel_id is the unique
611*10d565efSmrg   identifier, the selector itself is no longer unique.
612*10d565efSmrg
613*10d565efSmrg   Programmers should use the new function sel_eq to test selector
614*10d565efSmrg   equivalence.
615*10d565efSmrg
616*10d565efSmrgThe following major changes have been made to the base compiler and
617*10d565efSmrgmachine-specific files.
618*10d565efSmrg
619*10d565efSmrg- The MIL-STD-1750A is a new port, but still preliminary.
620*10d565efSmrg
621*10d565efSmrg- The h8/300h is now supported; both the h8/300 and h8/300h ports come
622*10d565efSmrg  with 32 bit IEEE 754 software floating point support.
623*10d565efSmrg
624*10d565efSmrg- The 64-bit Sparc (v9) and 64-bit MIPS chips are supported.
625*10d565efSmrg
626*10d565efSmrg- NetBSD is supported on m68k, Intel x86, and pc523 systems and FreeBSD
627*10d565efSmrg  on x86.
628*10d565efSmrg
629*10d565efSmrg- COFF is supported on x86, m68k, and Sparc systems running LynxOS.
630*10d565efSmrg
631*10d565efSmrg- 68K systems from Bull and Concurrent are supported and System V
632*10d565efSmrg  Release 4 is supported on the Atari.
633*10d565efSmrg
634*10d565efSmrg- GCC supports GAS on the Motorola 3300 (sysV68) and debugging
635*10d565efSmrg  (assuming GAS) on the Plexus 68K system.  (However, GAS does not yet
636*10d565efSmrg  work on those systems).
637*10d565efSmrg
638*10d565efSmrg- System V Release 4 is supported on MIPS (Tandem).
639*10d565efSmrg
640*10d565efSmrg- For DG/UX, an ELF configuration is now supported, and both the ELF
641*10d565efSmrg  and BCS configurations support ELF and COFF object file formats.
642*10d565efSmrg
643*10d565efSmrg- OSF/1 V2.0 is supported on Alpha.
644*10d565efSmrg
645*10d565efSmrg- Function profiling is also supported on Alpha.
646*10d565efSmrg
647*10d565efSmrg- GAS and GDB is supported for Irix 5 (MIPS).
648*10d565efSmrg
649*10d565efSmrg- "common mode" (code that will run on both POWER and PowerPC
650*10d565efSmrg  architectures) is now supported for the RS/6000 family; the
651*10d565efSmrg  compiler knows about more PPC chips.
652*10d565efSmrg
653*10d565efSmrg- Both NeXTStep 2.1 and 3 are supported on 68k-based architectures.
654*10d565efSmrg
655*10d565efSmrg- On the AMD 29k, the -msoft-float is now supported, as well as
656*10d565efSmrg  -mno-sum-in-toc for RS/6000, -mapp-regs and -mflat for Sparc, and
657*10d565efSmrg  -membedded-pic for MIPS.
658*10d565efSmrg
659*10d565efSmrg- GCC can now convert division by integer constants into the equivalent
660*10d565efSmrg  multiplication and shift operations when that is faster than the
661*10d565efSmrg  division.
662*10d565efSmrg
663*10d565efSmrg- Two new warning options, -Wbad-function-cast and
664*10d565efSmrg  -Wmissing-declarations have been added.
665*10d565efSmrg
666*10d565efSmrg- Configurations may now add machine-specific __attribute__ options on
667*10d565efSmrg  type; many machines support the `section' attribute.
668*10d565efSmrg
669*10d565efSmrg- The -ffast-math flag permits some optimization that violate strict
670*10d565efSmrg  IEEE rules, such as converting X * 0.0 to 0.0.
671*10d565efSmrg
672*10d565efSmrgNoteworthy changes in GCC version 2.5.8:
673*10d565efSmrg
674*10d565efSmrgThis release only fixes a few serious bugs.  These include fixes for a
675*10d565efSmrgbug that prevented most programs from working on the RS/6000, a bug
676*10d565efSmrgthat caused invalid assembler code for programs with a `switch'
677*10d565efSmrgstatement on the NS32K, a G++ problem that caused undefined names in
678*10d565efSmrgsome configurations, and several less serious problems, some of which
679*10d565efSmrgcan affect most configuration.
680*10d565efSmrg
681*10d565efSmrgNoteworthy change in GCC version 2.5.7:
682*10d565efSmrg
683*10d565efSmrgThis release only fixes a few bugs, one of which was causing bootstrap
684*10d565efSmrgcompare errors on some systems.
685*10d565efSmrg
686*10d565efSmrgNoteworthy change in GCC version 2.5.6:
687*10d565efSmrg
688*10d565efSmrgA few backend bugs have been fixed, some of which only occur on one
689*10d565efSmrgmachine.
690*10d565efSmrg
691*10d565efSmrgThe C++ compiler in 2.5.6 includes:
692*10d565efSmrg
693*10d565efSmrg * fixes for some common crashes
694*10d565efSmrg * correct handling of nested types that are referenced as `foo::bar'
695*10d565efSmrg * spurious warnings about friends being declared static and never
696*10d565efSmrg   defined should no longer appear
697*10d565efSmrg * enums that are local to a method in a class, or a class that's
698*10d565efSmrg   local to a function, are now handled correctly.  For example:
699*10d565efSmrg       class foo { void bar () { enum { x, y } E; x; } };
700*10d565efSmrg       void bar () { class foo { enum { x, y } E; E baz; }; }
701*10d565efSmrg
702*10d565efSmrgNoteworthy change in GCC version 2.5.5:
703*10d565efSmrg
704*10d565efSmrgA large number of C++ bugs have been fixed.
705*10d565efSmrg
706*10d565efSmrgThe fixproto script adds prototypes conditionally on __cplusplus.
707*10d565efSmrg
708*10d565efSmrgNoteworthy change in GCC version 2.5.4:
709*10d565efSmrg
710*10d565efSmrgA bug fix in passing of structure arguments for the HP-PA architecture
711*10d565efSmrgmakes code compiled with GCC 2.5.4 incompatible with code compiled
712*10d565efSmrgwith earlier versions (if it passes struct arguments of 33 to 64 bits,
713*10d565efSmrginterspersed with other types of arguments).
714*10d565efSmrg
715*10d565efSmrgNoteworthy change in gcc version 2.5.3:
716*10d565efSmrg
717*10d565efSmrgThe method of "mangling" C++ function names has been changed.  So you
718*10d565efSmrgmust recompile all C++ programs completely when you start using GCC
719*10d565efSmrg2.5.  Also, GCC 2.5 requires libg++ version 2.5.  Earlier libg++
720*10d565efSmrgversions won't work with GCC 2.5.  (This is generally true--GCC
721*10d565efSmrgversion M.N requires libg++ version M.N.)
722*10d565efSmrg
723*10d565efSmrgNoteworthy GCC changes in version 2.5:
724*10d565efSmrg
725*10d565efSmrg* There is now support for the IBM 370 architecture as a target.
726*10d565efSmrgCurrently the only operating system supported is MVS; GCC does not run
727*10d565efSmrgon MVS, so you must produce .s files using GCC as a cross compiler,
728*10d565efSmrgthen transfer them to MVS to assemble them.  This port is not reliable
729*10d565efSmrgyet.
730*10d565efSmrg
731*10d565efSmrg* The Power PC is now supported.
732*10d565efSmrg
733*10d565efSmrg* The i860-based Paragon machine is now supported.
734*10d565efSmrg
735*10d565efSmrg* The Hitachi 3050 (an HP-PA machine) is now supported.
736*10d565efSmrg
737*10d565efSmrg* The variable __GNUC_MINOR__ holds the minor version number of GCC, as
738*10d565efSmrgan integer.  For version 2.5.X, the value is 5.
739*10d565efSmrg
740*10d565efSmrg* In C, initializers for static and global variables are now processed
741*10d565efSmrgan element at a time, so that they don't need a lot of storage.
742*10d565efSmrg
743*10d565efSmrg* The C syntax for specifying which structure field comes next in an
744*10d565efSmrginitializer is now `.FIELDNAME='.  The corresponding syntax for
745*10d565efSmrgarray initializers is now `[INDEX]='.  For example,
746*10d565efSmrg
747*10d565efSmrg  char whitespace[256]
748*10d565efSmrg    = { [' '] = 1, ['\t'] = 1, ['\n'] = 1 };
749*10d565efSmrg
750*10d565efSmrgThis was changed to accord with the syntax proposed by the Numerical
751*10d565efSmrgC Extensions Group (NCEG).
752*10d565efSmrg
753*10d565efSmrg* Complex numbers are now supported in C.  Use the keyword __complex__
754*10d565efSmrgto declare complex data types.  See the manual for details.
755*10d565efSmrg
756*10d565efSmrg* GCC now supports `long double' meaningfully on the Sparc (128-bit
757*10d565efSmrgfloating point) and on the 386 (96-bit floating point).  The Sparc
758*10d565efSmrgsupport is enabled on Solaris 2.x because earlier system versions
759*10d565efSmrg(SunOS 4) have bugs in the emulation.
760*10d565efSmrg
761*10d565efSmrg* All targets now have assertions for cpu, machine and system.  So you
762*10d565efSmrgcan now use assertions to distinguish among all supported targets.
763*10d565efSmrg
764*10d565efSmrg* Nested functions in C may now be inline.  Just declare them inline
765*10d565efSmrgin the usual way.
766*10d565efSmrg
767*10d565efSmrg* Packed structure members are now supported fully; it should be possible
768*10d565efSmrgto access them on any supported target, no matter how little alignment
769*10d565efSmrgthey have.
770*10d565efSmrg
771*10d565efSmrg* To declare that a function does not return, you must now write
772*10d565efSmrgsomething like this (works only in 2.5):
773*10d565efSmrg
774*10d565efSmrg    void fatal () __attribute__ ((noreturn));
775*10d565efSmrg
776*10d565efSmrgor like this (works in older versions too):
777*10d565efSmrg
778*10d565efSmrg    typedef void voidfn ();
779*10d565efSmrg
780*10d565efSmrg    volatile voidfn fatal;
781*10d565efSmrg
782*10d565efSmrgIt used to be possible to do so by writing this:
783*10d565efSmrg
784*10d565efSmrg    volatile void fatal ();
785*10d565efSmrg
786*10d565efSmrgbut it turns out that ANSI C requires that to mean something
787*10d565efSmrgelse (which is useless).
788*10d565efSmrg
789*10d565efSmrgLikewise, to declare that a function is side-effect-free
790*10d565efSmrgso that calls may be deleted or combined, write
791*10d565efSmrgsomething like this (works only in 2.5):
792*10d565efSmrg
793*10d565efSmrg    int computation () __attribute__ ((const));
794*10d565efSmrg
795*10d565efSmrgor like this (works in older versions too):
796*10d565efSmrg
797*10d565efSmrg    typedef int intfn ();
798*10d565efSmrg
799*10d565efSmrg    const intfn computation;
800*10d565efSmrg
801*10d565efSmrg* The new option -iwithprefixbefore specifies a directory to add to
802*10d565efSmrgthe search path for include files in the same position where -I would
803*10d565efSmrgput it, but uses the specified prefix just like -iwithprefix.
804*10d565efSmrg
805*10d565efSmrg* Basic block profiling has been enhanced to record the function the
806*10d565efSmrgbasic block comes from, and if the module was compiled for debugging,
807*10d565efSmrgthe line number and filename.  A default version of the basic block
808*10d565efSmrgsupport module has been added to libgcc2 that appends the basic block
809*10d565efSmrginformation to a text file 'bb.out'.  Machine descriptions can now
810*10d565efSmrgoverride the basic block support module in the target macro file.
811*10d565efSmrg
812*10d565efSmrgNew features in g++:
813*10d565efSmrg
814*10d565efSmrg* The new flag `-fansi-overloading' for C++.  Use a newly implemented
815*10d565efSmrgscheme of argument matching for C++.  It makes g++ more accurately
816*10d565efSmrgobey the rules set down in Chapter 13 of the Annotated C++ Reference
817*10d565efSmrgManual (the ARM).  This option will be turned on by default in a
818*10d565efSmrgfuture release.
819*10d565efSmrg
820*10d565efSmrg* The -finline-debug flag is now gone (it was never really used by the
821*10d565efSmrg  compiler).
822*10d565efSmrg
823*10d565efSmrg* Recognizing the syntax for pointers to members, e.g., "foo::*bar", has been
824*10d565efSmrg  dramatically improved.  You should not get any syntax errors or incorrect
825*10d565efSmrg  runtime results while using pointers to members correctly; if you do, it's
826*10d565efSmrg  a definite bug.
827*10d565efSmrg
828*10d565efSmrg* Forward declaration of an enum is now flagged as an error.
829*10d565efSmrg
830*10d565efSmrg* Class-local typedefs are now working properly.
831*10d565efSmrg
832*10d565efSmrg* Nested class support has been significantly improved.  The compiler
833*10d565efSmrg  will now (in theory) support up to 240 nested classes before hitting
834*10d565efSmrg  other system limits (like memory size).
835*10d565efSmrg
836*10d565efSmrg* There is a new C version of the `g++' driver, to replace the old
837*10d565efSmrg  shell script.  This should significantly improve the performance of
838*10d565efSmrg  executing g++ on a system where a user's PATH environment variable
839*10d565efSmrg  references many NFS-mounted filesystems.  This driver also works
840*10d565efSmrg  under MS-DOS and OS/2.
841*10d565efSmrg
842*10d565efSmrg* The ANSI committee working on the C++ standard has adopted a new
843*10d565efSmrg  keyword `mutable'.  This will allow you to make a specific member be
844*10d565efSmrg  modifiable in an otherwise const class.
845*10d565efSmrg
846*10d565efSmrgNoteworthy GCC changes in version 2.4.4:
847*10d565efSmrg
848*10d565efSmrg  A crash building g++ on various hosts (including m68k) has been
849*10d565efSmrg  fixed.  Also the g++ compiler no longer reports incorrect
850*10d565efSmrg  ambiguities in some situations where they do not exist, and
851*10d565efSmrg  const template member functions are now being found properly.
852*10d565efSmrg
853*10d565efSmrgNoteworthy GCC changes in version 2.4:
854*10d565efSmrg
855*10d565efSmrg* On each target, the default is now to return short structures
856*10d565efSmrgcompatibly with the "usual" compiler on that target.
857*10d565efSmrg
858*10d565efSmrgFor most targets, this means the default is to return all structures
859*10d565efSmrgin memory, like long structures, in whatever way is used on that
860*10d565efSmrgtarget.  Use -freg-struct-return to enable returning short structures
861*10d565efSmrg(and unions) in registers.
862*10d565efSmrg
863*10d565efSmrgThis change means that newly compiled binaries are incompatible with
864*10d565efSmrgbinaries compiled with previous versions of GCC.
865*10d565efSmrg
866*10d565efSmrgOn some targets, GCC is itself the usual compiler.  On these targets,
867*10d565efSmrgthe default way to return short structures is still in registers.
868*10d565efSmrgUse -fpcc-struct-return to tell GCC to return them in memory.
869*10d565efSmrg
870*10d565efSmrg* There is now a floating point emulator which can imitate the way all
871*10d565efSmrgsupported target machines do floating point arithmetic.
872*10d565efSmrg
873*10d565efSmrgThis makes it possible to have cross compilation to and from the VAX,
874*10d565efSmrgand between machines of different endianness.  However, this works
875*10d565efSmrgonly when the target machine description is updated to use the new
876*10d565efSmrgfacilities, and not all have been updated.
877*10d565efSmrg
878*10d565efSmrgThis also makes possible support for longer floating point types.
879*10d565efSmrgGCC 2.4 supports extended format on the 68K if you use `long double',
880*10d565efSmrgfor targets that have a 68881.  (When we have run time library
881*10d565efSmrgroutines for extended floating point, then `long double' will use
882*10d565efSmrgextended format on all 68K targets.)
883*10d565efSmrg
884*10d565efSmrgWe expect to support extended floating point on the i386 and Sparc in
885*10d565efSmrgfuture versions.
886*10d565efSmrg
887*10d565efSmrg* Building GCC now automatically fixes the system's header files.
888*10d565efSmrgThis should require no attention.
889*10d565efSmrg
890*10d565efSmrg* GCC now installs an unsigned data type as size_t when it fixes the
891*10d565efSmrgheader files (on all but a handful of old target machines).
892*10d565efSmrgTherefore, the bug that size_t failed to be unsigned is fixed.
893*10d565efSmrg
894*10d565efSmrg* Building and installation are now completely separate.
895*10d565efSmrgAll new files are constructed during the build process;
896*10d565efSmrginstallation just copies them.
897*10d565efSmrg
898*10d565efSmrg* New targets supported: Clipper, Hitachi SH, Hitachi 8300, and Sparc
899*10d565efSmrgLite.
900*10d565efSmrg
901*10d565efSmrg* A totally new and much better Objective C run time system is included.
902*10d565efSmrg
903*10d565efSmrg* Objective C supports many new features.  Alas, I can't describe them
904*10d565efSmrgsince I don't use that language; however, they are the same ones
905*10d565efSmrgsupported in recent versions of the NeXT operating system.
906*10d565efSmrg
907*10d565efSmrg* The builtin functions __builtin_apply_args, __builtin_apply and
908*10d565efSmrg__builtin_return let you record the arguments and returned
909*10d565efSmrgvalue of a function without knowing their number or type.
910*10d565efSmrg
911*10d565efSmrg* The builtin string variables __FUNCTION__ and __PRETTY_FUNCTION__
912*10d565efSmrggive the name of the function in the source, and a pretty-printed
913*10d565efSmrgversion of the name.  The two are the same in C, but differ in C++.
914*10d565efSmrg
915*10d565efSmrg* Casts to union types do not yield lvalues.
916*10d565efSmrg
917*10d565efSmrg* ## before an empty rest argument discards the preceding sequence
918*10d565efSmrgof non-whitespace characters from the macro definition.
919*10d565efSmrg(This feature is subject to change.)
920*10d565efSmrg
921*10d565efSmrg
922*10d565efSmrgNew features specific to C++:
923*10d565efSmrg
924*10d565efSmrg* The manual contains a new section ``Common Misunderstandings with
925*10d565efSmrgGNU C++'' that C++ users should read.
926*10d565efSmrg
927*10d565efSmrg* #pragma interface and #pragma implementation let you use the same
928*10d565efSmrgC++ source file for both interface and implementation.
929*10d565efSmrgHowever, this mechanism is still in transition.
930*10d565efSmrg
931*10d565efSmrg* Named returned values let you avoid an extra constructor call
932*10d565efSmrgwhen a function result has a class type.
933*10d565efSmrg
934*10d565efSmrg* The C++ operators <? and >? yield min and max, respectively.
935*10d565efSmrg
936*10d565efSmrg* C++ gotos can exit a block safely even if the block has
937*10d565efSmrgaggregates that require destructors.
938*10d565efSmrg
939*10d565efSmrg* gcc defines the macro __GNUG__ when compiling C++ programs.
940*10d565efSmrg
941*10d565efSmrg* GNU C++ now correctly distinguishes between the prefix and postfix
942*10d565efSmrgforms of overloaded operator ++ and --.  To avoid breaking old
943*10d565efSmrgcode, if a class defines only the prefix form, the compiler
944*10d565efSmrgaccepts either ++obj or obj++, unless -pedantic is used.
945*10d565efSmrg
946*10d565efSmrg* If you are using version 2.3 of libg++, you need to rebuild it with
947*10d565efSmrg`make CC=gcc' to avoid mismatches in the definition of `size_t'.
948*10d565efSmrg
949*10d565efSmrgNewly documented compiler options:
950*10d565efSmrg
951*10d565efSmrg-fnostartfiles
952*10d565efSmrg	Omit the standard system startup files when linking.
953*10d565efSmrg
954*10d565efSmrg-fvolatile-global
955*10d565efSmrg	Consider memory references to extern and global data items to
956*10d565efSmrg	be volatile.
957*10d565efSmrg
958*10d565efSmrg-idirafter DIR
959*10d565efSmrg	Add DIR to the second include path.
960*10d565efSmrg
961*10d565efSmrg-iprefix PREFIX
962*10d565efSmrg	Specify PREFIX for later -iwithprefix options.
963*10d565efSmrg
964*10d565efSmrg-iwithprefix DIR
965*10d565efSmrg	Add PREFIX/DIR to the second include path.
966*10d565efSmrg
967*10d565efSmrg-mv8
968*10d565efSmrg	Emit Sparc v8 code (with integer multiply and divide).
969*10d565efSmrg-msparclite
970*10d565efSmrg	Emit Sparclite code (roughly v7.5).
971*10d565efSmrg
972*10d565efSmrg-print-libgcc-file-name
973*10d565efSmrg	Search for the libgcc.a file, print its absolute file name, and exit.
974*10d565efSmrg
975*10d565efSmrg-Woverloaded-virtual
976*10d565efSmrg	Warn when a derived class function declaration may be an error
977*10d565efSmrg	in defining a C++ virtual function.
978*10d565efSmrg
979*10d565efSmrg-Wtemplate-debugging
980*10d565efSmrg	When using templates in a C++ program, warn if debugging is
981*10d565efSmrg	not yet fully available.
982*10d565efSmrg
983*10d565efSmrg+eN
984*10d565efSmrg	Control how C++ virtual function definitions are used
985*10d565efSmrg	(like cfront 1.x).
986*10d565efSmrg
987*10d565efSmrg
988*10d565efSmrgCopyright (C) 2000-2003 Free Software Foundation, Inc.
989*10d565efSmrg
990*10d565efSmrgCopying and distribution of this file, with or without modification,
991*10d565efSmrgare permitted in any medium without royalty provided the copyright
992*10d565efSmrgnotice and this notice are preserved.
993