|
|
1.1 ! root 1: Noteworthy GCC changes in version 2.4.4: ! 2: ! 3: A crash building g++ on various hosts (including m68k) has been ! 4: fixed. Also the g++ compiler no longer reports incorrect ! 5: ambiguities in some situations where they do not exist, and ! 6: const template member functions are now being found properly. ! 7: ! 8: Noteworthy GCC changes in version 2.4: ! 9: ! 10: * On each target, the default is now to return short structures ! 11: compatibly with the "usual" compiler on that target. ! 12: ! 13: For most targets, this means the default is to return all structures ! 14: in memory, like long structures, in whatever way is used on that ! 15: target. Use -freg-struct-return to enable returning short structures ! 16: (and unions) in registers. ! 17: ! 18: This change means that newly compiled binaries are incompatible with ! 19: binaries compiled with previous versions of GCC. ! 20: ! 21: On some targets, GCC is itself the usual compiler. On these targets, ! 22: the default way to return short structures is still in registers. ! 23: Use -fpcc-struct-return to tell GCC to return them in memory. ! 24: ! 25: * There is now a floating point emulator which can imitate the way all ! 26: supported target machines do floating point arithmetic. ! 27: ! 28: This makes it possible to have cross compilation to and from the VAX, ! 29: and between machines of different endianness. However, this works ! 30: only when the target machine description is updated to use the new ! 31: facilities, and not all have been updated. ! 32: ! 33: This also makes possible support for longer floating point types. ! 34: GCC 2.4 supports extended format on the 68K if you use `long double', ! 35: for targets that have a 68881. (When we have run time library ! 36: routines for extended floating point, then `long double' will use ! 37: extended format on all 68K targets.) ! 38: ! 39: We expect to support extended floating point on the i386 and Sparc in ! 40: future versions. ! 41: ! 42: * Building GCC now automatically fixes the system's header files. ! 43: This should require no attention. ! 44: ! 45: * GCC now installs an unsigned data type as size_t when it fixes the ! 46: header files (on all but a handful of old target machines). ! 47: Therefore, the bug that size_t failed to be unsigned is fixed. ! 48: ! 49: * Building and installation are now completely separate. ! 50: All new files are constructed during the build process; ! 51: installation just copies them. ! 52: ! 53: * New targets supported: Clipper, Hitachi SH, Hitachi 8300, and Sparc ! 54: Lite. ! 55: ! 56: * A totally new and much better Objective C run time system is included. ! 57: ! 58: * Objective C supports many new features. Alas, I can't describe them ! 59: since I don't use that language; however, they are the same ones ! 60: supported in recent versions of the NeXT operating system. ! 61: ! 62: * The builtin functions __builtin_apply_args, __builtin_apply and ! 63: __builtin_return let you record the arguments and returned ! 64: value of a function without knowing their number or type. ! 65: ! 66: * The builtin string variables __FUNCTION__ and __PRETTY_FUNCTION__ ! 67: give the name of the function in the source, and a pretty-printed ! 68: version of the name. The two are the same in C, but differ in C++. ! 69: ! 70: * Casts to union types do not yield lvalues. ! 71: ! 72: * ## before an empty rest argument discards the preceding sequence ! 73: of non-whitespace characters from the macro definition. ! 74: (This feature is subject to change.) ! 75: ! 76: ! 77: New features specific to C++: ! 78: ! 79: * The manual contains a new section ``Common Misunderstandings with ! 80: GNU C++'' that C++ users should read. ! 81: ! 82: * #pragma interface and #pragma implementation let you use the same ! 83: C++ source file for both interface and implementation. ! 84: However, this mechanism is still in transition. ! 85: ! 86: * Named returned values let you avoid an extra constructor call ! 87: when a function result has a class type. ! 88: ! 89: * The C++ operators <? and >? yield min and max, respectively. ! 90: ! 91: * C++ gotos can exit a block safely even if the block has ! 92: aggregates that require destructors. ! 93: ! 94: * gcc defines the macro __GNUG__ when compiling C++ programs. ! 95: ! 96: * GNU C++ now correctly distinguishes between the prefix and postfix ! 97: forms of overloaded operator ++ and --. To avoid breaking old ! 98: code, if a class defines only the prefix form, the compiler ! 99: accepts either ++obj or obj++, unless -pedantic is used. ! 100: ! 101: * If you are using version 2.3 of libg++, you need to rebuild it with ! 102: `make CC=gcc' to avoid mismatches in the definition of `size_t'. ! 103: ! 104: ! 105: Newly documented compiler options: ! 106: ! 107: -fnostartfiles ! 108: Omit the standard system startup files when linking. ! 109: ! 110: -fvolatile-global ! 111: Consider memory references to extern and global data items to ! 112: be volatile. ! 113: ! 114: -idirafter DIR ! 115: Add DIR to the second include path. ! 116: ! 117: -iprefix PREFIX ! 118: Specify PREFIX for later -iwithprefix options. ! 119: ! 120: -iwithprefix DIR ! 121: Add PREFIX/DIR to the second include path. ! 122: ! 123: -mv8 ! 124: Emit Sparc v8 code (with integer multiply and divide). ! 125: -msparclite ! 126: Emit Sparclite code (roughly v7.5). ! 127: ! 128: -print-libgcc-file-name ! 129: Search for the libgcc.a file, print its absolute file name, and exit. ! 130: ! 131: -Woverloaded-virtual ! 132: Warn when a derived class function declaration may be an error ! 133: in defining a C++ virtual function. ! 134: ! 135: -Wtemplate-debugging ! 136: When using templates in a C++ program, warn if debugging is ! 137: not yet fully available. ! 138: ! 139: +eN ! 140: Control how C++ virtual function definitions are used ! 141: (like cfront 1.x).
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.