|
|
1.1 ! root 1: Noteworthy changes in GCC version 2.5.8: ! 2: ! 3: This release only fixes a few serious bugs. These include fixes for a ! 4: bug that prevented most programs from working on the RS/6000, a bug ! 5: that caused invalid assembler code for prgrams with a `switch' ! 6: statement on the NS32K, a G++ problem that caused undefined names in ! 7: some configurations, and several less erious problems, some of which ! 8: can affect most configuration. ! 9: ! 10: Noteworthy change in GCC version 2.5.7: ! 11: ! 12: This release only fixes a few bugs, one of which was causing bootstrap ! 13: compare errors on some systems. ! 14: ! 15: Noteworthy change in GCC version 2.5.6: ! 16: ! 17: A few backend bugs have been fixed, some of which only occur on one ! 18: machine. ! 19: ! 20: The C++ compiler in 2.5.6 includes: ! 21: ! 22: * fixes for some common crashes ! 23: * correct handling of nested types that are referenced as `foo::bar' ! 24: * spurious warnings about friends being declared static and never ! 25: defined should no longer appear ! 26: * enums that are local to a method in a class, or a class that's ! 27: local to a function, are now handled correctly. For example: ! 28: class foo { void bar () { enum { x, y } E; x; } }; ! 29: void bar () { class foo { enum { x, y } E; E baz; }; } ! 30: ! 31: Noteworthy change in GCC version 2.5.5: ! 32: ! 33: A large number of C++ bugs have been fixed. ! 34: ! 35: The fixproto script adds prototypes conditionally on __cplusplus. ! 36: ! 37: Noteworthy change in GCC version 2.5.4: ! 38: ! 39: A bug fix in passing of structure arguments for the HP-PA architecture ! 40: makes code compiled with GCC 2.5.4 incompatible with code compiled ! 41: with earlier versions (if it passes struct arguments of 33 to 64 bits, ! 42: interspersed with other types of arguments). ! 43: ! 44: Noteworthy change in gcc version 2.5.3: ! 45: ! 46: The method of "mangling" C++ function names has been changed. So you ! 47: must recompile all C++ programs completely when you start using GCC ! 48: 2.5. Also, GCC 2.5 requires libg++ version 2.5. Earlier libg++ ! 49: versions won't work with GCC 2.5. (This is generally true--GCC ! 50: version M.N requires libg++ version M.N.) ! 51: ! 52: Noteworthy GCC changes in version 2.5: ! 53: ! 54: * There is now support for the IBM 370 architecture as a target. ! 55: Currently the only operating system supported is MVS; GCC does not run ! 56: on MVS, so you must produce .s files using GCC as a cross compiler, ! 57: then transfer them to MVS to assemble them. This port is not reliable ! 58: yet. ! 59: ! 60: * The Power PC is now supported. ! 61: ! 62: * The i860-based Paragon machine is now supported. ! 63: ! 64: * The Hitachi 3050 (an HP-PA machine) is now supported. ! 65: ! 66: * The variable __GNUC_MINOR__ holds the minor version number of GCC, as ! 67: an integer. For version 2.5.X, the value is 5. ! 68: ! 69: * In C, initializers for static and global variables are now processed ! 70: an element at a time, so that they don't need a lot of storage. ! 71: ! 72: * The C syntax for specifying which structure field comes next in an ! 73: initializer is now `.FIELDNAME='. The corresponding syntax for ! 74: array initializers is now `[INDEX]='. For example, ! 75: ! 76: char whitespace[256] ! 77: = { [' '] = 1, ['\t'] = 1, ['\n'] = 1 }; ! 78: ! 79: This was changed to accord with the syntax proposed by the Numerical ! 80: C Extensions Group (NCEG). ! 81: ! 82: * Complex numbers are now supported in C. Use the keyword __complex__ ! 83: to declare complex data types. See the manual for details. ! 84: ! 85: * GCC now supports `long double' meaningfully on the Sparc (128-bit ! 86: floating point) and on the 386 (96-bit floating point). The Sparc ! 87: support is enabled on on Solaris 2.x because earlier system versions ! 88: (SunOS 4) have bugs in the emulation. ! 89: ! 90: * All targets now have assertions for cpu, machine and system. So you ! 91: can now use assertions to distinguish among all supported targets. ! 92: ! 93: * Nested functions in C may now be inline. Just declare them inline ! 94: in the usual way. ! 95: ! 96: * Packed structure members are now supported fully; it should be possible ! 97: to access them on any supported target, no matter how little alignment ! 98: they have. ! 99: ! 100: * To declare that a function does not return, you must now write ! 101: something like this (works only in 2.5): ! 102: ! 103: void fatal () __attribute__ ((noreturn)); ! 104: ! 105: or like this (works in older versions too): ! 106: ! 107: typedef void voidfn (); ! 108: ! 109: volatile voidfn fatal; ! 110: ! 111: It used to be possible to do so by writing this: ! 112: ! 113: volatile void fatal (); ! 114: ! 115: but it turns out that ANSI C requires that to mean something ! 116: else (which is useless). ! 117: ! 118: Likewise, to declare that a function is side-effect-free ! 119: so that calls may be deleted or combined, write ! 120: something like this (works only in 2.5): ! 121: ! 122: int computation () __attribute__ ((const)); ! 123: ! 124: or like this (works in older versions too): ! 125: ! 126: typedef int intfn (); ! 127: ! 128: const intfn computation; ! 129: ! 130: * The new option -iwithprefixbefore specifies a directory to add to ! 131: the search path for include files in the same position where -I would ! 132: put it, but uses the specified prefix just like -iwithprefix. ! 133: ! 134: * Basic block profiling has been enhanced to record the function the ! 135: basic block comes from, and if the module was compiled for debugging, ! 136: the line number and filename. A default version of the basic block ! 137: support module has been added to libgcc2 that appends the basic block ! 138: information to a text file 'bb.out'. Machine descriptions can now ! 139: override the basic block support module in the target macro file. ! 140: ! 141: New features in g++: ! 142: ! 143: * The new flag `-fansi-overloading' for C++. Use a newly implemented ! 144: scheme of argument matching for C++. It makes g++ more accurately ! 145: obey the rules set down in Chapter 13 of the Annotated C++ Reference ! 146: Manual (the ARM). This option will be turned on by default in a ! 147: future release. ! 148: ! 149: * The -finline-debug flag is now gone (it was never really used by the ! 150: compiler). ! 151: ! 152: * Recognizing the syntax for pointers to members, e.g., "foo::*bar", has been ! 153: dramatically improved. You should not get any syntax errors or incorrect ! 154: runtime results while using pointers to members correctly; if you do, it's ! 155: a definite bug. ! 156: ! 157: * Forward declaration of an enum is now flagged as an error. ! 158: ! 159: * Class-local typedefs are now working properly. ! 160: ! 161: * Nested class support has been significantly improved. The compiler ! 162: will now (in theory) support up to 240 nested classes before hitting ! 163: other system limits (like memory size). ! 164: ! 165: * There is a new C version of the `g++' driver, to replace the old ! 166: shell script. This should significantly improve the performance of ! 167: executing g++ on a system where a user's PATH environment variable ! 168: references many NFS-mounted filesystems. This driver also works ! 169: under MS-DOS and OS/2. ! 170: ! 171: * The ANSI committee working on the C++ standard has adopted a new ! 172: keyword `mutable'. This will allow you to make a specific member be ! 173: modifiable in an otherwise const class. ! 174: ! 175: Noteworthy GCC changes in version 2.4.4: ! 176: ! 177: A crash building g++ on various hosts (including m68k) has been ! 178: fixed. Also the g++ compiler no longer reports incorrect ! 179: ambiguities in some situations where they do not exist, and ! 180: const template member functions are now being found properly. ! 181: ! 182: Noteworthy GCC changes in version 2.4: ! 183: ! 184: * On each target, the default is now to return short structures ! 185: compatibly with the "usual" compiler on that target. ! 186: ! 187: For most targets, this means the default is to return all structures ! 188: in memory, like long structures, in whatever way is used on that ! 189: target. Use -freg-struct-return to enable returning short structures ! 190: (and unions) in registers. ! 191: ! 192: This change means that newly compiled binaries are incompatible with ! 193: binaries compiled with previous versions of GCC. ! 194: ! 195: On some targets, GCC is itself the usual compiler. On these targets, ! 196: the default way to return short structures is still in registers. ! 197: Use -fpcc-struct-return to tell GCC to return them in memory. ! 198: ! 199: * There is now a floating point emulator which can imitate the way all ! 200: supported target machines do floating point arithmetic. ! 201: ! 202: This makes it possible to have cross compilation to and from the VAX, ! 203: and between machines of different endianness. However, this works ! 204: only when the target machine description is updated to use the new ! 205: facilities, and not all have been updated. ! 206: ! 207: This also makes possible support for longer floating point types. ! 208: GCC 2.4 supports extended format on the 68K if you use `long double', ! 209: for targets that have a 68881. (When we have run time library ! 210: routines for extended floating point, then `long double' will use ! 211: extended format on all 68K targets.) ! 212: ! 213: We expect to support extended floating point on the i386 and Sparc in ! 214: future versions. ! 215: ! 216: * Building GCC now automatically fixes the system's header files. ! 217: This should require no attention. ! 218: ! 219: * GCC now installs an unsigned data type as size_t when it fixes the ! 220: header files (on all but a handful of old target machines). ! 221: Therefore, the bug that size_t failed to be unsigned is fixed. ! 222: ! 223: * Building and installation are now completely separate. ! 224: All new files are constructed during the build process; ! 225: installation just copies them. ! 226: ! 227: * New targets supported: Clipper, Hitachi SH, Hitachi 8300, and Sparc ! 228: Lite. ! 229: ! 230: * A totally new and much better Objective C run time system is included. ! 231: ! 232: * Objective C supports many new features. Alas, I can't describe them ! 233: since I don't use that language; however, they are the same ones ! 234: supported in recent versions of the NeXT operating system. ! 235: ! 236: * The builtin functions __builtin_apply_args, __builtin_apply and ! 237: __builtin_return let you record the arguments and returned ! 238: value of a function without knowing their number or type. ! 239: ! 240: * The builtin string variables __FUNCTION__ and __PRETTY_FUNCTION__ ! 241: give the name of the function in the source, and a pretty-printed ! 242: version of the name. The two are the same in C, but differ in C++. ! 243: ! 244: * Casts to union types do not yield lvalues. ! 245: ! 246: * ## before an empty rest argument discards the preceding sequence ! 247: of non-whitespace characters from the macro definition. ! 248: (This feature is subject to change.) ! 249: ! 250: ! 251: New features specific to C++: ! 252: ! 253: * The manual contains a new section ``Common Misunderstandings with ! 254: GNU C++'' that C++ users should read. ! 255: ! 256: * #pragma interface and #pragma implementation let you use the same ! 257: C++ source file for both interface and implementation. ! 258: However, this mechanism is still in transition. ! 259: ! 260: * Named returned values let you avoid an extra constructor call ! 261: when a function result has a class type. ! 262: ! 263: * The C++ operators <? and >? yield min and max, respectively. ! 264: ! 265: * C++ gotos can exit a block safely even if the block has ! 266: aggregates that require destructors. ! 267: ! 268: * gcc defines the macro __GNUG__ when compiling C++ programs. ! 269: ! 270: * GNU C++ now correctly distinguishes between the prefix and postfix ! 271: forms of overloaded operator ++ and --. To avoid breaking old ! 272: code, if a class defines only the prefix form, the compiler ! 273: accepts either ++obj or obj++, unless -pedantic is used. ! 274: ! 275: * If you are using version 2.3 of libg++, you need to rebuild it with ! 276: `make CC=gcc' to avoid mismatches in the definition of `size_t'. ! 277: ! 278: Newly documented compiler options: ! 279: ! 280: -fnostartfiles ! 281: Omit the standard system startup files when linking. ! 282: ! 283: -fvolatile-global ! 284: Consider memory references to extern and global data items to ! 285: be volatile. ! 286: ! 287: -idirafter DIR ! 288: Add DIR to the second include path. ! 289: ! 290: -iprefix PREFIX ! 291: Specify PREFIX for later -iwithprefix options. ! 292: ! 293: -iwithprefix DIR ! 294: Add PREFIX/DIR to the second include path. ! 295: ! 296: -mv8 ! 297: Emit Sparc v8 code (with integer multiply and divide). ! 298: -msparclite ! 299: Emit Sparclite code (roughly v7.5). ! 300: ! 301: -print-libgcc-file-name ! 302: Search for the libgcc.a file, print its absolute file name, and exit. ! 303: ! 304: -Woverloaded-virtual ! 305: Warn when a derived class function declaration may be an error ! 306: in defining a C++ virtual function. ! 307: ! 308: -Wtemplate-debugging ! 309: When using templates in a C++ program, warn if debugging is ! 310: not yet fully available. ! 311: ! 312: +eN ! 313: Control how C++ virtual function definitions are used ! 314: (like cfront 1.x). ! 315:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.