Annotation of gcc/NEWS, revision 1.1.1.3

1.1.1.3 ! root        1: Noteworthy changes in GCC version 2.6.3:
        !             2: 
        !             3: A few more bugs have been fixed.
        !             4: 
        !             5: Noteworthy changes in GCC version 2.6.2:
        !             6: 
        !             7: A few bugs have been fixed.
        !             8: 
        !             9: Names of attributes can now be preceded and followed by double underscores.
        !            10: 
        !            11: Noteworthy changes in GCC version 2.6.1:
        !            12: 
        !            13: Numerous (mostly minor) bugs have been fixed.
        !            14: 
        !            15: The following new configurations are supported:
        !            16: 
        !            17:        GNU on x86 (instead of treating it like MACH)
        !            18:        NetBSD on Sparc and Motorola 68k
        !            19:        AIX 4.1 on RS/6000 and PowerPC systems
        !            20:        Sequent DYNUX/ptx 1.x and 2.x.
        !            21:        Both COFF and ELF configurations on AViiON without using /bin/gcc
        !            22:        Windows/NT on x86 architecture; preliminary
        !            23:        AT&T DSP1610 digital signal processor chips
        !            24:        i960 systems on bare boards using COFF
        !            25:        PDP11; target only and not extensively tested
        !            26: 
        !            27: The -pg option is now supported for Alpha under OSF/1 V3.0 or later.
        !            28: 
        !            29: Files with an extension of ".c++" are treated as C++ code.
        !            30: 
        !            31: The -Xlinker and -Wl arguments are now passed to the linker in the
        !            32: position they were specified on the command line.  This makes it
        !            33: possible, for example, to pass flags to the linker about specific
        !            34: object files.
        !            35: 
        !            36: The use of positional arguments to the configure script is no longer
        !            37: recommended.  Use --target= to specify the target; see the GCC manual.
        !            38: 
        !            39: The 386 now supports two new switches: -mreg-alloc=<string> changes
        !            40: the default register allocation order used by the compiler, and
        !            41: -mno-wide-multiply disables the use of the mul/imul instructions that
        !            42: produce 64 bit results in EAX:EDX from 32 bit operands to do long long
        !            43: multiplies and 32-bit division by constants.
        !            44: 
        !            45: Noteworthy changes in GCC version 2.6.0:
        !            46: 
        !            47: Numerous bugs have been fixed, in the C and C++ front-ends, as
        !            48: well as in the common compiler code.
        !            49: 
        !            50: This release includes the C, Objective-C, and C++ compilers.  However,
        !            51: we have moved the files for the C++ compiler (G++) files to a
        !            52: subdirectory, cp.  Subsequent releases of GCC will split these files
        !            53: to a separate TAR file.
        !            54: 
        !            55: The G++ team has been tracking the development of the ANSI standard for C++.
        !            56: Here are some new features added from the latest working paper:
        !            57: 
        !            58:        * built-in boolean type 'bool', with constants 'true' and 'false'.
        !            59:        * array new and delete (operator new [] and delete []).
        !            60:        * WP-conforming lifetime of temporaries.
        !            61:        * explicit instantiation of templates (template class A<int>;),
        !            62:           along with an option (-fno-implicit-templates) to disable emission
        !            63:           of implicitly instantiated templates, obsoletes -fexternal-templates.
        !            64:        * static member constants (static const int foo = 4; within the
        !            65:           class declaration).
        !            66: 
        !            67: Many error messages have been improved to tell the user more about the
        !            68: problem.  Conformance checking with -pedantic-errors has been
        !            69: improved.  G++ now compiles Fresco.
        !            70: 
        !            71: There is now an experimental implementation of virtual functions using
        !            72: thunks instead of Cfront-style vtables, enabled with -fvtable-thunks.
        !            73: This option also enables a heuristic which causes the compiler to only
        !            74: emit the vtable in the translation unit where its first non-inline
        !            75: virtual function is defined; using this option and
        !            76: -fno-implicit-templates, users should be able to avoid #pragma
        !            77: interface/implementation altogether.
        !            78: 
        !            79: Signatures have been added as a GNU C++ extension.  Using the option
        !            80: -fhandle-signatures, users are able to turn on recognition of
        !            81: signatures.  A short introduction on signatures is in the section
        !            82: `Extension to the C++ Language' in the manual.
        !            83: 
        !            84: The `g++' program is now a C program, rather than a shell script.
        !            85: 
        !            86: Lots and lots and lots of bugs fixes, in nested types, access control,
        !            87: pointers to member functions, the parser, templates, overload
        !            88: resolution, etc, etc.
        !            89: 
        !            90: There have been two major enhancements to the Objective-C compiler:
        !            91: 
        !            92: 1) Added portability.  It now runs on Alpha, and some problems with
        !            93:    message forwarding have been addressed on other platforms.
        !            94: 
        !            95: 2) Selectors have been redefined to be pointers to structs like:
        !            96:    { void *sel_id, char *sel_types }, where the sel_id is the unique
        !            97:    identifier, the selector itself is no longer unique.  
        !            98: 
        !            99:    Programmers should use the new function sel_eq to test selector
        !           100:    equivalence.
        !           101: 
        !           102: The following major changes have been made to the base compiler and
        !           103: machine-specific files.
        !           104: 
        !           105: - The MIL-STD-1750A is a new port, but still preliminary.
        !           106: 
        !           107: - The h8/300h is now supported; both the h8/300 and h8/300h ports come
        !           108:   with 32 bit IEEE 754 software floating point support.
        !           109: 
        !           110: - The 64-bit Sparc (v9) and 64-bit MIPS chips are supported.
        !           111: 
        !           112: - NetBSD is supported on m68k, Intel x86, and pc523 systems and FreeBSD
        !           113:   on x86.
        !           114: 
        !           115: - COFF is supported on x86, m68k, and Sparc systems running LynxOS.
        !           116: 
        !           117: - 68K systems from Bull and Concurrent are supported and System V
        !           118:   Release 4 is supported on the Atari.
        !           119: 
        !           120: - GCC supports GAS on the Motorola 3300 (sysV68) and debugging
        !           121:   (assuming GAS) on the Plexus 68K system.  (However, GAS does not yet
        !           122:   work on those systems).
        !           123: 
        !           124: - System V Release 4 is supported on MIPS (Tandem).
        !           125: 
        !           126: - For DG/UX, an ELF configuration is now supported, and both the ELF
        !           127:   and BCS configurations support ELF and COFF object file formats.
        !           128: 
        !           129: - OSF/1 V2.0 is supported on Alpha.
        !           130: 
        !           131: - Function profiling is also supported on Alpha.
        !           132: 
        !           133: - GAS and GDB is supported for Irix 5 (MIPS).
        !           134: 
        !           135: - "common mode" (code that will run on both POWER and PowerPC
        !           136:   architectures) is now supported for the RS/6000 family; the
        !           137:   compiler knows about more PPC chips.
        !           138: 
        !           139: - Both NeXTStep 2.1 and 3 are supported on 68k-based architectures.
        !           140: 
        !           141: - On the AMD 29k, the -msoft-float is now supported, as well as
        !           142:   -mno-sum-in-toc for RS/6000, -mapp-regs and -mflat for Sparc, and
        !           143:   -membedded-pic for MIPS.
        !           144: 
        !           145: - GCC can now convert division by integer constants into the equivalent
        !           146:   multiplication and shift operations when that is faster than the
        !           147:   division.
        !           148:        
        !           149: - Two new warning options, -Wbad-function-cast and
        !           150:   -Wmissing-declarations have been added.
        !           151: 
        !           152: - Configurations may now add machine-specific __attribute__ options on
        !           153:   type; many machines support the `section' attribute.
        !           154: 
        !           155: - The -ffast-math flag permits some optimization that violate strict
        !           156:   IEEE rules, such as converting X * 0.0 to 0.0.
        !           157: 
1.1.1.2   root      158: Noteworthy changes in GCC version 2.5.8:
                    159: 
                    160: This release only fixes a few serious bugs.  These include fixes for a
                    161: bug that prevented most programs from working on the RS/6000, a bug
                    162: that caused invalid assembler code for prgrams with a `switch'
                    163: statement on the NS32K, a G++ problem that caused undefined names in
                    164: some configurations, and several less erious problems, some of which
                    165: can affect most configuration.
                    166: 
                    167: Noteworthy change in GCC version 2.5.7:
                    168: 
                    169: This release only fixes a few bugs, one of which was causing bootstrap
                    170: compare errors on some systems.
                    171: 
                    172: Noteworthy change in GCC version 2.5.6:
                    173: 
                    174: A few backend bugs have been fixed, some of which only occur on one
                    175: machine.
                    176: 
                    177: The C++ compiler in 2.5.6 includes:
                    178: 
                    179:  * fixes for some common crashes
                    180:  * correct handling of nested types that are referenced as `foo::bar'
                    181:  * spurious warnings about friends being declared static and never
                    182:    defined should no longer appear
                    183:  * enums that are local to a method in a class, or a class that's
                    184:    local to a function, are now handled correctly.  For example:
                    185:        class foo { void bar () { enum { x, y } E; x; } };
                    186:        void bar () { class foo { enum { x, y } E; E baz; }; }
                    187: 
                    188: Noteworthy change in GCC version 2.5.5:
                    189: 
                    190: A large number of C++ bugs have been fixed.
                    191: 
                    192: The fixproto script adds prototypes conditionally on __cplusplus.
                    193: 
                    194: Noteworthy change in GCC version 2.5.4:
                    195: 
                    196: A bug fix in passing of structure arguments for the HP-PA architecture
                    197: makes code compiled with GCC 2.5.4 incompatible with code compiled
                    198: with earlier versions (if it passes struct arguments of 33 to 64 bits,
                    199: interspersed with other types of arguments).
                    200: 
                    201: Noteworthy change in gcc version 2.5.3:
                    202: 
                    203: The method of "mangling" C++ function names has been changed.  So you
                    204: must recompile all C++ programs completely when you start using GCC
                    205: 2.5.  Also, GCC 2.5 requires libg++ version 2.5.  Earlier libg++
                    206: versions won't work with GCC 2.5.  (This is generally true--GCC
                    207: version M.N requires libg++ version M.N.)
                    208: 
                    209: Noteworthy GCC changes in version 2.5:
                    210: 
                    211: * There is now support for the IBM 370 architecture as a target.
                    212: Currently the only operating system supported is MVS; GCC does not run
                    213: on MVS, so you must produce .s files using GCC as a cross compiler,
                    214: then transfer them to MVS to assemble them.  This port is not reliable
                    215: yet.
                    216: 
                    217: * The Power PC is now supported.
                    218: 
                    219: * The i860-based Paragon machine is now supported.
                    220: 
                    221: * The Hitachi 3050 (an HP-PA machine) is now supported.
                    222: 
                    223: * The variable __GNUC_MINOR__ holds the minor version number of GCC, as
                    224: an integer.  For version 2.5.X, the value is 5.
                    225: 
                    226: * In C, initializers for static and global variables are now processed
                    227: an element at a time, so that they don't need a lot of storage.
                    228: 
                    229: * The C syntax for specifying which structure field comes next in an
                    230: initializer is now `.FIELDNAME='.  The corresponding syntax for
                    231: array initializers is now `[INDEX]='.  For example,
                    232: 
                    233:   char whitespace[256]
                    234:     = { [' '] = 1, ['\t'] = 1, ['\n'] = 1 };
                    235: 
                    236: This was changed to accord with the syntax proposed by the Numerical
                    237: C Extensions Group (NCEG).
                    238: 
                    239: * Complex numbers are now supported in C.  Use the keyword __complex__
                    240: to declare complex data types.  See the manual for details.
                    241: 
                    242: * GCC now supports `long double' meaningfully on the Sparc (128-bit
                    243: floating point) and on the 386 (96-bit floating point).  The Sparc
                    244: support is enabled on on Solaris 2.x because earlier system versions
                    245: (SunOS 4) have bugs in the emulation.
                    246: 
                    247: * All targets now have assertions for cpu, machine and system.  So you
                    248: can now use assertions to distinguish among all supported targets.
                    249: 
                    250: * Nested functions in C may now be inline.  Just declare them inline
                    251: in the usual way.
                    252: 
                    253: * Packed structure members are now supported fully; it should be possible 
                    254: to access them on any supported target, no matter how little alignment
                    255: they have.
                    256: 
                    257: * To declare that a function does not return, you must now write
                    258: something like this (works only in 2.5):
                    259: 
                    260:     void fatal () __attribute__ ((noreturn));
                    261: 
                    262: or like this (works in older versions too):
                    263: 
                    264:     typedef void voidfn ();
                    265: 
                    266:     volatile voidfn fatal;
                    267: 
                    268: It used to be possible to do so by writing this:
                    269: 
                    270:     volatile void fatal ();
                    271: 
                    272: but it turns out that ANSI C requires that to mean something
                    273: else (which is useless).
                    274: 
                    275: Likewise, to declare that a function is side-effect-free
                    276: so that calls may be deleted or combined, write
                    277: something like this (works only in 2.5):
                    278: 
                    279:     int computation () __attribute__ ((const));
                    280: 
                    281: or like this (works in older versions too):
                    282: 
                    283:     typedef int intfn ();
                    284: 
                    285:     const intfn computation;
                    286: 
                    287: * The new option -iwithprefixbefore specifies a directory to add to 
                    288: the search path for include files in the same position where -I would
                    289: put it, but uses the specified prefix just like -iwithprefix.
                    290: 
                    291: * Basic block profiling has been enhanced to record the function the
                    292: basic block comes from, and if the module was compiled for debugging,
                    293: the line number and filename.  A default version of the basic block
                    294: support module has been added to libgcc2 that appends the basic block
                    295: information to a text file 'bb.out'.  Machine descriptions can now
                    296: override the basic block support module in the target macro file.
                    297: 
                    298: New features in g++:
                    299: 
                    300: * The new flag `-fansi-overloading' for C++.  Use a newly implemented
                    301: scheme of argument matching for C++.  It makes g++ more accurately
                    302: obey the rules set down in Chapter 13 of the Annotated C++ Reference
                    303: Manual (the ARM).  This option will be turned on by default in a
                    304: future release.
                    305: 
                    306: * The -finline-debug flag is now gone (it was never really used by the
                    307:   compiler).
                    308: 
                    309: * Recognizing the syntax for pointers to members, e.g., "foo::*bar", has been
                    310:   dramatically improved.  You should not get any syntax errors or incorrect
                    311:   runtime results while using pointers to members correctly; if you do, it's
                    312:   a definite bug.
                    313: 
                    314: * Forward declaration of an enum is now flagged as an error.
                    315: 
                    316: * Class-local typedefs are now working properly.
                    317: 
                    318: * Nested class support has been significantly improved.  The compiler
                    319:   will now (in theory) support up to 240 nested classes before hitting
                    320:   other system limits (like memory size).
                    321: 
                    322: * There is a new C version of the `g++' driver, to replace the old
                    323:   shell script.  This should significantly improve the performance of
                    324:   executing g++ on a system where a user's PATH environment variable
                    325:   references many NFS-mounted filesystems.  This driver also works
                    326:   under MS-DOS and OS/2.
                    327: 
                    328: * The ANSI committee working on the C++ standard has adopted a new
                    329:   keyword `mutable'.  This will allow you to make a specific member be
                    330:   modifiable in an otherwise const class.
                    331: 
1.1       root      332: Noteworthy GCC changes in version 2.4.4:
                    333: 
                    334:   A crash building g++ on various hosts (including m68k) has been
                    335:   fixed.  Also the g++ compiler no longer reports incorrect
                    336:   ambiguities in some situations where they do not exist, and
                    337:   const template member functions are now being found properly.
                    338: 
                    339: Noteworthy GCC changes in version 2.4:
                    340: 
                    341: * On each target, the default is now to return short structures
                    342: compatibly with the "usual" compiler on that target.
                    343: 
                    344: For most targets, this means the default is to return all structures
                    345: in memory, like long structures, in whatever way is used on that
                    346: target.  Use -freg-struct-return to enable returning short structures
                    347: (and unions) in registers.
                    348: 
                    349: This change means that newly compiled binaries are incompatible with
                    350: binaries compiled with previous versions of GCC.
                    351: 
                    352: On some targets, GCC is itself the usual compiler.  On these targets,
                    353: the default way to return short structures is still in registers.
                    354: Use -fpcc-struct-return to tell GCC to return them in memory.
                    355: 
                    356: * There is now a floating point emulator which can imitate the way all
                    357: supported target machines do floating point arithmetic.
                    358: 
                    359: This makes it possible to have cross compilation to and from the VAX,
                    360: and between machines of different endianness.  However, this works
                    361: only when the target machine description is updated to use the new
                    362: facilities, and not all have been updated.
                    363: 
                    364: This also makes possible support for longer floating point types.
                    365: GCC 2.4 supports extended format on the 68K if you use `long double',
                    366: for targets that have a 68881.  (When we have run time library
                    367: routines for extended floating point, then `long double' will use
                    368: extended format on all 68K targets.)
                    369: 
                    370: We expect to support extended floating point on the i386 and Sparc in
                    371: future versions.
                    372: 
                    373: * Building GCC now automatically fixes the system's header files.
                    374: This should require no attention.
                    375: 
                    376: * GCC now installs an unsigned data type as size_t when it fixes the
                    377: header files (on all but a handful of old target machines).
                    378: Therefore, the bug that size_t failed to be unsigned is fixed.
                    379: 
                    380: * Building and installation are now completely separate.
                    381: All new files are constructed during the build process; 
                    382: installation just copies them.
                    383: 
                    384: * New targets supported: Clipper, Hitachi SH, Hitachi 8300, and Sparc
                    385: Lite.
                    386: 
                    387: * A totally new and much better Objective C run time system is included.
                    388: 
                    389: * Objective C supports many new features.  Alas, I can't describe them
                    390: since I don't use that language; however, they are the same ones 
                    391: supported in recent versions of the NeXT operating system.
                    392: 
                    393: * The builtin functions __builtin_apply_args, __builtin_apply and
                    394: __builtin_return let you record the arguments and returned
                    395: value of a function without knowing their number or type.
                    396: 
                    397: * The builtin string variables __FUNCTION__ and __PRETTY_FUNCTION__
                    398: give the name of the function in the source, and a pretty-printed
                    399: version of the name.  The two are the same in C, but differ in C++.
                    400: 
                    401: * Casts to union types do not yield lvalues.
                    402: 
                    403: * ## before an empty rest argument discards the preceding sequence
                    404: of non-whitespace characters from the macro definition.
                    405: (This feature is subject to change.)
                    406: 
                    407: 
                    408: New features specific to C++:
                    409: 
                    410: * The manual contains a new section ``Common Misunderstandings with
                    411: GNU C++'' that C++ users should read.
                    412: 
                    413: * #pragma interface and #pragma implementation let you use the same
                    414: C++ source file for both interface and implementation.
                    415: However, this mechanism is still in transition.
                    416: 
                    417: * Named returned values let you avoid an extra constructor call
                    418: when a function result has a class type.
                    419: 
                    420: * The C++ operators <? and >? yield min and max, respectively.
                    421: 
                    422: * C++ gotos can exit a block safely even if the block has
                    423: aggregates that require destructors.
                    424: 
                    425: * gcc defines the macro __GNUG__ when compiling C++ programs.
                    426: 
                    427: * GNU C++ now correctly distinguishes between the prefix and postfix
                    428: forms of overloaded operator ++ and --.  To avoid breaking old
                    429: code, if a class defines only the prefix form, the compiler
                    430: accepts either ++obj or obj++, unless -pedantic is used.
                    431: 
                    432: * If you are using version 2.3 of libg++, you need to rebuild it with
                    433: `make CC=gcc' to avoid mismatches in the definition of `size_t'.
                    434: 
                    435: Newly documented compiler options:
                    436: 
                    437: -fnostartfiles
                    438:        Omit the standard system startup files when linking.
                    439: 
                    440: -fvolatile-global
                    441:        Consider memory references to extern and global data items to
                    442:        be volatile.
                    443: 
                    444: -idirafter DIR
                    445:        Add DIR to the second include path.
                    446: 
                    447: -iprefix PREFIX
                    448:        Specify PREFIX for later -iwithprefix options.
                    449: 
                    450: -iwithprefix DIR
                    451:        Add PREFIX/DIR to the second include path.
                    452: 
                    453: -mv8
                    454:        Emit Sparc v8 code (with integer multiply and divide).
                    455: -msparclite
                    456:        Emit Sparclite code (roughly v7.5).
                    457: 
                    458: -print-libgcc-file-name
                    459:        Search for the libgcc.a file, print its absolute file name, and exit.
                    460: 
                    461: -Woverloaded-virtual
                    462:        Warn when a derived class function declaration may be an error
                    463:        in defining a C++ virtual function. 
                    464: 
                    465: -Wtemplate-debugging
                    466:        When using templates in a C++ program, warn if debugging is
                    467:        not yet fully available.
                    468: 
                    469: +eN
                    470:        Control how C++ virtual function definitions are used
                    471:        (like cfront 1.x).
1.1.1.2   root      472: 

unix.superglobalmegacorp.com

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