Annotation of GNUtools/cc/NEWS, revision 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.