|
|
1.1.1.3 ! root 1: Noteworthy changes in GCC version 2.6.3: ! 2: ! 3: A few more bugs have been fixed. ! 4: ! 5: Noteworthy changes in GCC version 2.6.2: ! 6: ! 7: A few bugs have been fixed. ! 8: ! 9: Names of attributes can now be preceded and followed by double underscores. ! 10: ! 11: Noteworthy changes in GCC version 2.6.1: ! 12: ! 13: Numerous (mostly minor) bugs have been fixed. ! 14: ! 15: The following new configurations are supported: ! 16: ! 17: GNU on x86 (instead of treating it like MACH) ! 18: NetBSD on Sparc and Motorola 68k ! 19: AIX 4.1 on RS/6000 and PowerPC systems ! 20: Sequent DYNUX/ptx 1.x and 2.x. ! 21: Both COFF and ELF configurations on AViiON without using /bin/gcc ! 22: Windows/NT on x86 architecture; preliminary ! 23: AT&T DSP1610 digital signal processor chips ! 24: i960 systems on bare boards using COFF ! 25: PDP11; target only and not extensively tested ! 26: ! 27: The -pg option is now supported for Alpha under OSF/1 V3.0 or later. ! 28: ! 29: Files with an extension of ".c++" are treated as C++ code. ! 30: ! 31: The -Xlinker and -Wl arguments are now passed to the linker in the ! 32: position they were specified on the command line. This makes it ! 33: possible, for example, to pass flags to the linker about specific ! 34: object files. ! 35: ! 36: The use of positional arguments to the configure script is no longer ! 37: recommended. Use --target= to specify the target; see the GCC manual. ! 38: ! 39: The 386 now supports two new switches: -mreg-alloc=<string> changes ! 40: the default register allocation order used by the compiler, and ! 41: -mno-wide-multiply disables the use of the mul/imul instructions that ! 42: produce 64 bit results in EAX:EDX from 32 bit operands to do long long ! 43: multiplies and 32-bit division by constants. ! 44: ! 45: Noteworthy changes in GCC version 2.6.0: ! 46: ! 47: Numerous bugs have been fixed, in the C and C++ front-ends, as ! 48: well as in the common compiler code. ! 49: ! 50: This release includes the C, Objective-C, and C++ compilers. However, ! 51: we have moved the files for the C++ compiler (G++) files to a ! 52: subdirectory, cp. Subsequent releases of GCC will split these files ! 53: to a separate TAR file. ! 54: ! 55: The G++ team has been tracking the development of the ANSI standard for C++. ! 56: Here are some new features added from the latest working paper: ! 57: ! 58: * built-in boolean type 'bool', with constants 'true' and 'false'. ! 59: * array new and delete (operator new [] and delete []). ! 60: * WP-conforming lifetime of temporaries. ! 61: * explicit instantiation of templates (template class A<int>;), ! 62: along with an option (-fno-implicit-templates) to disable emission ! 63: of implicitly instantiated templates, obsoletes -fexternal-templates. ! 64: * static member constants (static const int foo = 4; within the ! 65: class declaration). ! 66: ! 67: Many error messages have been improved to tell the user more about the ! 68: problem. Conformance checking with -pedantic-errors has been ! 69: improved. G++ now compiles Fresco. ! 70: ! 71: There is now an experimental implementation of virtual functions using ! 72: thunks instead of Cfront-style vtables, enabled with -fvtable-thunks. ! 73: This option also enables a heuristic which causes the compiler to only ! 74: emit the vtable in the translation unit where its first non-inline ! 75: virtual function is defined; using this option and ! 76: -fno-implicit-templates, users should be able to avoid #pragma ! 77: interface/implementation altogether. ! 78: ! 79: Signatures have been added as a GNU C++ extension. Using the option ! 80: -fhandle-signatures, users are able to turn on recognition of ! 81: signatures. A short introduction on signatures is in the section ! 82: `Extension to the C++ Language' in the manual. ! 83: ! 84: The `g++' program is now a C program, rather than a shell script. ! 85: ! 86: Lots and lots and lots of bugs fixes, in nested types, access control, ! 87: pointers to member functions, the parser, templates, overload ! 88: resolution, etc, etc. ! 89: ! 90: There have been two major enhancements to the Objective-C compiler: ! 91: ! 92: 1) Added portability. It now runs on Alpha, and some problems with ! 93: message forwarding have been addressed on other platforms. ! 94: ! 95: 2) Selectors have been redefined to be pointers to structs like: ! 96: { void *sel_id, char *sel_types }, where the sel_id is the unique ! 97: identifier, the selector itself is no longer unique. ! 98: ! 99: Programmers should use the new function sel_eq to test selector ! 100: equivalence. ! 101: ! 102: The following major changes have been made to the base compiler and ! 103: machine-specific files. ! 104: ! 105: - The MIL-STD-1750A is a new port, but still preliminary. ! 106: ! 107: - The h8/300h is now supported; both the h8/300 and h8/300h ports come ! 108: with 32 bit IEEE 754 software floating point support. ! 109: ! 110: - The 64-bit Sparc (v9) and 64-bit MIPS chips are supported. ! 111: ! 112: - NetBSD is supported on m68k, Intel x86, and pc523 systems and FreeBSD ! 113: on x86. ! 114: ! 115: - COFF is supported on x86, m68k, and Sparc systems running LynxOS. ! 116: ! 117: - 68K systems from Bull and Concurrent are supported and System V ! 118: Release 4 is supported on the Atari. ! 119: ! 120: - GCC supports GAS on the Motorola 3300 (sysV68) and debugging ! 121: (assuming GAS) on the Plexus 68K system. (However, GAS does not yet ! 122: work on those systems). ! 123: ! 124: - System V Release 4 is supported on MIPS (Tandem). ! 125: ! 126: - For DG/UX, an ELF configuration is now supported, and both the ELF ! 127: and BCS configurations support ELF and COFF object file formats. ! 128: ! 129: - OSF/1 V2.0 is supported on Alpha. ! 130: ! 131: - Function profiling is also supported on Alpha. ! 132: ! 133: - GAS and GDB is supported for Irix 5 (MIPS). ! 134: ! 135: - "common mode" (code that will run on both POWER and PowerPC ! 136: architectures) is now supported for the RS/6000 family; the ! 137: compiler knows about more PPC chips. ! 138: ! 139: - Both NeXTStep 2.1 and 3 are supported on 68k-based architectures. ! 140: ! 141: - On the AMD 29k, the -msoft-float is now supported, as well as ! 142: -mno-sum-in-toc for RS/6000, -mapp-regs and -mflat for Sparc, and ! 143: -membedded-pic for MIPS. ! 144: ! 145: - GCC can now convert division by integer constants into the equivalent ! 146: multiplication and shift operations when that is faster than the ! 147: division. ! 148: ! 149: - Two new warning options, -Wbad-function-cast and ! 150: -Wmissing-declarations have been added. ! 151: ! 152: - Configurations may now add machine-specific __attribute__ options on ! 153: type; many machines support the `section' attribute. ! 154: ! 155: - The -ffast-math flag permits some optimization that violate strict ! 156: IEEE rules, such as converting X * 0.0 to 0.0. ! 157: 1.1.1.2 root 158: Noteworthy changes in GCC version 2.5.8: 159: 160: This release only fixes a few serious bugs. These include fixes for a 161: bug that prevented most programs from working on the RS/6000, a bug 162: that caused invalid assembler code for prgrams with a `switch' 163: statement on the NS32K, a G++ problem that caused undefined names in 164: some configurations, and several less erious problems, some of which 165: can affect most configuration. 166: 167: Noteworthy change in GCC version 2.5.7: 168: 169: This release only fixes a few bugs, one of which was causing bootstrap 170: compare errors on some systems. 171: 172: Noteworthy change in GCC version 2.5.6: 173: 174: A few backend bugs have been fixed, some of which only occur on one 175: machine. 176: 177: The C++ compiler in 2.5.6 includes: 178: 179: * fixes for some common crashes 180: * correct handling of nested types that are referenced as `foo::bar' 181: * spurious warnings about friends being declared static and never 182: defined should no longer appear 183: * enums that are local to a method in a class, or a class that's 184: local to a function, are now handled correctly. For example: 185: class foo { void bar () { enum { x, y } E; x; } }; 186: void bar () { class foo { enum { x, y } E; E baz; }; } 187: 188: Noteworthy change in GCC version 2.5.5: 189: 190: A large number of C++ bugs have been fixed. 191: 192: The fixproto script adds prototypes conditionally on __cplusplus. 193: 194: Noteworthy change in GCC version 2.5.4: 195: 196: A bug fix in passing of structure arguments for the HP-PA architecture 197: makes code compiled with GCC 2.5.4 incompatible with code compiled 198: with earlier versions (if it passes struct arguments of 33 to 64 bits, 199: interspersed with other types of arguments). 200: 201: Noteworthy change in gcc version 2.5.3: 202: 203: The method of "mangling" C++ function names has been changed. So you 204: must recompile all C++ programs completely when you start using GCC 205: 2.5. Also, GCC 2.5 requires libg++ version 2.5. Earlier libg++ 206: versions won't work with GCC 2.5. (This is generally true--GCC 207: version M.N requires libg++ version M.N.) 208: 209: Noteworthy GCC changes in version 2.5: 210: 211: * There is now support for the IBM 370 architecture as a target. 212: Currently the only operating system supported is MVS; GCC does not run 213: on MVS, so you must produce .s files using GCC as a cross compiler, 214: then transfer them to MVS to assemble them. This port is not reliable 215: yet. 216: 217: * The Power PC is now supported. 218: 219: * The i860-based Paragon machine is now supported. 220: 221: * The Hitachi 3050 (an HP-PA machine) is now supported. 222: 223: * The variable __GNUC_MINOR__ holds the minor version number of GCC, as 224: an integer. For version 2.5.X, the value is 5. 225: 226: * In C, initializers for static and global variables are now processed 227: an element at a time, so that they don't need a lot of storage. 228: 229: * The C syntax for specifying which structure field comes next in an 230: initializer is now `.FIELDNAME='. The corresponding syntax for 231: array initializers is now `[INDEX]='. For example, 232: 233: char whitespace[256] 234: = { [' '] = 1, ['\t'] = 1, ['\n'] = 1 }; 235: 236: This was changed to accord with the syntax proposed by the Numerical 237: C Extensions Group (NCEG). 238: 239: * Complex numbers are now supported in C. Use the keyword __complex__ 240: to declare complex data types. See the manual for details. 241: 242: * GCC now supports `long double' meaningfully on the Sparc (128-bit 243: floating point) and on the 386 (96-bit floating point). The Sparc 244: support is enabled on on Solaris 2.x because earlier system versions 245: (SunOS 4) have bugs in the emulation. 246: 247: * All targets now have assertions for cpu, machine and system. So you 248: can now use assertions to distinguish among all supported targets. 249: 250: * Nested functions in C may now be inline. Just declare them inline 251: in the usual way. 252: 253: * Packed structure members are now supported fully; it should be possible 254: to access them on any supported target, no matter how little alignment 255: they have. 256: 257: * To declare that a function does not return, you must now write 258: something like this (works only in 2.5): 259: 260: void fatal () __attribute__ ((noreturn)); 261: 262: or like this (works in older versions too): 263: 264: typedef void voidfn (); 265: 266: volatile voidfn fatal; 267: 268: It used to be possible to do so by writing this: 269: 270: volatile void fatal (); 271: 272: but it turns out that ANSI C requires that to mean something 273: else (which is useless). 274: 275: Likewise, to declare that a function is side-effect-free 276: so that calls may be deleted or combined, write 277: something like this (works only in 2.5): 278: 279: int computation () __attribute__ ((const)); 280: 281: or like this (works in older versions too): 282: 283: typedef int intfn (); 284: 285: const intfn computation; 286: 287: * The new option -iwithprefixbefore specifies a directory to add to 288: the search path for include files in the same position where -I would 289: put it, but uses the specified prefix just like -iwithprefix. 290: 291: * Basic block profiling has been enhanced to record the function the 292: basic block comes from, and if the module was compiled for debugging, 293: the line number and filename. A default version of the basic block 294: support module has been added to libgcc2 that appends the basic block 295: information to a text file 'bb.out'. Machine descriptions can now 296: override the basic block support module in the target macro file. 297: 298: New features in g++: 299: 300: * The new flag `-fansi-overloading' for C++. Use a newly implemented 301: scheme of argument matching for C++. It makes g++ more accurately 302: obey the rules set down in Chapter 13 of the Annotated C++ Reference 303: Manual (the ARM). This option will be turned on by default in a 304: future release. 305: 306: * The -finline-debug flag is now gone (it was never really used by the 307: compiler). 308: 309: * Recognizing the syntax for pointers to members, e.g., "foo::*bar", has been 310: dramatically improved. You should not get any syntax errors or incorrect 311: runtime results while using pointers to members correctly; if you do, it's 312: a definite bug. 313: 314: * Forward declaration of an enum is now flagged as an error. 315: 316: * Class-local typedefs are now working properly. 317: 318: * Nested class support has been significantly improved. The compiler 319: will now (in theory) support up to 240 nested classes before hitting 320: other system limits (like memory size). 321: 322: * There is a new C version of the `g++' driver, to replace the old 323: shell script. This should significantly improve the performance of 324: executing g++ on a system where a user's PATH environment variable 325: references many NFS-mounted filesystems. This driver also works 326: under MS-DOS and OS/2. 327: 328: * The ANSI committee working on the C++ standard has adopted a new 329: keyword `mutable'. This will allow you to make a specific member be 330: modifiable in an otherwise const class. 331: 1.1 root 332: Noteworthy GCC changes in version 2.4.4: 333: 334: A crash building g++ on various hosts (including m68k) has been 335: fixed. Also the g++ compiler no longer reports incorrect 336: ambiguities in some situations where they do not exist, and 337: const template member functions are now being found properly. 338: 339: Noteworthy GCC changes in version 2.4: 340: 341: * On each target, the default is now to return short structures 342: compatibly with the "usual" compiler on that target. 343: 344: For most targets, this means the default is to return all structures 345: in memory, like long structures, in whatever way is used on that 346: target. Use -freg-struct-return to enable returning short structures 347: (and unions) in registers. 348: 349: This change means that newly compiled binaries are incompatible with 350: binaries compiled with previous versions of GCC. 351: 352: On some targets, GCC is itself the usual compiler. On these targets, 353: the default way to return short structures is still in registers. 354: Use -fpcc-struct-return to tell GCC to return them in memory. 355: 356: * There is now a floating point emulator which can imitate the way all 357: supported target machines do floating point arithmetic. 358: 359: This makes it possible to have cross compilation to and from the VAX, 360: and between machines of different endianness. However, this works 361: only when the target machine description is updated to use the new 362: facilities, and not all have been updated. 363: 364: This also makes possible support for longer floating point types. 365: GCC 2.4 supports extended format on the 68K if you use `long double', 366: for targets that have a 68881. (When we have run time library 367: routines for extended floating point, then `long double' will use 368: extended format on all 68K targets.) 369: 370: We expect to support extended floating point on the i386 and Sparc in 371: future versions. 372: 373: * Building GCC now automatically fixes the system's header files. 374: This should require no attention. 375: 376: * GCC now installs an unsigned data type as size_t when it fixes the 377: header files (on all but a handful of old target machines). 378: Therefore, the bug that size_t failed to be unsigned is fixed. 379: 380: * Building and installation are now completely separate. 381: All new files are constructed during the build process; 382: installation just copies them. 383: 384: * New targets supported: Clipper, Hitachi SH, Hitachi 8300, and Sparc 385: Lite. 386: 387: * A totally new and much better Objective C run time system is included. 388: 389: * Objective C supports many new features. Alas, I can't describe them 390: since I don't use that language; however, they are the same ones 391: supported in recent versions of the NeXT operating system. 392: 393: * The builtin functions __builtin_apply_args, __builtin_apply and 394: __builtin_return let you record the arguments and returned 395: value of a function without knowing their number or type. 396: 397: * The builtin string variables __FUNCTION__ and __PRETTY_FUNCTION__ 398: give the name of the function in the source, and a pretty-printed 399: version of the name. The two are the same in C, but differ in C++. 400: 401: * Casts to union types do not yield lvalues. 402: 403: * ## before an empty rest argument discards the preceding sequence 404: of non-whitespace characters from the macro definition. 405: (This feature is subject to change.) 406: 407: 408: New features specific to C++: 409: 410: * The manual contains a new section ``Common Misunderstandings with 411: GNU C++'' that C++ users should read. 412: 413: * #pragma interface and #pragma implementation let you use the same 414: C++ source file for both interface and implementation. 415: However, this mechanism is still in transition. 416: 417: * Named returned values let you avoid an extra constructor call 418: when a function result has a class type. 419: 420: * The C++ operators <? and >? yield min and max, respectively. 421: 422: * C++ gotos can exit a block safely even if the block has 423: aggregates that require destructors. 424: 425: * gcc defines the macro __GNUG__ when compiling C++ programs. 426: 427: * GNU C++ now correctly distinguishes between the prefix and postfix 428: forms of overloaded operator ++ and --. To avoid breaking old 429: code, if a class defines only the prefix form, the compiler 430: accepts either ++obj or obj++, unless -pedantic is used. 431: 432: * If you are using version 2.3 of libg++, you need to rebuild it with 433: `make CC=gcc' to avoid mismatches in the definition of `size_t'. 434: 435: Newly documented compiler options: 436: 437: -fnostartfiles 438: Omit the standard system startup files when linking. 439: 440: -fvolatile-global 441: Consider memory references to extern and global data items to 442: be volatile. 443: 444: -idirafter DIR 445: Add DIR to the second include path. 446: 447: -iprefix PREFIX 448: Specify PREFIX for later -iwithprefix options. 449: 450: -iwithprefix DIR 451: Add PREFIX/DIR to the second include path. 452: 453: -mv8 454: Emit Sparc v8 code (with integer multiply and divide). 455: -msparclite 456: Emit Sparclite code (roughly v7.5). 457: 458: -print-libgcc-file-name 459: Search for the libgcc.a file, print its absolute file name, and exit. 460: 461: -Woverloaded-virtual 462: Warn when a derived class function declaration may be an error 463: in defining a C++ virtual function. 464: 465: -Wtemplate-debugging 466: When using templates in a C++ program, warn if debugging is 467: not yet fully available. 468: 469: +eN 470: Control how C++ virtual function definitions are used 471: (like cfront 1.x). 1.1.1.2 root 472:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.