Annotation of GNUtools/cc/NEWS, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.