Annotation of gcc/NEWS, revision 1.1.1.2

1.1.1.2 ! 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: 
1.1       root      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).
1.1.1.2 ! root      315: 

unix.superglobalmegacorp.com

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