|
|
1.1.1.5 ! root 1: Noteworthy changes in GCC version 2.7.2.1: ! 2: ! 3: This release fixes some serious bugs discovered since the 2.7.2 release. ! 4: 1.1.1.4 root 5: Noteworthy changes in GCC version 2.7.2: 6: 7: A few bugs have been fixed (most notably the generation of an 8: invalid assembler opcode on some RS/6000 systems). 9: 10: Noteworthy changes in GCC version 2.7.1: 11: 12: This release fixes numerous bugs (mostly minor) in GCC 2.7.0, but 13: also contains a few new features, mostly related to specific targets. 14: 15: Major changes have been made in code to support Windows NT. 16: 17: The following new targets are supported: 18: 19: 2.9 BSD on PDP-11 20: Linux on m68k 21: HP/UX version 10 on HP PA RISC (treated like version 9) 22: DEC Alpha running Windows NT 23: 24: When parsing C, GCC now recognizes C++ style `//' comments unless you 25: specify `-ansi' or `-traditional'. 26: 27: The PowerPC System V targets (powerpc-*-sysv, powerpc-*-eabi) now use the 28: calling sequence specified in the System V Application Binary Interface 29: Processor Supplement (PowerPC Processor ABI Supplement) rather than the calling 30: sequence used in GCC version 2.7.0. That calling sequence was based on the AIX 31: calling sequence without function descriptors. To compile code for that older 32: calling sequence, either configure the compiler for powerpc-*-eabiaix or use 33: the -mcall-aix switch when compiling and linking. 34: 35: Noteworthy changes in GCC version 2.7.0: 36: 37: GCC now works better on systems that use ".obj" and ".exe" instead of 38: ".o" and no extension. This involved changes to the driver program, 39: gcc.c, to convert ".o" names to ".obj" and to GCC's Makefile to use 40: ".obj" and ".exe" in filenames that are not targets. In order to 41: build GCC on such systems, you may need versions of GNU make and/or 42: compatible shells. At this point, this support is preliminary. 43: 44: Object file extensions of ".obj" and executable file extensions of 45: ".exe" are allowed when using appropriate version of GNU Make. 46: 47: Numerous enhancements were made to the __attribute__ facility including 48: more attributes and more places that support it. We now support the 49: "packed", "nocommon", "noreturn", "volatile", "const", "unused", 50: "transparent_union", "constructor", "destructor", "mode", "section", 51: "align", "format", "weak", and "alias" attributes. Each of these 52: names may also be specified with added underscores, e.g., "__packed__". 53: __attribute__ may now be applied to parameter definitions, function 54: definitions, and structure, enum, and union definitions. 55: 56: GCC now supports returning more structures in registers, as specified by 57: many calling sequences (ABIs), such as on the HP PA RISC. 58: 59: A new option '-fpack-struct' was added to automatically pack all structure 60: members together without holes. 61: 62: There is a new library (cpplib) and program (cppmain) that at some 63: point will replace cpp (aka cccp). To use cppmain as cpp now, pass 64: the option CCCP=cppmain to make. The library is already used by the 65: fix-header program, which should speed up the fixproto script. 66: 67: New options for supported targets: 68: 69: GNU on many targets. 70: NetBSD on MIPS, m68k, VAX, and x86. 71: LynxOS on x86, m68k, Sparc, and RS/6000. 72: VxWorks on many targets. 73: 74: Windows/NT on x86 architecture. Initial support for Windows/NT on Alpha 75: (not fully working). 76: 77: Many embedded targets, specifically UDI on a29k, aout, coff, elf, 78: and vsta "operating systems" on m68k, m88k, mips, sparc, and x86. 79: 80: Additional support for x86 (i386, i486, and Pentium): 81: 82: Work with old and new linkers for Linux-based GNU systems, 83: supporting both a.out and ELF. 84: FreeBSD on x86. 85: Stdcall convention. 86: -malign-double, -mregparm=, -malign-loops= and -malign-jumps= switches. 87: On ISC systems, support -Xp like -posix. 88: 89: Additions for RS/6000: 90: 91: Instruction scheduling information for PowerPC 403. 92: AIX 4.1 on PowerPC. 93: -mstring and -mno-string. 94: -msoft-float and floating-point emulation included. 95: Preliminary support for PowerPC System V.4 with or without the GNU as. 96: Preliminary support for EABI. 97: Preliminary support for 64-bit systems. 98: Both big and little endian systems. 99: 100: New features for MIPS-based systems: 101: 102: r4650. 103: mips4 and R8000. 104: Irix 6.0. 105: 64-bit ABI. 106: Allow dollar signs in labels on SGI/Irix 5.x. 107: 108: New support for HP PA RISC: 109: 110: Generation of PIC (requires binutils-2.5.2.u6 or later). 111: HP-UX version 9 on HP PA RISC (dynamically links even with -g). 112: Processor variants for HP PA RISC: 700, 7100, and 7100LC. 113: Automatic generation of long calls when needed. 114: -mfast-indirect-calls for kernels and static binaries. 115: 116: The called routine now copies arguments passed by invisible reference, 117: as required by the calling standard. 118: 119: Other new miscellaneous target-specific support: 120: 121: -mno-multm on a29k. 122: -mold-align for i960. 123: Configuration for "semi-hosted" ARM. 124: -momit-leaf-frame-pointer for M88k. 125: SH3 variant of Hitachi Super-H and support both big and little endian. 126: 127: Changes to Objective-C: 128: 129: Bare-bones implementation of NXConstantString has been added, 130: which is invoked by the @"string" directive. 131: 132: Class * has been changed to Class to conform to the NextSTEP and 133: OpenStep runtime. 134: 135: Enhancements to make dynamic loading easier. 136: 137: The module version number has been updated to Version 7, thus existing 138: code will need to be recompiled to use the current run-time library. 139: 140: GCC now supports the ISO Normative Addendum 1 to the C Standard. 141: As a result: 142: 143: The header <iso646.h> defines macros for C programs written 144: in national variants of ISO 646. 145: 146: The following digraph tokens are supported: 147: <: :> <% %> %: %:%: 148: These behave like the following, respectively: 149: [ ] { } # ## 150: 151: Digraph tokens are supported unless you specify the `-traditional' 152: option; you do not need to specify `-ansi' or `-trigraphs'. Except 153: for contrived and unlikely examples involving preprocessor 154: stringizing, digraph interpretation doesn't change the meaning of 155: programs; this is unlike trigraph interpretation, which changes the 156: meanings of relatively common strings. 157: 158: The macro __STDC_VERSION__ has the value 199409L. 159: 160: As usual, for full conformance to the standard, you also need a 161: C library that conforms. 162: 163: The following lists changes that have been made to g++. If some 164: features mentioned below sound unfamiliar, you will probably want to 165: look at the recently-released public review copy of the C++ Working 166: Paper. For PostScript and PDF (Adobe Acrobat) versions, see the 167: archive at ftp://research.att.com/dist/stdc++/WP. For HTML and ASCII 168: versions, see ftp://ftp.cygnus.com/pub/g++. On the web, see 169: http://www.cygnus.com/~mrs/wp-draft. 170: 171: The scope of variables declared in the for-init-statement has been changed 172: to conform to http://www.cygnus.com/~mrs/wp-draft/stmt.html#stmt.for; as a 173: result, packages such as groff 1.09 will not compile unless you specify the 174: -fno-for-scope flag. PLEASE DO NOT REPORT THIS AS A BUG; this is a change 175: mandated by the C++ standardization committee. 176: 177: Binary incompatibilities: 178: 179: The builtin 'bool' type is now the size of a machine word on RISC targets, 180: for code efficiency; it remains one byte long on CISC targets. 181: 182: Code that does not use #pragma interface/implementation will most 183: likely shrink dramatically, as g++ now only emits the vtable for a 184: class in the translation unit where its first non-inline, non-abstract 185: virtual function is defined. 186: 187: Classes that do not define the copy constructor will sometimes be 188: passed and returned in registers. This may illuminate latent bugs in 189: your code. 190: 191: Support for automatic template instantiation has *NOT* been added, due 192: to a disagreement over design philosophies. 193: 194: Support for exception handling has been improved; more targets are now 195: supported, and throws will use the RTTI mechanism to match against the 196: catch parameter type. Optimization is NOT SUPPORTED with 197: -fhandle-exceptions; no need to report this as a bug. 198: 199: Support for Run-Time Type Identification has been added with -frtti. 200: This support is still in alpha; one major restriction is that any file 201: compiled with -frtti must include <typeinfo.h>. 202: 203: Preliminary support for namespaces has been added. This support is far 204: from complete, and probably not useful. 205: 206: Synthesis of compiler-generated constructors, destructors and 207: assignment operators is now deferred until the functions are used. 208: 209: The parsing of expressions such as `a ? b : c = 1' has changed from 210: `(a ? b : c) = 1' to `a : b ? (c = 1)'. 211: 212: The code generated for testing conditions, especially those using || 213: and &&, is now more efficient. 214: 215: The operator keywords and, and_eq, bitand, bitor, compl, not, not_eq, 216: or, or_eq, xor and xor_eq are now supported. Use -ansi or 217: -foperator-names to enable them. 218: 219: The 'explicit' keyword is now supported. 'explicit' is used to mark 220: constructors and type conversion operators that should not be used 221: implicitly. 222: 223: g++ now accepts the typename keyword, though it currently has no 224: semantics; it can be a no-op in the current template implementation. 225: You may want to start using it in your code, however, since the 226: pending rewrite of the template implementation to compile STL properly 227: (perhaps for 2.8.0, perhaps not) will require you to use it as 228: indicated by the current draft. 229: 230: Handling of user-defined type conversion has been overhauled so that 231: type conversion operators are now found and used properly in 232: expressions and function calls. 233: 234: -fno-strict-prototype now only applies to function declarations with 235: "C" linkage. 236: 237: g++ now warns about 'if (x=0)' with -Wparentheses or -Wall. 238: 239: #pragma weak and #pragma pack are supported on System V R4 targets, as 240: are various other target-specific #pragmas supported by gcc. 241: 242: new and delete of const types is now allowed (with no additional 243: semantics). 244: 245: Explicit instantiation of template methods is now supported. Also, 246: 'inline template class foo<int>;' can be used to emit only the vtable 247: for a template class. 248: 249: With -fcheck-new, g++ will check the return value of all calls to 250: operator new, and not attempt to modify a returned null pointer. 251: 252: The template instantiation code now handles more conversions when 253: passing to a parameter that does not depend on template arguments. 254: This means that code like 'string s; cout << s;' now works. 255: 256: Invalid jumps in a switch statement past declarations that require 257: initializations are now caught. 258: 259: Functions declared 'extern inline' now have the same linkage semantics 260: as inline member functions. On supported targets, where previously 261: these functions (and vtables, and template instantiations) would have 262: been defined statically, they will now be defined as weak symbols so 263: that only one out-of-line definition is used. 264: 265: collect2 now demangles linker output, and c++filt has become part of 266: the gcc distribution. 267: 1.1.1.3 root 268: Noteworthy changes in GCC version 2.6.3: 269: 270: A few more bugs have been fixed. 271: 272: Noteworthy changes in GCC version 2.6.2: 273: 274: A few bugs have been fixed. 275: 276: Names of attributes can now be preceded and followed by double underscores. 277: 278: Noteworthy changes in GCC version 2.6.1: 279: 280: Numerous (mostly minor) bugs have been fixed. 281: 282: The following new configurations are supported: 283: 284: GNU on x86 (instead of treating it like MACH) 285: NetBSD on Sparc and Motorola 68k 286: AIX 4.1 on RS/6000 and PowerPC systems 287: Sequent DYNUX/ptx 1.x and 2.x. 288: Both COFF and ELF configurations on AViiON without using /bin/gcc 289: Windows/NT on x86 architecture; preliminary 290: AT&T DSP1610 digital signal processor chips 291: i960 systems on bare boards using COFF 292: PDP11; target only and not extensively tested 293: 294: The -pg option is now supported for Alpha under OSF/1 V3.0 or later. 295: 296: Files with an extension of ".c++" are treated as C++ code. 297: 298: The -Xlinker and -Wl arguments are now passed to the linker in the 299: position they were specified on the command line. This makes it 300: possible, for example, to pass flags to the linker about specific 301: object files. 302: 303: The use of positional arguments to the configure script is no longer 304: recommended. Use --target= to specify the target; see the GCC manual. 305: 306: The 386 now supports two new switches: -mreg-alloc=<string> changes 307: the default register allocation order used by the compiler, and 308: -mno-wide-multiply disables the use of the mul/imul instructions that 309: produce 64 bit results in EAX:EDX from 32 bit operands to do long long 310: multiplies and 32-bit division by constants. 311: 312: Noteworthy changes in GCC version 2.6.0: 313: 314: Numerous bugs have been fixed, in the C and C++ front-ends, as 315: well as in the common compiler code. 316: 317: This release includes the C, Objective-C, and C++ compilers. However, 318: we have moved the files for the C++ compiler (G++) files to a 319: subdirectory, cp. Subsequent releases of GCC will split these files 320: to a separate TAR file. 321: 322: The G++ team has been tracking the development of the ANSI standard for C++. 323: Here are some new features added from the latest working paper: 324: 325: * built-in boolean type 'bool', with constants 'true' and 'false'. 326: * array new and delete (operator new [] and delete []). 327: * WP-conforming lifetime of temporaries. 328: * explicit instantiation of templates (template class A<int>;), 329: along with an option (-fno-implicit-templates) to disable emission 330: of implicitly instantiated templates, obsoletes -fexternal-templates. 331: * static member constants (static const int foo = 4; within the 332: class declaration). 333: 334: Many error messages have been improved to tell the user more about the 335: problem. Conformance checking with -pedantic-errors has been 336: improved. G++ now compiles Fresco. 337: 338: There is now an experimental implementation of virtual functions using 339: thunks instead of Cfront-style vtables, enabled with -fvtable-thunks. 340: This option also enables a heuristic which causes the compiler to only 341: emit the vtable in the translation unit where its first non-inline 342: virtual function is defined; using this option and 343: -fno-implicit-templates, users should be able to avoid #pragma 344: interface/implementation altogether. 345: 346: Signatures have been added as a GNU C++ extension. Using the option 347: -fhandle-signatures, users are able to turn on recognition of 348: signatures. A short introduction on signatures is in the section 349: `Extension to the C++ Language' in the manual. 350: 351: The `g++' program is now a C program, rather than a shell script. 352: 353: Lots and lots and lots of bugs fixes, in nested types, access control, 354: pointers to member functions, the parser, templates, overload 355: resolution, etc, etc. 356: 357: There have been two major enhancements to the Objective-C compiler: 358: 359: 1) Added portability. It now runs on Alpha, and some problems with 360: message forwarding have been addressed on other platforms. 361: 362: 2) Selectors have been redefined to be pointers to structs like: 363: { void *sel_id, char *sel_types }, where the sel_id is the unique 364: identifier, the selector itself is no longer unique. 365: 366: Programmers should use the new function sel_eq to test selector 367: equivalence. 368: 369: The following major changes have been made to the base compiler and 370: machine-specific files. 371: 372: - The MIL-STD-1750A is a new port, but still preliminary. 373: 374: - The h8/300h is now supported; both the h8/300 and h8/300h ports come 375: with 32 bit IEEE 754 software floating point support. 376: 377: - The 64-bit Sparc (v9) and 64-bit MIPS chips are supported. 378: 379: - NetBSD is supported on m68k, Intel x86, and pc523 systems and FreeBSD 380: on x86. 381: 382: - COFF is supported on x86, m68k, and Sparc systems running LynxOS. 383: 384: - 68K systems from Bull and Concurrent are supported and System V 385: Release 4 is supported on the Atari. 386: 387: - GCC supports GAS on the Motorola 3300 (sysV68) and debugging 388: (assuming GAS) on the Plexus 68K system. (However, GAS does not yet 389: work on those systems). 390: 391: - System V Release 4 is supported on MIPS (Tandem). 392: 393: - For DG/UX, an ELF configuration is now supported, and both the ELF 394: and BCS configurations support ELF and COFF object file formats. 395: 396: - OSF/1 V2.0 is supported on Alpha. 397: 398: - Function profiling is also supported on Alpha. 399: 400: - GAS and GDB is supported for Irix 5 (MIPS). 401: 402: - "common mode" (code that will run on both POWER and PowerPC 403: architectures) is now supported for the RS/6000 family; the 404: compiler knows about more PPC chips. 405: 406: - Both NeXTStep 2.1 and 3 are supported on 68k-based architectures. 407: 408: - On the AMD 29k, the -msoft-float is now supported, as well as 409: -mno-sum-in-toc for RS/6000, -mapp-regs and -mflat for Sparc, and 410: -membedded-pic for MIPS. 411: 412: - GCC can now convert division by integer constants into the equivalent 413: multiplication and shift operations when that is faster than the 414: division. 415: 416: - Two new warning options, -Wbad-function-cast and 417: -Wmissing-declarations have been added. 418: 419: - Configurations may now add machine-specific __attribute__ options on 420: type; many machines support the `section' attribute. 421: 422: - The -ffast-math flag permits some optimization that violate strict 423: IEEE rules, such as converting X * 0.0 to 0.0. 424: 1.1.1.2 root 425: Noteworthy changes in GCC version 2.5.8: 426: 427: This release only fixes a few serious bugs. These include fixes for a 428: bug that prevented most programs from working on the RS/6000, a bug 1.1.1.4 root 429: that caused invalid assembler code for programs with a `switch' 1.1.1.2 root 430: statement on the NS32K, a G++ problem that caused undefined names in 1.1.1.4 root 431: some configurations, and several less serious problems, some of which 1.1.1.2 root 432: can affect most configuration. 433: 434: Noteworthy change in GCC version 2.5.7: 435: 436: This release only fixes a few bugs, one of which was causing bootstrap 437: compare errors on some systems. 438: 439: Noteworthy change in GCC version 2.5.6: 440: 441: A few backend bugs have been fixed, some of which only occur on one 442: machine. 443: 444: The C++ compiler in 2.5.6 includes: 445: 446: * fixes for some common crashes 447: * correct handling of nested types that are referenced as `foo::bar' 448: * spurious warnings about friends being declared static and never 449: defined should no longer appear 450: * enums that are local to a method in a class, or a class that's 451: local to a function, are now handled correctly. For example: 452: class foo { void bar () { enum { x, y } E; x; } }; 453: void bar () { class foo { enum { x, y } E; E baz; }; } 454: 455: Noteworthy change in GCC version 2.5.5: 456: 457: A large number of C++ bugs have been fixed. 458: 459: The fixproto script adds prototypes conditionally on __cplusplus. 460: 461: Noteworthy change in GCC version 2.5.4: 462: 463: A bug fix in passing of structure arguments for the HP-PA architecture 464: makes code compiled with GCC 2.5.4 incompatible with code compiled 465: with earlier versions (if it passes struct arguments of 33 to 64 bits, 466: interspersed with other types of arguments). 467: 468: Noteworthy change in gcc version 2.5.3: 469: 470: The method of "mangling" C++ function names has been changed. So you 471: must recompile all C++ programs completely when you start using GCC 472: 2.5. Also, GCC 2.5 requires libg++ version 2.5. Earlier libg++ 473: versions won't work with GCC 2.5. (This is generally true--GCC 474: version M.N requires libg++ version M.N.) 475: 476: Noteworthy GCC changes in version 2.5: 477: 478: * There is now support for the IBM 370 architecture as a target. 479: Currently the only operating system supported is MVS; GCC does not run 480: on MVS, so you must produce .s files using GCC as a cross compiler, 481: then transfer them to MVS to assemble them. This port is not reliable 482: yet. 483: 484: * The Power PC is now supported. 485: 486: * The i860-based Paragon machine is now supported. 487: 488: * The Hitachi 3050 (an HP-PA machine) is now supported. 489: 490: * The variable __GNUC_MINOR__ holds the minor version number of GCC, as 491: an integer. For version 2.5.X, the value is 5. 492: 493: * In C, initializers for static and global variables are now processed 494: an element at a time, so that they don't need a lot of storage. 495: 496: * The C syntax for specifying which structure field comes next in an 497: initializer is now `.FIELDNAME='. The corresponding syntax for 498: array initializers is now `[INDEX]='. For example, 499: 500: char whitespace[256] 501: = { [' '] = 1, ['\t'] = 1, ['\n'] = 1 }; 502: 503: This was changed to accord with the syntax proposed by the Numerical 504: C Extensions Group (NCEG). 505: 506: * Complex numbers are now supported in C. Use the keyword __complex__ 507: to declare complex data types. See the manual for details. 508: 509: * GCC now supports `long double' meaningfully on the Sparc (128-bit 510: floating point) and on the 386 (96-bit floating point). The Sparc 511: support is enabled on on Solaris 2.x because earlier system versions 512: (SunOS 4) have bugs in the emulation. 513: 514: * All targets now have assertions for cpu, machine and system. So you 515: can now use assertions to distinguish among all supported targets. 516: 517: * Nested functions in C may now be inline. Just declare them inline 518: in the usual way. 519: 520: * Packed structure members are now supported fully; it should be possible 521: to access them on any supported target, no matter how little alignment 522: they have. 523: 524: * To declare that a function does not return, you must now write 525: something like this (works only in 2.5): 526: 527: void fatal () __attribute__ ((noreturn)); 528: 529: or like this (works in older versions too): 530: 531: typedef void voidfn (); 532: 533: volatile voidfn fatal; 534: 535: It used to be possible to do so by writing this: 536: 537: volatile void fatal (); 538: 539: but it turns out that ANSI C requires that to mean something 540: else (which is useless). 541: 542: Likewise, to declare that a function is side-effect-free 543: so that calls may be deleted or combined, write 544: something like this (works only in 2.5): 545: 546: int computation () __attribute__ ((const)); 547: 548: or like this (works in older versions too): 549: 550: typedef int intfn (); 551: 552: const intfn computation; 553: 554: * The new option -iwithprefixbefore specifies a directory to add to 555: the search path for include files in the same position where -I would 556: put it, but uses the specified prefix just like -iwithprefix. 557: 558: * Basic block profiling has been enhanced to record the function the 559: basic block comes from, and if the module was compiled for debugging, 560: the line number and filename. A default version of the basic block 561: support module has been added to libgcc2 that appends the basic block 562: information to a text file 'bb.out'. Machine descriptions can now 563: override the basic block support module in the target macro file. 564: 565: New features in g++: 566: 567: * The new flag `-fansi-overloading' for C++. Use a newly implemented 568: scheme of argument matching for C++. It makes g++ more accurately 569: obey the rules set down in Chapter 13 of the Annotated C++ Reference 570: Manual (the ARM). This option will be turned on by default in a 571: future release. 572: 573: * The -finline-debug flag is now gone (it was never really used by the 574: compiler). 575: 576: * Recognizing the syntax for pointers to members, e.g., "foo::*bar", has been 577: dramatically improved. You should not get any syntax errors or incorrect 578: runtime results while using pointers to members correctly; if you do, it's 579: a definite bug. 580: 581: * Forward declaration of an enum is now flagged as an error. 582: 583: * Class-local typedefs are now working properly. 584: 585: * Nested class support has been significantly improved. The compiler 586: will now (in theory) support up to 240 nested classes before hitting 587: other system limits (like memory size). 588: 589: * There is a new C version of the `g++' driver, to replace the old 590: shell script. This should significantly improve the performance of 591: executing g++ on a system where a user's PATH environment variable 592: references many NFS-mounted filesystems. This driver also works 593: under MS-DOS and OS/2. 594: 595: * The ANSI committee working on the C++ standard has adopted a new 596: keyword `mutable'. This will allow you to make a specific member be 597: modifiable in an otherwise const class. 598: 1.1 root 599: Noteworthy GCC changes in version 2.4.4: 600: 601: A crash building g++ on various hosts (including m68k) has been 602: fixed. Also the g++ compiler no longer reports incorrect 603: ambiguities in some situations where they do not exist, and 604: const template member functions are now being found properly. 605: 606: Noteworthy GCC changes in version 2.4: 607: 608: * On each target, the default is now to return short structures 609: compatibly with the "usual" compiler on that target. 610: 611: For most targets, this means the default is to return all structures 612: in memory, like long structures, in whatever way is used on that 613: target. Use -freg-struct-return to enable returning short structures 614: (and unions) in registers. 615: 616: This change means that newly compiled binaries are incompatible with 617: binaries compiled with previous versions of GCC. 618: 619: On some targets, GCC is itself the usual compiler. On these targets, 620: the default way to return short structures is still in registers. 621: Use -fpcc-struct-return to tell GCC to return them in memory. 622: 623: * There is now a floating point emulator which can imitate the way all 624: supported target machines do floating point arithmetic. 625: 626: This makes it possible to have cross compilation to and from the VAX, 627: and between machines of different endianness. However, this works 628: only when the target machine description is updated to use the new 629: facilities, and not all have been updated. 630: 631: This also makes possible support for longer floating point types. 632: GCC 2.4 supports extended format on the 68K if you use `long double', 633: for targets that have a 68881. (When we have run time library 634: routines for extended floating point, then `long double' will use 635: extended format on all 68K targets.) 636: 637: We expect to support extended floating point on the i386 and Sparc in 638: future versions. 639: 640: * Building GCC now automatically fixes the system's header files. 641: This should require no attention. 642: 643: * GCC now installs an unsigned data type as size_t when it fixes the 644: header files (on all but a handful of old target machines). 645: Therefore, the bug that size_t failed to be unsigned is fixed. 646: 647: * Building and installation are now completely separate. 648: All new files are constructed during the build process; 649: installation just copies them. 650: 651: * New targets supported: Clipper, Hitachi SH, Hitachi 8300, and Sparc 652: Lite. 653: 654: * A totally new and much better Objective C run time system is included. 655: 656: * Objective C supports many new features. Alas, I can't describe them 657: since I don't use that language; however, they are the same ones 658: supported in recent versions of the NeXT operating system. 659: 660: * The builtin functions __builtin_apply_args, __builtin_apply and 661: __builtin_return let you record the arguments and returned 662: value of a function without knowing their number or type. 663: 664: * The builtin string variables __FUNCTION__ and __PRETTY_FUNCTION__ 665: give the name of the function in the source, and a pretty-printed 666: version of the name. The two are the same in C, but differ in C++. 667: 668: * Casts to union types do not yield lvalues. 669: 670: * ## before an empty rest argument discards the preceding sequence 671: of non-whitespace characters from the macro definition. 672: (This feature is subject to change.) 673: 674: 675: New features specific to C++: 676: 677: * The manual contains a new section ``Common Misunderstandings with 678: GNU C++'' that C++ users should read. 679: 680: * #pragma interface and #pragma implementation let you use the same 681: C++ source file for both interface and implementation. 682: However, this mechanism is still in transition. 683: 684: * Named returned values let you avoid an extra constructor call 685: when a function result has a class type. 686: 687: * The C++ operators <? and >? yield min and max, respectively. 688: 689: * C++ gotos can exit a block safely even if the block has 690: aggregates that require destructors. 691: 692: * gcc defines the macro __GNUG__ when compiling C++ programs. 693: 694: * GNU C++ now correctly distinguishes between the prefix and postfix 695: forms of overloaded operator ++ and --. To avoid breaking old 696: code, if a class defines only the prefix form, the compiler 697: accepts either ++obj or obj++, unless -pedantic is used. 698: 699: * If you are using version 2.3 of libg++, you need to rebuild it with 700: `make CC=gcc' to avoid mismatches in the definition of `size_t'. 701: 702: Newly documented compiler options: 703: 704: -fnostartfiles 705: Omit the standard system startup files when linking. 706: 707: -fvolatile-global 708: Consider memory references to extern and global data items to 709: be volatile. 710: 711: -idirafter DIR 712: Add DIR to the second include path. 713: 714: -iprefix PREFIX 715: Specify PREFIX for later -iwithprefix options. 716: 717: -iwithprefix DIR 718: Add PREFIX/DIR to the second include path. 719: 720: -mv8 721: Emit Sparc v8 code (with integer multiply and divide). 722: -msparclite 723: Emit Sparclite code (roughly v7.5). 724: 725: -print-libgcc-file-name 726: Search for the libgcc.a file, print its absolute file name, and exit. 727: 728: -Woverloaded-virtual 729: Warn when a derived class function declaration may be an error 730: in defining a C++ virtual function. 731: 732: -Wtemplate-debugging 733: When using templates in a C++ program, warn if debugging is 734: not yet fully available. 735: 736: +eN 737: Control how C++ virtual function definitions are used 738: (like cfront 1.x). 1.1.1.2 root 739:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.