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