Home | History | Annotate | Line # | Download | only in dist
NEWS revision 1.3
      1 This file contains information about GCC releases which has been generated
      2 automatically from the online release notes.  It covers releases of GCC
      3 (and the former EGCS project) since EGCS 1.0, on the line of development
      4 that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
      5 see ONEWS.
      6 
      7 ======================================================================
      8 http://gcc.gnu.org/gcc-4.8/index.html
      9 
     10                              GCC 4.8 Release Series
     11 
     12    May 22, 2014
     13 
     14    The [1]GNU project and the GCC developers are pleased to announce the
     15    release of GCC 4.8.3.
     16 
     17    This release is a bug-fix release, containing fixes for regressions in
     18    GCC 4.8.2 relative to previous releases of GCC.
     19 
     20 Release History
     21 
     22    GCC 4.8.3
     23           May 22, 2014 ([2]changes, [3]documentation)
     24 
     25    GCC 4.8.2
     26           October 16, 2013 ([4]changes, [5]documentation)
     27 
     28    GCC 4.8.1
     29           May 31, 2013 ([6]changes, [7]documentation)
     30 
     31    GCC 4.8.0
     32           March 22, 2013 ([8]changes, [9]documentation)
     33 
     34 References and Acknowledgements
     35 
     36    GCC used to stand for the GNU C Compiler, but since the compiler
     37    supports several other languages aside from C, it now stands for the
     38    GNU Compiler Collection.
     39 
     40    A list of [10]successful builds is updated as new information becomes
     41    available.
     42 
     43    The GCC developers would like to thank the numerous people that have
     44    contributed new features, improvements, bug fixes, and other changes as
     45    well as test results to GCC. This [11]amazing group of volunteers is
     46    what makes GCC successful.
     47 
     48    For additional information about GCC please refer to the [12]GCC
     49    project web site or contact the [13]GCC development mailing list.
     50 
     51    To obtain GCC please use [14]our mirror sites or [15]our SVN server.
     52 
     53 
     54     For questions related to the use of GCC, please consult these web
     55     pages and the [16]GCC manuals. If that fails, the
     56     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
     57     web pages and the development of GCC are welcome on our developer
     58     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
     59     archives.
     60 
     61    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
     62    distribution of this entire article is permitted in any medium,
     63    provided this notice is preserved.
     64 
     65    These pages are [21]maintained by the GCC team. Last modified
     66    2014-05-22[22].
     67 
     68 References
     69 
     70    1. http://www.gnu.org/
     71    2. http://gcc.gnu.org/gcc-4.8/changes.html
     72    3. http://gcc.gnu.org/onlinedocs/4.8.3/
     73    4. http://gcc.gnu.org/gcc-4.8/changes.html
     74    5. http://gcc.gnu.org/onlinedocs/4.8.2/
     75    6. http://gcc.gnu.org/gcc-4.8/changes.html
     76    7. http://gcc.gnu.org/onlinedocs/4.8.1/
     77    8. http://gcc.gnu.org/gcc-4.8/changes.html
     78    9. http://gcc.gnu.org/onlinedocs/4.8.0/
     79   10. http://gcc.gnu.org/gcc-4.8/buildstat.html
     80   11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
     81   12. http://gcc.gnu.org/index.html
     82   13. mailto:gcc (a] gcc.gnu.org
     83   14. http://gcc.gnu.org/mirrors.html
     84   15. http://gcc.gnu.org/svn.html
     85   16. http://gcc.gnu.org/onlinedocs/
     86   17. mailto:gcc-help (a] gcc.gnu.org
     87   18. mailto:gcc (a] gcc.gnu.org
     88   19. http://gcc.gnu.org/lists.html
     89   20. http://www.fsf.org/
     90   21. http://gcc.gnu.org/about.html
     91   22. http://validator.w3.org/check/referer
     92 ======================================================================
     93 http://gcc.gnu.org/gcc-4.8/changes.html
     94 
     95                              GCC 4.8 Release Series
     96                         Changes, New Features, and Fixes
     97 
     98 Caveats
     99 
    100    GCC now uses C++ as its implementation language. This means that to
    101    build GCC from sources, you will need a C++ compiler that understands
    102    C++ 2003. For more details on the rationale and specific changes,
    103    please refer to the [1]C++ conversion page.
    104 
    105    To enable the Graphite framework for loop optimizations you now need
    106    CLooG version 0.18.0 and ISL version 0.11.1. Both can be obtained from
    107    the [2]GCC infrastructure directory. The installation manual contains
    108    more information about requirements to build GCC.
    109 
    110    GCC now uses a more aggressive analysis to derive an upper bound for
    111    the number of iterations of loops using constraints imposed by language
    112    standards. This may cause non-conforming programs to no longer work as
    113    expected, such as SPEC CPU 2006 464.h264ref and 416.gamess. A new
    114    option, -fno-aggressive-loop-optimizations, was added to disable this
    115    aggressive analysis. In some loops that have known constant number of
    116    iterations, but undefined behavior is known to occur in the loop before
    117    reaching or during the last iteration, GCC will warn about the
    118    undefined behavior in the loop instead of deriving lower upper bound of
    119    the number of iterations for the loop. The warning can be disabled with
    120    -Wno-aggressive-loop-optimizations.
    121 
    122    On ARM, a bug has been fixed in GCC's implementation of the AAPCS rules
    123    for the layout of vectors that could lead to wrong code being
    124    generated. Vectors larger than 8 bytes in size are now by default
    125    aligned to an 8-byte boundary. This is an ABI change: code that makes
    126    explicit use of vector types may be incompatible with binary objects
    127    built with older versions of GCC. Auto-vectorized code is not affected
    128    by this change.
    129 
    130    On AVR, support has been removed for the command-line option
    131    -mshort-calls deprecated in GCC 4.7.
    132 
    133    On AVR, the configure option --with-avrlibc supported since GCC 4.7.2
    134    is turned on per default for all non-RTEMS configurations. This option
    135    arranges for a better integration of [3]AVR Libc with avr-gcc. For
    136    technical details, see [4]PR54461. To turn off the option in non-RTEMS
    137    configurations, use --with-avrlibc=no. If the compiler is configured
    138    for RTEMS, the option is always turned off.
    139 
    140    More information on porting to GCC 4.8 from previous versions of GCC
    141    can be found in the [5]porting guide for this release.
    142 
    143 General Optimizer Improvements (and Changes)
    144 
    145      * DWARF4 is now the default when generating DWARF debug information.
    146        When -g is used on a platform that uses DWARF debugging
    147        information, GCC will now default to -gdwarf-4
    148        -fno-debug-types-section.
    149        GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 debug information
    150        consumers support DWARF4 by default. Before GCC 4.8 the default
    151        version used was DWARF2. To make GCC 4.8 generate an older DWARF
    152        version use -g together with -gdwarf-2 or -gdwarf-3. The default
    153        for Darwin and VxWorks is still -gdwarf-2 -gstrict-dwarf.
    154      * A new general optimization level, -Og, has been introduced. It
    155        addresses the need for fast compilation and a superior debugging
    156        experience while providing a reasonable level of runtime
    157        performance. Overall experience for development should be better
    158        than the default optimization level -O0.
    159      * A new option -ftree-partial-pre was added to control the partial
    160        redundancy elimination (PRE) optimization. This option is enabled
    161        by default at the -O3 optimization level, and it makes PRE more
    162        aggressive.
    163      * The option -fconserve-space has been removed; it was no longer
    164        useful on most targets since GCC supports putting variables into
    165        BSS without making them common.
    166      * The struct reorg and matrix reorg optimizations (command-line
    167        options -fipa-struct-reorg and -fipa-matrix-reorg) have been
    168        removed. They did not always work correctly, nor did they work with
    169        link-time optimization (LTO), hence were only applicable to
    170        programs consisting of a single translation unit.
    171      * Several scalability bottle-necks have been removed from GCC's
    172        optimization passes. Compilation of extremely large functions, e.g.
    173        due to the use of the flatten attribute in the "Eigen" C++ linear
    174        algebra templates library, is significantly faster than previous
    175        releases of GCC.
    176      * Link-time optimization (LTO) improvements:
    177           + LTO partitioning has been rewritten for better reliability and
    178             maintanibility. Several important bugs leading to link
    179             failures have been fixed.
    180      * Interprocedural optimization improvements:
    181           + A new symbol table has been implemented. It builds on existing
    182             callgraph and varpool modules and provide a new API. Unusual
    183             symbol visibilities and aliases are handled more consistently
    184             leading to, for example, more aggressive unreachable code
    185             removal with LTO.
    186           + The inline heuristic can now bypass limits on the size of of
    187             inlined functions when the inlining is particularly
    188             profitable. This happens, for example, when loop bounds or
    189             array strides get propagated.
    190           + Values passed through aggregates (either by value or
    191             reference) are now propagated at the inter-procedural level
    192             leading to better inlining decisions (for example in the case
    193             of Fortran array descriptors) and devirtualization.
    194      * [6]AddressSanitizer , a fast memory error detector, has been added
    195        and can be enabled via -fsanitize=address. Memory access
    196        instructions will be instrumented to detect heap-, stack-, and
    197        global-buffer overflow as well as use-after-free bugs. To get nicer
    198        stacktraces, use -fno-omit-frame-pointer. The AddressSanitizer is
    199        available on IA-32/x86-64/x32/PowerPC/PowerPC64 GNU/Linux and on
    200        x86-64 Darwin.
    201      * [7]ThreadSanitizer has been added and can be enabled via
    202        -fsanitize=thread. Instructions will be instrumented to detect data
    203        races. The ThreadSanitizer is available on x86-64 GNU/Linux.
    204      * A new local register allocator (LRA) has been implemented, which
    205        replaces the 26 year old reload pass and improves generated code
    206        quality. For now it is active on the IA-32 and x86-64 targets.
    207      * Support for transactional memory has been implemented on the
    208        following architectures: IA-32/x86-64, ARM, PowerPC, SH, SPARC, and
    209        Alpha.
    210 
    211 New Languages and Language specific improvements
    212 
    213   C family
    214 
    215      * Each diagnostic emitted now includes the original source line and a
    216        caret '^' indicating the column. The option
    217        -fno-diagnostics-show-caret suppresses this information.
    218      * The option -ftrack-macro-expansion=2 is now enabled by default.
    219        This allows the compiler to display the macro expansion stack in
    220        diagnostics. Combined with the caret information, an example
    221        diagnostic showing these two features is:
    222 
    223 t.c:1:94: error: invalid operands to binary < (have `struct mystruct' and `float
    224 ')
    225  #define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _
    226 _b = (B); __a < __b ? __b : __a; })
    227 
    228               ^
    229 t.c:7:7: note: in expansion of macro 'MYMAX'
    230    X = MYMAX(P, F);
    231        ^
    232 
    233      * A new -Wsizeof-pointer-memaccess warning has been added (also
    234        enabled by -Wall) to warn about suspicious length parameters to
    235        certain string and memory built-in functions if the argument uses
    236        sizeof. This warning warns e.g. about memset (ptr, 0, sizeof
    237        (ptr)); if ptr is not an array, but a pointer, and suggests a
    238        possible fix, or about memcpy (&foo, ptr, sizeof (&foo));.
    239      * The new option -Wpedantic is an alias for -pedantic, which is now
    240        deprecated. The forms -Wno-pedantic, -Werror=pedantic, and
    241        -Wno-error=pedantic work in the same way as for any other -W
    242        option. One caveat is that -Werror=pedantic is not equivalent to
    243        -pedantic-errors, since the latter makes into errors some warnings
    244        that are not controlled by -Wpedantic, and the former only affects
    245        diagnostics that are disabled when using -Wno-pedantic.
    246      * The option -Wshadow no longer warns if a declaration shadows a
    247        function declaration, unless the former declares a function or
    248        pointer to function, because this is [8]a common and valid case in
    249        real-world code.
    250 
    251   C++
    252 
    253      * G++ now implements the [9]C++11 thread_local keyword; this differs
    254        from the GNU __thread keyword primarily in that it allows dynamic
    255        initialization and destruction semantics. Unfortunately, this
    256        support requires a run-time penalty for references to
    257        non-function-local thread_local variables defined in a different
    258        translation unit even if they don't need dynamic initialization, so
    259        users may want to continue to use __thread for TLS variables with
    260        static initialization semantics.
    261        If the programmer can be sure that no use of the variable in a
    262        non-defining TU needs to trigger dynamic initialization (either
    263        because the variable is statically initialized, or a use of the
    264        variable in the defining TU will be executed before any uses in
    265        another TU), they can avoid this overhead with the
    266        -fno-extern-tls-init option.
    267        OpenMP threadprivate variables now also support dynamic
    268        initialization and destruction by the same mechanism.
    269      * G++ now implements the [10]C++11 attribute syntax, e.g.
    270 
    271 [[noreturn]] void f();
    272 
    273        and also the alignment specifier, e.g.
    274 
    275 alignas(double) int i;
    276 
    277      * G++ now implements [11]C++11 inheriting constructors, e.g.
    278 
    279 struct A { A(int); };
    280 struct B: A { using A::A; }; // defines B::B(int)
    281 B b(42); // OK
    282 
    283      * As of GCC 4.8.1, G++ implements the change to decltype semantics
    284        from [12]N3276.
    285 
    286 struct A f();
    287 decltype(f()) g();    // OK, return type of f() is not required to be complete.
    288 
    289      * As of GCC 4.8.1, G++ implements [13]C++11 ref-qualifiers, e.g.
    290 
    291 struct A { int f() &; };
    292 int i = A().f();  // error, f() requires an lvalue object
    293 
    294      * G++ now supports a -std=c++1y option for experimentation with
    295        features proposed for the next revision of the standard, expected
    296        around 2014. Currently the only difference from -std=c++11 is
    297        support for return type deduction in normal functions, as proposed
    298        in [14]N3386. Status of C++1y features in GCC 4.8 can be found
    299        [15]here.
    300      * The G++ namespace association extension, __attribute ((strong)),
    301        has been deprecated. Inline namespaces should be used instead.
    302      * G++ now supports a -fext-numeric-literal option to control whether
    303        GNU numeric literal suffixes are accepted as extensions or
    304        processed as C++11 user-defined numeric literal suffixes. The flag
    305        is on (use suffixes for GNU literals) by default for -std=gnu++*,
    306        and -std=c++98. The flag is off (use suffixes for user-defined
    307        literals) by default for -std=c++11 and later.
    308 
    309     Runtime Library (libstdc++)
    310 
    311      * [16]Improved experimental support for the new ISO C++ standard,
    312        C++11, including:
    313           + forward_list meets the allocator-aware container requirements;
    314           + this_thread::sleep_for(), this_thread::sleep_until() and
    315             this_thread::yield() are defined without requiring the
    316             configure option --enable-libstdcxx-time;
    317      * Improvements to <random>:
    318           + SSE optimized normal_distribution.
    319           + Use of hardware RNG instruction for random_device on new x86
    320             processors (requires the assembler to support the
    321             instruction.)
    322        and <ext/random>:
    323           + New random number engine simd_fast_mersenne_twister_engine
    324             with an optimized SSE implementation.
    325           + New random number distributions beta_distribution,
    326             normal_mv_distribution, rice_distribution,
    327             nakagami_distribution, pareto_distribution, k_distribution,
    328             arcsine_distribution, hoyt_distribution.
    329      * Added --disable-libstdcxx-verbose configure option to disable
    330        diagnostic messages issued when a process terminates abnormally.
    331        This may be useful for embedded systems to reduce the size of
    332        executables that link statically to the library.
    333 
    334   Fortran
    335 
    336      * Compatibility notice:
    337           + Module files: The version of module files (.mod) has been
    338             incremented. Fortran MODULEs compiled by earlier GCC versions
    339             have to be recompiled, when they are USEd by files compiled
    340             with GCC 4.8. GCC 4.8 is not able to read .mod files created
    341             by earlier versions; attempting to do so gives an error
    342             message.
    343             Note: The ABI of the produced assembler data itself has not
    344             changed; object files and libraries are fully compatible with
    345             older versions except as noted below.
    346           + ABI: Some internal names (used in the assembler/object file)
    347             have changed for symbols declared in the specification part of
    348             a module. If an affected module - or a file using it via use
    349             association - is recompiled, the module and all files which
    350             directly use such symbols have to be recompiled as well. This
    351             change only affects the following kind of module symbols:
    352                o Procedure pointers. Note: C-interoperable function
    353                  pointers (type(c_funptr)) are not affected nor are
    354                  procedure-pointer components.
    355                o Deferred-length character strings.
    356      * The [17]BACKTRACE intrinsic subroutine has been added. It shows a
    357        backtrace at an arbitrary place in user code; program execution
    358        continues normally afterwards.
    359      * The [18]-Wc-binding-type warning option has been added (disabled by
    360        default). It warns if the a variable might not be C interoperable;
    361        in particular, if the variable has been declared using an intrinsic
    362        type with default kind instead of using a kind parameter defined
    363        for C interoperability in the intrinsic ISO_C_Binding module.
    364        Before, this warning was always printed. The -Wc-binding-type
    365        option is enabled by -Wall.
    366      * The [19]-Wrealloc-lhs and -Wrealloc-lhs-all warning command-line
    367        options have been added, which diagnose when code to is inserted
    368        for automatic (re)allocation of a variable during assignment. This
    369        option can be used to decide whether it is safe to use
    370        [20]-fno-realloc-lhs. Additionally, it can be used to find
    371        automatic (re)allocation in hot loops. (For arrays, replacing
    372        "var=" by "var(:)=" disables the automatic reallocation.)
    373      * The [21]-Wcompare-reals command-line option has been added. When
    374        this is set, warnings are issued when comparing REAL or COMPLEX
    375        types for equality and inequality; consider replacing a == b by
    376        abs(a -b) < eps with a suitable eps. -Wcompare-reals is enabled by
    377        -Wextra.
    378      * The [22]-Wtarget-lifetime command-line option has been added
    379        (enabled with -Wall), which warns if the pointer in a pointer
    380        assignment might outlive its target.
    381      * Reading floating point numbers which use "q" for the exponential
    382        (such as 4.0q0) is now supported as vendor extension for better
    383        compatibility with old data files. It is strongly recommended to
    384        use for I/O the equivalent but standard conforming "e" (such as
    385        4.0e0).
    386        (For Fortran source code, consider replacing the "q" in
    387        floating-point literals by a kind parameter (e.g. 4.0e0_qp with a
    388        suitable qp). Note that - in Fortran source code - replacing "q" by
    389        a simple "e" is not equivalent.)
    390      * The GFORTRAN_TMPDIR environment variable for specifying a
    391        non-default directory for files opened with STATUS="SCRATCH", is
    392        not used anymore. Instead gfortran checks the POSIX/GNU standard
    393        TMPDIR environment variable. If TMPDIR is not defined, gfortran
    394        falls back to other methods to determine the directory for
    395        temporary files as documented in the [23]user manual.
    396      * [24]Fortran 2003:
    397           + Support for unlimited polymorphic variables (CLASS(*)) has
    398             been added. Nonconstant character lengths are not yet
    399             supported.
    400      * [25]TS 29113:
    401           + Assumed types (TYPE(*)) are now supported.
    402           + Experimental support for assumed-rank arrays (dimension(..))
    403             has been added. Note that currently gfortran's own array
    404             descriptor is used, which is different from the one defined in
    405             TS29113, see [26]gfortran's header file or use the [27]Chasm
    406             Language Interoperability Tools.
    407 
    408   Go
    409 
    410      * GCC 4.8.2 provides a complete implementation of the Go 1.1.2
    411        release.
    412      * GCC 4.8.0 and 4.8.1 implement a preliminary version of the Go 1.1
    413        release. The library support is not quite complete.
    414      * Go has been tested on GNU/Linux and Solaris platforms for various
    415        processors including x86, x86_64, PowerPC, SPARC, and Alpha. It may
    416        work on other platforms as well.
    417 
    418 New Targets and Target Specific Improvements
    419 
    420   AArch64
    421 
    422      * A new port has been added to support AArch64, the new 64-bit
    423        architecture from ARM. Note that this is a separate port from the
    424        existing 32-bit ARM port.
    425      * The port provides initial support for the Cortex-A53 and the
    426        Cortex-A57 processors with the command line options
    427        -mcpu=cortex-a53 and -mcpu=cortex-a57.
    428 
    429   ARM
    430 
    431      * Initial support has been added for the AArch32 extensions defined
    432        in the ARMv8 architecture.
    433      * Code generation improvements for the Cortex-A7 and Cortex-A15 CPUs.
    434      * A new option, -mcpu=marvell-pj4, has been added to generate code
    435        for the Marvell PJ4 processor.
    436      * The compiler can now automatically generate the VFMA, VFMS, REVSH
    437        and REV16 instructions.
    438      * A new vectorizer cost model for Advanced SIMD configurations to
    439        improve the auto-vectorization strategies used.
    440      * The scheduler now takes into account the number of live registers
    441        to reduce the amount of spilling that can occur. This should
    442        improve code performance in large functions. The limit can be
    443        removed by using the option -fno-sched-pressure.
    444      * Improvements have been made to the Marvell iWMMX code generation
    445        and support for the iWMMX2 SIMD unit has been added. The option
    446        -mcpu=iwmmxt2 can be used to enable code generation for the latter.
    447      * A number of code generation improvements for Thumb2 to reduce code
    448        size when compiling for the M-profile processors.
    449      * The RTEMS (arm-rtems) port has been updated to use the EABI.
    450      * Code generation support for the old FPA and Maverick floating-point
    451        architectures has been removed. Ports that previously relied on
    452        these features have also been removed. This includes the targets:
    453           + arm*-*-linux-gnu (use arm*-*-linux-gnueabi)
    454           + arm*-*-elf (use arm*-*-eabi)
    455           + arm*-*-uclinux* (use arm*-*-uclinux*eabi)
    456           + arm*-*-ecos-elf (no alternative)
    457           + arm*-*-freebsd (no alternative)
    458           + arm*-wince-pe* (no alternative).
    459 
    460   AVR
    461 
    462      * Support for the "Embedded C" fixed-point has been added. For
    463        details, see the [28]GCC wiki and the [29]user manual. The support
    464        is not complete.
    465      * A new print modifier %r for register operands in inline assembler
    466        is supported. It will print the raw register number without the
    467        register prefix 'r':
    468     /* Return the most significant byte of 'val', a 64-bit value.  */
    469 
    470     unsigned char msb (long long val)
    471     {
    472       unsigned char c;
    473       __asm__ ("mov %0, %r1+7" : "=r" (c) : "r" (val));
    474       return c;
    475     }
    476        The inline assembler in this example will generate code like
    477     mov r24, 8+7
    478        provided c is allocated to R24 and val is allocated to R8...R15.
    479        This works because the GNU assembler accepts plain register numbers
    480        without register prefix.
    481      * Static initializers with 3-byte symbols are supported now:
    482     extern const __memx char foo;
    483     const __memx void *pfoo = &foo;
    484        This requires at least Binutils 2.23.
    485 
    486   IA-32/x86-64
    487 
    488      * Allow -mpreferred-stack-boundary=3 for the x86-64 architecture with
    489        SSE extensions disabled. Since the x86-64 ABI requires 16 byte
    490        stack alignment, this is ABI incompatible and intended to be used
    491        in controlled environments where stack space is an important
    492        limitation. This option will lead to wrong code when functions
    493        compiled with 16 byte stack alignment (such as functions from a
    494        standard library) are called with misaligned stack. In this case,
    495        SSE instructions may lead to misaligned memory access traps. In
    496        addition, variable arguments will be handled incorrectly for 16
    497        byte aligned objects (including x87 long double and __int128),
    498        leading to wrong results. You must build all modules with
    499        -mpreferred-stack-boundary=3, including any libraries. This
    500        includes the system libraries and startup modules.
    501      * Support for the new Intel processor codename Broadwell with RDSEED,
    502        ADCX, ADOX, PREFETCHW is available through -madx, -mprfchw,
    503        -mrdseed command-line options.
    504      * Support for the Intel RTM and HLE intrinsics, built-in functions
    505        and code generation is available via -mrtm and -mhle.
    506      * Support for the Intel FXSR, XSAVE and XSAVEOPT instruction sets.
    507        Intrinsics and built-in functions are available via -mfxsr, -mxsave
    508        and -mxsaveopt respectively.
    509      * New -maddress-mode=[short|long] options for x32.
    510        -maddress-mode=short overrides default 64-bit addresses to 32-bit
    511        by emitting the 0x67 address-size override prefix. This is the
    512        default address mode for x32.
    513      * New built-in functions to detect run-time CPU type and ISA:
    514           + A built-in function __builtin_cpu_is has been added to detect
    515             if the run-time CPU is of a particular type. It returns a
    516             positive integer on a match and zero otherwise. It accepts one
    517             string literal argument, the CPU name. For example,
    518             __builtin_cpu_is("westmere") returns a positive integer if the
    519             run-time CPU is an Intel Core i7 Westmere processor. Please
    520             refer to the [30]user manual for the list of valid CPU names
    521             recognized.
    522           + A built-in function __builtin_cpu_supports has been added to
    523             detect if the run-time CPU supports a particular ISA feature.
    524             It returns a positive integer on a match and zero otherwise.
    525             It accepts one string literal argument, the ISA feature. For
    526             example, __builtin_cpu_supports("ssse3") returns a positive
    527             integer if the run-time CPU supports SSSE3 instructions.
    528             Please refer to the [31]user manual for the list of valid ISA
    529             names recognized.
    530        Caveat: If these built-in functions are called before any static
    531        constructors are invoked, like during IFUNC initialization, then
    532        the CPU detection initialization must be explicitly run using this
    533        newly provided built-in function, __builtin_cpu_init. The
    534        initialization needs to be done only once. For example, this is how
    535        the invocation would look like inside an IFUNC initializer:
    536     static void (*some_ifunc_resolver(void))(void)
    537     {
    538       __builtin_cpu_init();
    539       if (__builtin_cpu_is("amdfam10h") ...
    540       if (__builtin_cpu_supports("popcnt") ...
    541     }
    542 
    543      * Function Multiversioning Support with G++:
    544        It is now possible to create multiple function versions each
    545        targeting a specific processor and/or ISA. Function versions have
    546        the same signature but different target attributes. For example,
    547        here is a program with function versions:
    548     __attribute__ ((target ("default")))
    549     int foo(void)
    550     {
    551       return 1;
    552     }
    553 
    554     __attribute__ ((target ("sse4.2")))
    555     int foo(void)
    556     {
    557       return 2;
    558     }
    559 
    560     int main (void)
    561     {
    562       int (*p) = &foo;
    563       assert ((*p)() == foo());
    564       return 0;
    565     }
    566 
    567        Please refer to this [32]wiki for more information.
    568      * The x86 back end has been improved to allow option -fschedule-insns
    569        to work reliably. This option can be used to schedule instructions
    570        better and leads to improved performace in certain cases.
    571      * Windows MinGW-w64 targets (*-w64-mingw*) require at least r5437
    572        from the Mingw-w64 trunk.
    573      * Support for new AMD family 15h processors (Steamroller core) is now
    574        available through the -march=bdver3 and -mtune=bdver3 options.
    575      * Support for new AMD family 16h processors (Jaguar core) is now
    576        available through the -march=btver2 and -mtune=btver2 options.
    577 
    578   FRV
    579 
    580      * This target now supports the -fstack-usage command-line option.
    581 
    582   MIPS
    583 
    584      * GCC can now generate code specifically for the R4700, Broadcom XLP
    585        and MIPS 34kn processors. The associated -march options are
    586        -march=r4700, -march=xlp and -march=34kn respectively.
    587      * GCC now generates better DSP code for MIPS 74k cores thanks to
    588        further scheduling optimizations.
    589      * The MIPS port now supports the -fstack-check option.
    590      * GCC now passes the -mmcu and -mno-mcu options to the assembler.
    591      * Previous versions of GCC would silently accept -fpic and -fPIC for
    592        -mno-abicalls targets like mips*-elf. This combination was not
    593        intended or supported, and did not generate position-independent
    594        code. GCC 4.8 now reports an error when this combination is used.
    595 
    596   PowerPC / PowerPC64 / RS6000
    597 
    598      * SVR4 configurations (GNU/Linux, FreeBSD, NetBSD) no longer save,
    599        restore or update the VRSAVE register by default. The respective
    600        operating systems manage the VRSAVE register directly.
    601      * Large TOC support has been added for AIX through the command line
    602        option -mcmodel=large.
    603      * Native Thread-Local Storage support has been added for AIX.
    604      * VMX (Altivec) and VSX instruction sets now are enabled implicitly
    605        when targetting processors that support those hardware features on
    606        AIX 6.1 and above.
    607 
    608   RX
    609 
    610      * This target will now issue a warning message whenever multiple fast
    611        interrupt handlers are found in the same compilation unit. This
    612        feature can be turned off by the new
    613        -mno-warn-multiple-fast-interrupts command-line option.
    614 
    615   S/390, System z
    616 
    617      * Support for the IBM zEnterprise zEC12 processor has been added.
    618        When using the -march=zEC12 option, the compiler will generate code
    619        making use of the following new instructions:
    620           + load and trap instructions
    621           + 2 new compare and trap instructions
    622           + rotate and insert selected bits - without CC clobber
    623        The -mtune=zEC12 option enables zEC12 specific instruction
    624        scheduling without making use of new instructions.
    625      * Register pressure sensitive instruction scheduling is enabled by
    626        default.
    627      * The ifunc function attribute is enabled by default.
    628      * memcpy and memcmp invokations on big memory chunks or with run time
    629        lengths are not generated inline anymore when tuning for z10 or
    630        higher. The purpose is to make use of the IFUNC optimized versions
    631        in Glibc.
    632 
    633   SH
    634 
    635      * The default alignment settings have been reduced to be less
    636        aggressive. This results in more compact code for optimization
    637        levels other than -Os.
    638      * Improved support for the __atomic built-in functions:
    639           + A new option -matomic-model=model selects the model for the
    640             generated atomic sequences. The following models are
    641             supported:
    642 
    643               soft-gusa
    644                       Software gUSA sequences (SH3* and SH4* only). On
    645                       SH4A targets this will now also partially utilize
    646                       the movco.l and movli.l instructions. This is the
    647                       default when the target is sh3*-*-linux* or
    648                       sh4*-*-linux*.
    649 
    650               hard-llcs
    651                       Hardware movco.l / movli.l sequences (SH4A only).
    652 
    653               soft-tcb
    654                       Software thread control block sequences.
    655 
    656               soft-imask
    657                       Software interrupt flipping sequences (privileged
    658                       mode only). This is the default when the target is
    659                       sh1*-*-linux* or sh2*-*-linux*.
    660 
    661               none
    662                       Generates function calls to the respective __atomic
    663                       built-in functions. This is the default for SH64
    664                       targets or when the target is not sh*-*-linux*.
    665 
    666           + The option -msoft-atomic has been deprecated. It is now an
    667             alias for -matomic-model=soft-gusa.
    668           + A new option -mtas makes the compiler generate the tas.b
    669             instruction for the __atomic_test_and_set built-in function
    670             regardless of the selected atomic model.
    671           + The __sync functions in libgcc now reflect the selected atomic
    672             model when building the toolchain.
    673      * Added support for the mov.b and mov.w instructions with
    674        displacement addressing.
    675      * Added support for the SH2A instructions movu.b and movu.w.
    676      * Various improvements to code generated for integer arithmetic.
    677      * Improvements to conditional branches and code that involves the T
    678        bit. A new option -mzdcbranch tells the compiler to favor
    679        zero-displacement branches. This is enabled by default for SH4*
    680        targets.
    681      * The pref instruction will now be emitted by the __builtin_prefetch
    682        built-in function for SH3* targets.
    683      * The fmac instruction will now be emitted by the fmaf standard
    684        function and the __builtin_fmaf built-in function.
    685      * The -mfused-madd option has been deprecated in favor of the
    686        machine-independent -ffp-contract option. Notice that the fmac
    687        instruction will now be generated by default for expressions like a
    688        * b + c. This is due to the compiler default setting
    689        -ffp-contract=fast.
    690      * Added new options -mfsrra and -mfsca to allow the compiler using
    691        the fsrra and fsca instructions on targets other than SH4A (where
    692        they are already enabled by default).
    693      * Added support for the __builtin_bswap32 built-in function. It is
    694        now expanded as a sequence of swap.b and swap.w instructions
    695        instead of a library function call.
    696      * The behavior of the -mieee option has been fixed and the negative
    697        form -mno-ieee has been added to control the IEEE conformance of
    698        floating point comparisons. By default -mieee is now enabled and
    699        the option -ffinite-math-only implicitly sets -mno-ieee.
    700      * Added support for the built-in functions __builtin_thread_pointer
    701        and __builtin_set_thread_pointer. This assumes that GBR is used to
    702        hold the thread pointer of the current thread. Memory loads and
    703        stores relative to the address returned by __builtin_thread_pointer
    704        will now also utilize GBR based displacement address modes.
    705      * The -mdiv= option for targets other than SHmedia has been fixed and
    706        documented.
    707 
    708   SPARC
    709 
    710      * Added optimized instruction scheduling for Niagara4.
    711 
    712   TILE-Gx
    713 
    714      * Added support for the -mcmodel=MODEL command-line option. The
    715        models supported are small and large.
    716 
    717   V850
    718 
    719      * This target now supports the E3V5 architecture via the use of the
    720        new -mv850e3v5 command-line option. It also has experimental
    721        support for the e3v5 LOOP instruction which can be enabled via the
    722        new -mloop command-line option.
    723 
    724   XStormy16
    725 
    726      * This target now supports the -fstack-usage command-line option.
    727 
    728 Operating Systems
    729 
    730   Windows (Cygwin)
    731 
    732      * Executables are now linked against shared libgcc by default. The
    733        previous default was to link statically, which can still be done by
    734        explicitly specifying -static or static-libgcc on the command line.
    735        However it is strongly advised against, as it will cause problems
    736        for any application that makes use of DLLs compiled by GCC. It
    737        should be alright for a monolithic stand-alone application that
    738        only links against the Windows DLLs, but offers little or no
    739        benefit.
    740 
    741 GCC 4.8.1
    742 
    743    This is the [33]list of problem reports (PRs) from GCC's bug tracking
    744    system that are known to be fixed in the 4.8.1 release. This list might
    745    not be complete (that is, it is possible that some PRs that have been
    746    fixed are not listed here).
    747 
    748    The C++11 <chrono> std::chrono::system_clock and
    749    std::chrono::steady_clock classes have changed ABI in GCC 4.8.1, they
    750    both are now separate (never typedefs of each other), both use
    751    std::chrono::nanoseconds resolution, on most GNU/Linux configurations
    752    std::chrono::steady_clock is now finally monotonic, and both classes
    753    are mangled differently than in the previous GCC releases.
    754    std::chrono::system_clock::now() with std::chrono::microseconds resp.
    755    std::chrono::seconds resolution is still exported for backwards
    756    compatibility with default configured libstdc++. Note that libstdc++
    757    configured with --enable-libstdcxx-time= used to be ABI incompatible
    758    with default configured libstdc++ for those two classes and no ABI
    759    compatibility can be offered for those configurations, so any C++11
    760    code that uses those classes and has been compiled and linked against
    761    libstdc++ configured with the non-default --enable-libstdcxx-time=
    762    configuration option needs to be recompiled.
    763 
    764 GCC 4.8.2
    765 
    766    This is the [34]list of problem reports (PRs) from GCC's bug tracking
    767    system that are known to be fixed in the 4.8.2 release. This list might
    768    not be complete (that is, it is possible that some PRs that have been
    769    fixed are not listed here).
    770 
    771 GCC 4.8.3
    772 
    773    This is the [35]list of problem reports (PRs) from GCC's bug tracking
    774    system that are known to be fixed in the 4.8.3 release. This list might
    775    not be complete (that is, it is possible that some PRs that have been
    776    fixed are not listed here).
    777 
    778    Support for the new powerpc64le-linux platform has been added. It
    779    defaults to generating code that conforms to the ELFV2 ABI.
    780 
    781 
    782     For questions related to the use of GCC, please consult these web
    783     pages and the [36]GCC manuals. If that fails, the
    784     [37]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
    785     web pages and the development of GCC are welcome on our developer
    786     list at [38]gcc (a] gcc.gnu.org. All of [39]our lists have public
    787     archives.
    788 
    789    Copyright (C) [40]Free Software Foundation, Inc. Verbatim copying and
    790    distribution of this entire article is permitted in any medium,
    791    provided this notice is preserved.
    792 
    793    These pages are [41]maintained by the GCC team. Last modified
    794    2014-05-22[42].
    795 
    796 References
    797 
    798    1. http://gcc.gnu.org/wiki/cxx-conversion
    799    2. ftp://gcc.gnu.org/pub/gcc/infrastructure/
    800    3. http://www.nongnu.org/avr-libc/
    801    4. http://gcc.gnu.org/PR54461
    802    5. http://gcc.gnu.org/gcc-4.8/porting_to.html
    803    6. https://code.google.com/p/address-sanitizer/
    804    7. https://code.google.com/p/data-race-test/wiki/ThreadSanitizer
    805    8. https://lkml.org/lkml/2006/11/28/239
    806    9. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
    807   10. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
    808   11. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
    809   12. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf
    810   13. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
    811   14. http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3386.html
    812   15. http://gcc.gnu.org/projects/cxx1y.html
    813   16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011
    814   17. http://gcc.gnu.org/onlinedocs/gfortran/BACKTRACE.html
    815   18. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
    816   19. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
    817   20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
    818   21. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
    819   22. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
    820   23. http://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html
    821   24. http://gcc.gnu.org/wiki/Fortran2003Status
    822   25. http://gcc.gnu.org/wiki/TS29113Status
    823   26. http://gcc.gnu.org/viewcvs/trunk/libgfortran/libgfortran.h?content-type=text%2Fplain&view=co
    824   27. http://chasm-interop.sourceforge.net/
    825   28. http://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
    826   29. http://gcc.gnu.org/onlinedocs/gcc/Fixed-Point.html
    827   30. http://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html#X86-Built-in-Functions
    828   31. http://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html#X86-Built-in-Functions
    829   32. http://gcc.gnu.org/wiki/FunctionMultiVersioning
    830   33. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.1
    831   34. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.2
    832   35. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.3
    833   36. http://gcc.gnu.org/onlinedocs/
    834   37. mailto:gcc-help (a] gcc.gnu.org
    835   38. mailto:gcc (a] gcc.gnu.org
    836   39. http://gcc.gnu.org/lists.html
    837   40. http://www.fsf.org/
    838   41. http://gcc.gnu.org/about.html
    839   42. http://validator.w3.org/check/referer
    840 ======================================================================
    841 http://gcc.gnu.org/gcc-4.7/index.html
    842 
    843                              GCC 4.7 Release Series
    844 
    845    April 11, 2013
    846 
    847    The [1]GNU project and the GCC developers are pleased to announce the
    848    release of GCC 4.7.3.
    849 
    850    This release is a bug-fix release, containing fixes for regressions in
    851    GCC 4.7.2 relative to previous releases of GCC.
    852 
    853 Release History
    854 
    855    GCC 4.7.3
    856           April 11, 2013 ([2]changes, [3]documentation)
    857 
    858    GCC 4.7.2
    859           September 20, 2012 ([4]changes, [5]documentation)
    860 
    861    GCC 4.7.1
    862           June 14, 2012 ([6]changes, [7]documentation)
    863 
    864    GCC 4.7.0
    865           March 22, 2012 ([8]changes, [9]documentation)
    866 
    867 References and Acknowledgements
    868 
    869    GCC used to stand for the GNU C Compiler, but since the compiler
    870    supports several other languages aside from C, it now stands for the
    871    GNU Compiler Collection.
    872 
    873    A list of [10]successful builds is updated as new information becomes
    874    available.
    875 
    876    The GCC developers would like to thank the numerous people that have
    877    contributed new features, improvements, bug fixes, and other changes as
    878    well as test results to GCC. This [11]amazing group of volunteers is
    879    what makes GCC successful.
    880 
    881    For additional information about GCC please refer to the [12]GCC
    882    project web site or contact the [13]GCC development mailing list.
    883 
    884    To obtain GCC please use [14]our mirror sites or [15]our SVN server.
    885 
    886 
    887     For questions related to the use of GCC, please consult these web
    888     pages and the [16]GCC manuals. If that fails, the
    889     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
    890     web pages and the development of GCC are welcome on our developer
    891     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
    892     archives.
    893 
    894    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
    895    distribution of this entire article is permitted in any medium,
    896    provided this notice is preserved.
    897 
    898    These pages are [21]maintained by the GCC team. Last modified
    899    2013-04-11[22].
    900 
    901 References
    902 
    903    1. http://www.gnu.org/
    904    2. http://gcc.gnu.org/gcc-4.7/changes.html
    905    3. http://gcc.gnu.org/onlinedocs/4.7.3/
    906    4. http://gcc.gnu.org/gcc-4.7/changes.html
    907    5. http://gcc.gnu.org/onlinedocs/4.7.2/
    908    6. http://gcc.gnu.org/gcc-4.7/changes.html
    909    7. http://gcc.gnu.org/onlinedocs/4.7.1/
    910    8. http://gcc.gnu.org/gcc-4.7/changes.html
    911    9. http://gcc.gnu.org/onlinedocs/4.7.0/
    912   10. http://gcc.gnu.org/gcc-4.7/buildstat.html
    913   11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
    914   12. http://gcc.gnu.org/index.html
    915   13. mailto:gcc (a] gcc.gnu.org
    916   14. http://gcc.gnu.org/mirrors.html
    917   15. http://gcc.gnu.org/svn.html
    918   16. http://gcc.gnu.org/onlinedocs/
    919   17. mailto:gcc-help (a] gcc.gnu.org
    920   18. mailto:gcc (a] gcc.gnu.org
    921   19. http://gcc.gnu.org/lists.html
    922   20. http://www.fsf.org/
    923   21. http://gcc.gnu.org/about.html
    924   22. http://validator.w3.org/check/referer
    925 ======================================================================
    926 http://gcc.gnu.org/gcc-4.7/changes.html
    927 
    928                              GCC 4.7 Release Series
    929                         Changes, New Features, and Fixes
    930 
    931 Caveats
    932 
    933      * The -fconserve-space flag has been deprecated. The flag had no
    934        effect for most targets: only targets without a global .bss section
    935        and without support for switchable sections. Furthermore, the flag
    936        only had an effect for G++, where it could result in wrong
    937        semantics (please refer to the GCC manual for further details). The
    938        flag will be removed in GCC 4.8
    939      * Support for a number of older systems and recently unmaintained or
    940        untested target ports of GCC has been declared obsolete in GCC 4.7.
    941        Unless there is activity to revive them, the next release of GCC
    942        will have their sources permanently removed.
    943        All GCC ports for the following processor architectures have been
    944        declared obsolete:
    945           + picoChip (picochip-*)
    946        The following ports for individual systems on particular
    947        architectures have been obsoleted:
    948           + IRIX 6.5 (mips-sgi-irix6.5)
    949           + MIPS OpenBSD (mips*-*-openbsd*)
    950           + Solaris 8 (*-*-solaris2.8). Details can be found in the
    951             [1]announcement.
    952           + Tru64 UNIX V5.1 (alpha*-dec-osf5.1*)
    953      * On ARM, when compiling for ARMv6 (but not ARMv6-M), ARMv7-A,
    954        ARMv7-R, or ARMv7-M, the new option -munaligned-access is active by
    955        default, which for some sources generates code that accesses memory
    956        on unaligned addresses. This requires the kernel of those systems
    957        to enable such accesses (controlled by CP15 register c1, refer to
    958        ARM documentation). Alternatively, or for compatibility with
    959        kernels where unaligned accesses are not supported, all code has to
    960        be compiled with -mno-unaligned-access. Upstream Linux kernel
    961        releases have automatically and unconditionally supported unaligned
    962        accesses as emitted by GCC due to this option being active since
    963        version 2.6.28.
    964      * Support on ARM for the legacy floating-point accelerator (FPA) and
    965        the mixed-endian floating-point format that it used has been
    966        obsoleted. The ports that still use this format have been obsoleted
    967        as well. Many legacy ARM ports already provide an alternative that
    968        uses the VFP floating-point format. The obsolete ports will be
    969        deleted in the next release.
    970        The obsolete ports with alternatives are:
    971           + arm*-*-rtems (use arm*-*-rtemseabi)
    972           + arm*-*-linux-gnu (use arm*-*-linux-gnueabi)
    973           + arm*-*-elf (use arm*-*-eabi)
    974           + arm*-*-uclinux* (use arm*-*-uclinux*eabi)
    975        Note, however, that these alternatives are not binary compatible
    976        with their legacy counterparts (although some can support running
    977        legacy applications).
    978        The obsolete ports that currently lack a modern alternative are:
    979           + arm*-*-ecos-elf
    980           + arm*-*-freebsd
    981           + arm*-wince-pe*
    982        New ports that support more recent versions of the architecture are
    983        welcome.
    984      * Support for the Maverick co-processor on ARM has been obsoleted.
    985        Code to support it will be deleted in the next release.
    986      * Support has been removed for Unix International threads on Solaris
    987        2, so the --enable-threads=solaris configure option and the
    988        -threads compiler option don't work any longer.
    989      * Support has been removed for the Solaris BSD Compatibility Package,
    990        which lives in /usr/ucbinclude and /usr/ucblib. It has been removed
    991        from Solaris 11, and was only intended as a migration aid from
    992        SunOS 4 to SunOS 5. The -compat-bsd compiler option is not
    993        recognized any longer.
    994      * The AVR port's libgcc has been improved and its multilib structure
    995        has been enhanced. As a result, all objects contributing to an
    996        application must either be compiled with GCC versions up to 4.6.x
    997        or with GCC versions 4.7.1 or later. If the compiler is used with
    998        AVR Libc, you need a version that supports the new layout, i.e.
    999        implements [2]#35407.
   1000      * The AVR port's -mshort-calls command-line option has been
   1001        deprecated. It will be removed in the GCC 4.8 release. See -mrelax
   1002        for a replacement.
   1003      * The AVR port only references startup code that clears .bss and the
   1004        common section resp. initializes the .data and .rodata section
   1005        provided respective sections (or subsections thereof) are not
   1006        empty, see [3]PR18145. Applications that put all static storage
   1007        objects into non-standard sections and / or define all static
   1008        storage objects in assembler modules, must reference __do_clear_bss
   1009        resp. __do_copy_data by hand or undefine the symbol(s) by means of
   1010        -Wl,-u,__do_clear_bss resp. -Wl,-u,__do_copy_data.
   1011      * The ARM port's -mwords-little-endian option has been deprecated. It
   1012        will be removed in a future release.
   1013      * Support has been removed for the NetWare x86 configuration
   1014        obsoleted in GCC 4.6.
   1015      * It is no longer possible to use the "l" constraint in MIPS16 asm
   1016        statements.
   1017      * GCC versions 4.7.0 and 4.7.1 had changes to the C++ standard
   1018        library which affected the ABI in C++11 mode: a data member was
   1019        added to std::list changing its size and altering the definitions
   1020        of some member functions, and std::pair's move constructor was
   1021        non-trivial which altered the calling convention for functions with
   1022        std::pair arguments or return types. The ABI incompatibilities have
   1023        been fixed for GCC version 4.7.2 but as a result C++11 code
   1024        compiled with GCC 4.7.0 or 4.7.1 may be incompatible with C++11
   1025        code compiled with different GCC versions and with C++98/C++03 code
   1026        compiled with any version.
   1027      * On ARM, a bug has been fixed in GCC's implementation of the AAPCS
   1028        rules for the layout of vectors that could lead to wrong code being
   1029        generated. Vectors larger than 8 bytes in size are now by default
   1030        aligned to an 8-byte boundary. This is an ABI change: code that
   1031        makes explicit use of vector types may be incompatible with binary
   1032        objects built with older versions of GCC. Auto-vectorized code is
   1033        not affected by this change. (This change affects GCC versions
   1034        4.7.2 and later.)
   1035      * More information on porting to GCC 4.7 from previous versions of
   1036        GCC can be found in the [4]porting guide for this release.
   1037 
   1038 General Optimizer Improvements
   1039 
   1040      * Support for a new parameter --param case-values-threshold=n was
   1041        added to allow users to control the cutoff between doing switch
   1042        statements as a series of if statements and using a jump table.
   1043      * Link-time optimization (LTO) improvements:
   1044           + Improved scalability and reduced memory usage. Link time
   1045             optimization of Firefox now requires 3GB of RAM on a 64-bit
   1046             system, while over 8GB was needed previously. Linking time has
   1047             been improved, too. The serial stage of linking Firefox has
   1048             been sped up by about a factor of 10.
   1049           + Reduced size of object files and temporary storage used during
   1050             linking.
   1051           + Streaming performance (both outbound and inbound) has been
   1052             improved.
   1053           + ld -r is now supported with LTO.
   1054           + Several bug fixes, especially in symbol table handling and
   1055             merging.
   1056      * Interprocedural optimization improvements:
   1057           + Heuristics now take into account that after inlining code will
   1058             be optimized out because of known values (or properties) of
   1059             function parameters. For example:
   1060 void foo(int a)
   1061 {
   1062   if (a > 10)
   1063     ... huge code ...
   1064 }
   1065 void bar (void)
   1066 {
   1067   foo (0);
   1068 }
   1069 
   1070             The call of foo will be inlined into bar even when optimizing
   1071             for code size. Constructs based on __builtin_constant_p are
   1072             now understood by the inliner and code size estimates are
   1073             evaluated a lot more realistically.
   1074           + The representation of C++ virtual thunks and aliases (both
   1075             implicit and defined via the alias attribute) has been
   1076             re-engineered. Aliases no longer pose optimization barriers
   1077             and calls to an alias can be inlined and otherwise optimized.
   1078           + The inter-procedural constant propagation pass has been
   1079             rewritten. It now performs generic function specialization.
   1080             For example when compiling the following:
   1081 void foo(bool flag)
   1082 {
   1083   if (flag)
   1084     ... do something ...
   1085   else
   1086     ... do something else ...
   1087 }
   1088 void bar (void)
   1089 {
   1090   foo (false);
   1091   foo (true);
   1092   foo (false);
   1093   foo (true);
   1094   foo (false);
   1095   foo (true);
   1096 }
   1097 
   1098             GCC will now produce two copies of foo. One with flag being
   1099             true, while other with flag being false. This leads to
   1100             performance improvements previously possible only by inlining
   1101             all calls. Cloning causes a lot less code size growth.
   1102      * A string length optimization pass has been added. It attempts to
   1103        track string lengths and optimize various standard C string
   1104        functions like strlen, strchr, strcpy, strcat, stpcpy and their
   1105        _FORTIFY_SOURCE counterparts into faster alternatives. This pass is
   1106        enabled by default at -O2 or above, unless optimizing for size, and
   1107        can be disabled by the -fno-optimize-strlen option. The pass can
   1108        e.g. optimize
   1109 char *bar (const char *a)
   1110 {
   1111   size_t l = strlen (a) + 2;
   1112   char *p = malloc (l); if (p == NULL) return p;
   1113   strcpy (p, a); strcat (p, "/"); return p;
   1114 }
   1115 
   1116        into:
   1117 char *bar (const char *a)
   1118 {
   1119   size_t tmp = strlen (a);
   1120   char *p = malloc (tmp + 2); if (p == NULL) return p;
   1121   memcpy (p, a, tmp); memcpy (p + tmp, "/", 2); return p;
   1122 }
   1123 
   1124        or for hosted compilations where stpcpy is available in the runtime
   1125        and headers provide its prototype, e.g.
   1126 void foo (char *a, const char *b, const char *c, const char *d)
   1127 {
   1128   strcpy (a, b); strcat (a, c); strcat (a, d);
   1129 }
   1130 
   1131        can be optimized into:
   1132 void foo (char *a, const char *b, const char *c, const char *d)
   1133 {
   1134   strcpy (stpcpy (stpcpy (a, b), c), d);
   1135 }
   1136 
   1137 New Languages and Language specific improvements
   1138 
   1139      * Version 3.1 of the [5]OpenMP specification is now supported for the
   1140        C, C++, and Fortran compilers.
   1141 
   1142   Ada
   1143 
   1144      * The command-line option -feliminate-unused-debug-types has been
   1145        re-enabled by default, as it is for the other languages, leading to
   1146        a reduction in debug info size of 12.5% and more for relevant
   1147        cases, as well as to a small compilation speedup.
   1148 
   1149   C family
   1150 
   1151      * A new built-in, __builtin_assume_aligned, has been added, through
   1152        which the compiler can be hinted about pointer alignment and can
   1153        use it to improve generated code.
   1154      * A new warning option -Wunused-local-typedefs was added for C, C++,
   1155        Objective-C and Objective-C++. This warning diagnoses typedefs
   1156        locally defined in a function, and otherwise not used.
   1157      * A new experimental command-line option -ftrack-macro-expansion was
   1158        added for C, C++, Objective-C, Objective-C++ and Fortran. It allows
   1159        the compiler to emit diagnostic about the current macro expansion
   1160        stack when a compilation error occurs in a macro expansion.
   1161      * Experimental support for transactional memory has been added. It
   1162        includes support in the compiler, as well as a supporting runtime
   1163        library called libitm. To compile code with transactional memory
   1164        constructs, use the -fgnu-tm option.
   1165        Support is currently available for Alpha, ARM, PowerPC, SH, SPARC,
   1166        and 32-bit/64-bit x86 platforms.
   1167        For more details on transactional memory see [6]the GCC WiKi.
   1168      * Support for atomic operations specifying the C++11/C11 memory model
   1169        has been added. These new __atomic routines replace the existing
   1170        __sync built-in routines.
   1171        Atomic support is also available for memory blocks. Lock-free
   1172        instructions will be used if a memory block is the same size and
   1173        alignment as a supported integer type. Atomic operations which do
   1174        not have lock-free support are left as function calls. A set of
   1175        library functions is available on the GCC atomic wiki in the
   1176        "External Atomics Library" section.
   1177        For more details on the memory models and features, see the
   1178        [7]atomic wiki.
   1179      * When a binary operation is performed on vector types and one of the
   1180        operands is a uniform vector, it is possible to replace the vector
   1181        with the generating element. For example:
   1182 typedef int v4si __attribute__ ((vector_size (16)));
   1183 v4si res, a = {1,2,3,4};
   1184 int x;
   1185 
   1186 res = 2 + a;  /* means {2,2,2,2} + a  */
   1187 res = a - x;  /* means a - {x,x,x,x}  */
   1188 
   1189   C
   1190 
   1191      * There is support for some more features from the C11 revision of
   1192        the ISO C standard. GCC now accepts the options -std=c11 and
   1193        -std=gnu11, in addition to the previous -std=c1x and -std=gnu1x.
   1194           + Unicode strings (previously supported only with options such
   1195             as -std=gnu11, now supported with -std=c11), and the
   1196             predefined macros __STDC_UTF_16__ and __STDC_UTF_32__.
   1197           + Nonreturning functions (_Noreturn and <stdnoreturn.h>).
   1198           + Alignment support (_Alignas, _Alignof, max_align_t,
   1199             <stdalign.h>).
   1200           + A built-in function __builtin_complex is provided to support C
   1201             library implementation of the CMPLX family of macros.
   1202 
   1203   C++
   1204 
   1205      * G++ now accepts the -std=c++11, -std=gnu++11, and -Wc++11-compat
   1206        options, which are equivalent to -std=c++0x, -std=gnu++0x, and
   1207        -Wc++0x-compat, respectively.
   1208      * G++ now implements [8]C++11 extended friend syntax:
   1209 
   1210 template<class W>
   1211 class Q
   1212 {
   1213   static const int I = 2;
   1214 public:
   1215   friend W;
   1216 };
   1217 
   1218 struct B
   1219 {
   1220   int ar[Q<B>::I];
   1221 };
   1222 
   1223      * Thanks to Ville Voutilainen, G++ now implements [9]C++11 explicit
   1224        override control.
   1225 
   1226 struct B {
   1227   virtual void f() const final;
   1228   virtual void f(int);
   1229 };
   1230 
   1231 struct D : B {
   1232   void f() const;            // error: D::f attempts to override final B::f
   1233   void f(long) override;     // error: doesn't override anything
   1234   void f(int) override;      // ok
   1235 };
   1236 
   1237 struct E final { };
   1238 struct F: E { }; // error: deriving from final class
   1239 
   1240      * G++ now implements [10]C++11 non-static data member initializers.
   1241 
   1242 struct A {
   1243   int i = 42;
   1244 } a; // initializes a.i to 42
   1245 
   1246      * Thanks to Ed Smith-Rowland, G++ now implements [11]C++11
   1247        user-defined literals.
   1248 
   1249 // Not actually a good approximation.  :)
   1250 constexpr long double operator"" _degrees (long double d) { return d * 0.0175; }
   1251 long double pi = 180.0_degrees;
   1252 
   1253      * G++ now implements [12]C++11 alias-declarations.
   1254 
   1255 template <class T> using Ptr = T*;
   1256 Ptr<int> ip;  // decltype(ip) is int*
   1257 
   1258      * Thanks to Ville Voutilainen and Pedro Lamarao, G++ now implements
   1259        [13]C++11 delegating constructors.
   1260 
   1261 struct A {
   1262   A(int);
   1263   A(): A(42) { } // delegate to the A(int) constructor
   1264 };
   1265 
   1266      * G++ now fully implements C++11 atomic classes rather than just
   1267        integer derived classes.
   1268 
   1269 class POD {
   1270   int a;
   1271   int b;
   1272 };
   1273 std::atomic<POD> my_atomic_POD;
   1274 
   1275      * G++ now sets the predefined macro __cplusplus to the correct value,
   1276        199711L for C++98/03, and 201103L for C++11.
   1277      * G++ now correctly implements the two-phase lookup rules such that
   1278        an unqualified name used in a template must have an appropriate
   1279        declaration found either in scope at the point of definition of the
   1280        template or by argument-dependent lookup at the point of
   1281        instantiation. As a result, code that relies on a second
   1282        unqualified lookup at the point of instantiation to find functions
   1283        declared after the template or in dependent bases will be rejected.
   1284        The compiler will suggest ways to fix affected code, and using the
   1285        -fpermissive compiler flag will allow the code to compile with a
   1286        warning.
   1287 
   1288 template <class T>
   1289 void f() { g(T()); } // error, g(int) not found by argument-dependent lookup
   1290 void g(int) { } // fix by moving this declaration before the declaration of f
   1291 
   1292 template <class T>
   1293 struct A: T {
   1294   // error, B::g(B) not found by argument-dependent lookup
   1295   void f() { g(T()); } // fix by using this->g or A::g
   1296 };
   1297 
   1298 struct B { void g(B); };
   1299 
   1300 int main()
   1301 {
   1302   f<int>();
   1303   A<B>().f();
   1304 }
   1305 
   1306      * G++ now properly re-uses stack space allocated for temporary
   1307        objects when their lifetime ends, which can significantly lower
   1308        stack consumption for some C++ functions. As a result of this, some
   1309        code with undefined behavior will now break:
   1310 
   1311 const int &f(const int &i) { return i; }
   1312 ....
   1313 const int &x = f(1);
   1314 const int &y = f(2);
   1315 
   1316        Here, x refers to the temporary allocated to hold the 1 argument,
   1317        which only lives until the end of the initialization; it
   1318        immediately becomes a dangling reference. So the next statement
   1319        re-uses the stack slot to hold the 2 argument, and users of x get
   1320        that value instead.
   1321        Note that this should not cause any change of behavior for
   1322        temporaries of types with non-trivial destructors, as they are
   1323        already destroyed at end of full-expression; the change is that now
   1324        the storage is released as well.
   1325      * A new command-line option -Wdelete-non-virtual-dtor has been added
   1326        to warn when delete is used to destroy an instance of a class which
   1327        has virtual functions and non-virtual destructor. It is unsafe to
   1328        delete an instance of a derived class through a pointer to a base
   1329        class if the base class does not have a virtual destructor. This
   1330        warning is enabled by -Wall.
   1331      * A new command-line option -Wzero-as-null-pointer-constant has been
   1332        added to warn when a literal '0' is used as null pointer constant.
   1333        It can be useful to facilitate the conversion to nullptr in C++11.
   1334      * As per C++98, access-declarations are now deprecated by G++.
   1335        Using-declarations are to be used instead. Furthermore, some
   1336        efforts have been made to improve the support of class scope
   1337        using-declarations. In particular, using-declarations referring to
   1338        a dependent type now work as expected ([14]bug c++/14258).
   1339      * The ELF symbol visibility of a template instantiation is now
   1340        properly constrained by the visibility of its template arguments
   1341        ([15]bug c++/35688).
   1342 
   1343     Runtime Library (libstdc++)
   1344 
   1345      * [16]Improved experimental support for the new ISO C++ standard,
   1346        C++11, including:
   1347           + using noexcept in most of the library;
   1348           + implementations of pointer_traits, allocator_traits and
   1349             scoped_allocator_adaptor;
   1350           + uses-allocator construction for tuple;
   1351           + vector meets the allocator-aware container requirements;
   1352           + replacing monotonic_clock with steady_clock;
   1353           + enabling the thread support library on most POSIX targets;
   1354           + many small improvements to conform to the FDIS.
   1355      * Added --enable-clocale=newlib configure option.
   1356      * Debug Mode iterators for unordered associative containers.
   1357      * Avoid polluting the global namespace and do not include <unistd.h>.
   1358 
   1359   Fortran
   1360 
   1361      * The compile flag [17]-fstack-arrays has been added, which causes
   1362        all local arrays to be put on stack memory. For some programs this
   1363        will improve the performance significantly. If your program uses
   1364        very large local arrays, it is possible that you will have to
   1365        extend your runtime limits for stack memory.
   1366      * The [18]-Ofast flag now also implies [19]-fno-protect-parens and
   1367        [20]-fstack-arrays.
   1368      * Front-end optimizations can now be selected by the
   1369        [21]-ffrontend-optimize option and deselected by the
   1370        -fno-frontend-optimize option.
   1371      * When front-end optimization removes a function call,
   1372        [22]-Wfunction-elimination warns about that.
   1373      * When performing front-end-optimization, the
   1374        [23]-faggressive-function-elimination option allows the removal of
   1375        duplicate function calls even for impure functions.
   1376      * The flag [24]-Wreal-q-constant has been added, which warns if
   1377        floating-point literals have been specified using q (such as
   1378        1.0q0); the q marker is now supported as a vendor extension to
   1379        denote quad precision (REAL(16) or, if not available, REAL(10)).
   1380        Consider using a kind parameter (such as in 1.0_qp) instead, which
   1381        can be obtained via [25]SELECTED_REAL_KIND.
   1382      * The GFORTRAN_USE_STDERR environment variable has been removed. GNU
   1383        Fortran now always prints error messages to standard error. If you
   1384        wish to redirect standard error, please consult the manual for your
   1385        OS, shell, batch environment etc. as appropriate.
   1386      * The -fdump-core option and GFORTRAN_ERROR_DUMPCORE environment
   1387        variable have been removed. When encountering a serious error,
   1388        gfortran will now always abort the program. Whether a core dump is
   1389        generated depends on the user environment settings; see the ulimit
   1390        -c setting for POSIX shells, limit coredumpsize for C shells, and
   1391        the [26]WER user-mode dumps settings on Windows.
   1392      * The [27]-fbacktrace option is now enabled by default. When
   1393        encountering a fatal error, gfortran will attempt to print a
   1394        backtrace to standard error before aborting. It can be disabled
   1395        with -fno-backtrace. Note: On POSIX targets with the addr2line
   1396        utility from GNU binutils, GNU Fortran can print a backtrace with
   1397        function name, file name, line number information in addition to
   1398        the addresses; otherwise only the addresses are printed.
   1399      * [28]Fortran 2003:
   1400           + Generic interface names which have the same name as derived
   1401             types are now supported, which allows to write constructor
   1402             functions. Note that Fortran does not support static
   1403             constructor functions; only default initialization or an
   1404             explicit structure-constructor initialization are available.
   1405           + [29]Polymorphic (class) arrays are now supported.
   1406      * [30]Fortran 2008:
   1407           + Support for the DO CONCURRENT construct has been added, which
   1408             allows the user to specify that individual loop iterations
   1409             have no interdependencies.
   1410           + [31]Coarrays: Full single-image support except for polymorphic
   1411             coarrays. Additionally, preliminary support for multiple
   1412             images via an MPI-based [32]coarray communication library has
   1413             been added. Note: The library version is not yet usable as
   1414             remote coarray access is not yet possible.
   1415      * [33]TS 29113:
   1416           + New flag [34]-std=f2008ts permits programs that are expected
   1417             to conform to the Fortran 2008 standard and the draft
   1418             Technical Specification (TS) 29113 on Further Interoperability
   1419             of Fortran with C.
   1420           + The OPTIONAL attribute is now allowed for dummy arguments of
   1421             BIND(C) procedures.
   1422           + The RANK intrinsic has been added.
   1423           + The implementation of the ASYNCHRONOUS attribute in GCC is
   1424             compatible with the candidate draft of TS 29113 (since GCC
   1425             4.6).
   1426 
   1427   Go
   1428 
   1429      * GCC 4.7 implements the [35]Go 1 language standard. The library
   1430        support in 4.7.0 is not quite complete, due to release timing.
   1431        Release 4.7.1 includes complete support for Go 1. The Go library is
   1432        from the Go 1.0.1 release.
   1433      * Go has been tested on GNU/Linux and Solaris platforms. It may work
   1434        on other platforms as well.
   1435 
   1436 New Targets and Target Specific Improvements
   1437 
   1438   ARM
   1439 
   1440      * GCC now supports the Cortex-A7 processor implementing the v7-a
   1441        version of the architecture using the option -mcpu=cortex-a7.
   1442      * The default vector size in auto-vectorization for NEON is now 128
   1443        bits. If vectorization fails thusly, the vectorizer tries again
   1444        with 64-bit vectors.
   1445      * A new option -mvectorize-with-neon-double was added to allow users
   1446        to change the vector size to 64 bits.
   1447 
   1448   AVR
   1449 
   1450      * GCC now supports the XMEGA architecture. This requires GNU binutils
   1451        2.22 or later.
   1452      * Support for the [36]named address spaces __flash, __flash1, ...,
   1453        __flash5 and __memx has been added. These address spaces locate
   1454        read-only data in flash memory and allow reading from flash memory
   1455        by means of ordinary C code, i.e. without the need of (inline)
   1456        assembler code:
   1457 
   1458 const __flash int values[] = { 42, 31 };
   1459 
   1460 int add_values (const __flash int *p, int i)
   1461 {
   1462     return values[i] + *p;
   1463 }
   1464 
   1465      * Support has been added for the AVR-specific configure option
   1466        --with-avrlibc=yes in order to arrange for better integration of
   1467        [37]AVR-Libc. This configure option is supported in avr-gcc 4.7.2
   1468        and newer and will only take effect in non-RTEMS configurations. If
   1469        avr-gcc is configured for RTEMS, the option will be ignored which
   1470        is the same as specifying --with-avrlibc=no. See [38]PR54461 for
   1471        more technical details.
   1472      * Support for AVR-specific [39]built-in functions has been added.
   1473      * Support has been added for the signed and unsigned 24-bit scalar
   1474        integer types __int24 and __uint24.
   1475      * New command-line options -maccumulate-args, -mbranch-cost=cost and
   1476        -mstrict-X were added to allow better fine-tuning of code
   1477        optimization.
   1478      * The command option -fdata-sections now also takes affect on the
   1479        section names of variables with the progmem attribute.
   1480      * A new inline assembler print modifier %i to print a RAM address as
   1481        I/O address has been added:
   1482 
   1483 #include <avr/io.h> /* Port Definitions from AVR-LibC */
   1484 
   1485 void set_portb (uint8_t value)
   1486 {
   1487     asm volatile ("out %i0, %1" :: "n" (&PORTB), "r" (value) : "memory");
   1488 }
   1489 
   1490        The offset between an I/O address and the RAM address for that I/O
   1491        location is device-specific. This offset is taken into account when
   1492        printing a RAM address with the %i modifier so that the address is
   1493        suitable to be used as operand in an I/O command. The address must
   1494        be a constant integer known at compile time.
   1495      * The inline assembler constraint "R" to represent integers in the
   1496        range -6 ... 5 has been removed without replacement.
   1497      * Many optimizations to:
   1498           + 64-bit integer arithmetic
   1499           + Widening multiplication
   1500           + Integer division by a constant
   1501           + Avoid constant reloading in multi-byte instructions.
   1502           + Micro-optimizations for special instruction sequences.
   1503           + Generic built-in functions like __builtin_ffs*,
   1504             __builtin_clz*, etc.
   1505           + If-else decision trees generated by switch instructions
   1506           + Merging of data located in flash memory
   1507           + New libgcc variants for devices with 8-bit wide stack pointer
   1508           + ...
   1509      * Better documentation:
   1510           + Handling of EIND and indirect jumps on devices with more than
   1511             128 KiB of program memory.
   1512           + Handling of the RAMPD, RAMPX, RAMPY and RAMPZ special function
   1513             registers.
   1514           + Function attributes OS_main and OS_task.
   1515           + AVR-specific built-in macros.
   1516 
   1517   C6X
   1518 
   1519      * Support has been added for the Texas Instruments C6X family of
   1520        processors.
   1521 
   1522   CR16
   1523 
   1524      * Support has been added for National Semiconductor's CR16
   1525        architecture.
   1526 
   1527   Epiphany
   1528 
   1529      * Support has been added for Adapteva's Epiphany architecture.
   1530 
   1531   IA-32/x86-64
   1532 
   1533      * Support for Intel AVX2 intrinsics, built-in functions and code
   1534        generation is available via -mavx2.
   1535      * Support for Intel BMI2 intrinsics, built-in functions and code
   1536        generation is available via -mbmi2.
   1537      * Implementation and automatic generation of __builtin_clz* using the
   1538        lzcnt instruction is available via -mlzcnt.
   1539      * Support for Intel FMA3 intrinsics and code generation is available
   1540        via -mfma.
   1541      * A new -mfsgsbase command-line option is available that makes GCC
   1542        generate new segment register read/write instructions through
   1543        dedicated built-ins.
   1544      * Support for the new Intel rdrnd instruction is available via
   1545        -mrdrnd.
   1546      * Two additional AVX vector conversion instructions are available via
   1547        -mf16c.
   1548      * Support for new Intel processor codename IvyBridge with RDRND,
   1549        FSGSBASE and F16C is available through -march=core-avx-i.
   1550      * Support for the new Intel processor codename Haswell with AVX2,
   1551        FMA, BMI, BMI2, LZCNT is available through -march=core-avx2.
   1552      * Support for new AMD family 15h processors (Piledriver core) is now
   1553        available through -march=bdver2 and -mtune=bdver2 options.
   1554      * Support for [40]the x32 psABI is now available through the -mx32
   1555        option.
   1556      * Windows mingw targets are using the -mms-bitfields option by
   1557        default.
   1558      * Windows x86 targets are using the __thiscall calling convention for
   1559        C++ class-member functions.
   1560      * Support for the configure option --with-threads=posix for Windows
   1561        mingw targets.
   1562 
   1563   MIPS
   1564 
   1565      * GCC now supports thread-local storage (TLS) for MIPS16. This
   1566        requires GNU binutils 2.22 or later.
   1567      * GCC can now generate code specifically for the Cavium Octeon+ and
   1568        Octeon2 processors. The associated command-line options are
   1569        -march=octeon+ and -march=octeon2 respectively. Both options
   1570        require GNU binutils 2.22 or later.
   1571      * GCC can now work around certain 24k errata, under the control of
   1572        the command-line option -mfix-24k. These workarounds require GNU
   1573        binutils 2.20 or later.
   1574      * 32-bit MIPS GNU/Linux targets such as mips-linux-gnu can now build
   1575        n32 and n64 multilibs. The result is effectively a 64-bit GNU/Linux
   1576        toolchain that generates 32-bit code by default. Use the
   1577        configure-time option --enable-targets=all to select these extra
   1578        multilibs.
   1579      * Passing -fno-delayed-branch now also stops the assembler from
   1580        automatically filling delay slots.
   1581 
   1582   PowerPC/PowerPC64
   1583 
   1584      * Vectors of type vector long long or vector long are passed and
   1585        returned using the same method as other vectors with the VSX
   1586        instruction set. Previously GCC did not adhere to the ABI for
   1587        128-bit vectors with 64-bit integer base types (PR 48857). This
   1588        will also be fixed in the GCC 4.6.1 and 4.5.4 releases.
   1589      * A new option -mno-pointers-to-nested-functions was added to allow
   1590        AIX 32-bit/64-bit and GNU/Linux 64-bit PowerPC users to specify
   1591        that the compiler should not load up the chain register (r11)
   1592        before calling a function through a pointer. If you use this
   1593        option, you cannot call nested functions through a pointer, or call
   1594        other languages that might use the static chain.
   1595      * A new option msave-toc-indirect was added to allow AIX
   1596        32-bit/64-bit and GNU/Linux 64-bit PowerPC users control whether we
   1597        save the TOC in the prologue for indirect calls or generate the
   1598        save inline. This can speed up some programs that call through a
   1599        function pointer a lot, but it can slow down other functions that
   1600        only call through a function pointer in exceptional cases.
   1601      * The PowerPC port will now enable machine-specific built-in
   1602        functions when the user switches the target machine using the
   1603        #pragma GCC target or __attribute__ ((__target__ ("target"))) code
   1604        sequences. In addition, the target macros are updated. However, due
   1605        to the way the -save-temps switch is implemented, you won't see the
   1606        effect of these additional macros being defined in preprocessor
   1607        output.
   1608 
   1609   SH
   1610 
   1611      * A new option -msoft-atomic has been added. When it is specified,
   1612        GCC will generate GNU/Linux-compatible gUSA atomic sequences for
   1613        the new __atomic routines.
   1614      * Since it is neither supported by GAS nor officially documented,
   1615        code generation for little endian SH2A has been disabled.
   1616        Specifying -ml with -m2a* will now result in a compiler error.
   1617      * The defunct -mbranch-cost option has been fixed.
   1618      * Some improvements to the generated code of:
   1619           + Utilization of the tst #imm,R0 instruction.
   1620           + Dynamic shift instructions on SH2A.
   1621           + Integer absolute value calculations.
   1622      * The -mdiv= option for targets other than SHmedia has been fixed and
   1623        documented.
   1624 
   1625   SPARC
   1626 
   1627      * The option -mflat has been reinstated. When it is specified, the
   1628        compiler will generate code for a single register window model.
   1629        This is essentially a new implementation and the corresponding
   1630        debugger support has been added to GDB 7.4.
   1631      * Support for the options -mtune=native and -mcpu=native has been
   1632        added on selected native platforms (GNU/Linux and Solaris).
   1633      * Support for the SPARC T3 (Niagara 3) processor has been added.
   1634      * VIS:
   1635           + An intrinsics header visintrin.h has been added.
   1636           + Builtin intrinsics for the VIS 1.0 edge handling and pixel
   1637             compare instructions have been added.
   1638           + The little-endian version of alignaddr is now supported.
   1639           + When possible, VIS builtins are marked const, which should
   1640             increase the compiler's ability to optimize VIS operations.
   1641           + The compiler now properly tracks the %gsr register and how it
   1642             behaves as an input for various VIS instructions.
   1643           + Akin to fzero, the compiler can now generate fone instructions
   1644             in order to set all of the bits of a floating-point register
   1645             to 1.
   1646           + The documentation for the VIS intrinsics in the GCC manual has
   1647             been brought up to date and many inaccuracies were fixed.
   1648           + Intrinsics for the VIS 2.0 bmask, bshuffle, and
   1649             non-condition-code setting edge instructions have been added.
   1650             Their availability is controlled by the new -mvis2 and
   1651             -mno-vis2 options. They are enabled by default on
   1652             UltraSPARC-III and later CPUs.
   1653      * Support for UltraSPARC Fused Multiply-Add floating-point extensions
   1654        has been added. These instructions are enabled by default on SPARC
   1655        T3 (Niagara 3) and later CPUs.
   1656 
   1657   TILE-Gx/TILEPro
   1658 
   1659      * Support has been added for the Tilera TILE-Gx and TILEPro families
   1660        of processors.
   1661 
   1662 Other significant improvements
   1663 
   1664      * A new option (-grecord-gcc-switches) was added that appends
   1665        compiler command-line options that might affect code generation to
   1666        the DW_AT_producer attribute string in the DWARF debugging
   1667        information.
   1668      * GCC now supports various new GNU extensions to the DWARF debugging
   1669        information format, like [41]entry value and [42]call site
   1670        information, [43]typed DWARF stack or [44]a more compact macro
   1671        representation. Support for these extensions has been added to GDB
   1672        7.4. They can be disabled through the -gstrict-dwarf command-line
   1673        option.
   1674 
   1675 GCC 4.7.1
   1676 
   1677    This is the [45]list of problem reports (PRs) from GCC's bug tracking
   1678    system that are known to be fixed in the 4.7.1 release. This list might
   1679    not be complete (that is, it is possible that some PRs that have been
   1680    fixed are not listed here).
   1681 
   1682    The Go frontend in the 4.7.1 release fully supports the [46]Go 1
   1683    language standard.
   1684 
   1685 GCC 4.7.2
   1686 
   1687    This is the [47]list of problem reports (PRs) from GCC's bug tracking
   1688    system that are known to be fixed in the 4.7.2 release. This list might
   1689    not be complete (that is, it is possible that some PRs that have been
   1690    fixed are not listed here).
   1691 
   1692 GCC 4.7.3
   1693 
   1694    This is the [48]list of problem reports (PRs) from GCC's bug tracking
   1695    system that are known to be fixed in the 4.7.3 release. This list might
   1696    not be complete (that is, it is possible that some PRs that have been
   1697    fixed are not listed here).
   1698 
   1699 
   1700     For questions related to the use of GCC, please consult these web
   1701     pages and the [49]GCC manuals. If that fails, the
   1702     [50]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   1703     web pages and the development of GCC are welcome on our developer
   1704     list at [51]gcc (a] gcc.gnu.org. All of [52]our lists have public
   1705     archives.
   1706 
   1707    Copyright (C) [53]Free Software Foundation, Inc. Verbatim copying and
   1708    distribution of this entire article is permitted in any medium,
   1709    provided this notice is preserved.
   1710 
   1711    These pages are [54]maintained by the GCC team. Last modified
   1712    2013-04-11[55].
   1713 
   1714 References
   1715 
   1716    1. http://gcc.gnu.org/ml/gcc-patches/2011-03/msg01263.html
   1717    2. http://savannah.nongnu.org/bugs/?35407
   1718    3. http://gcc.gnu.org/PR18145
   1719    4. http://gcc.gnu.org/gcc-4.7/porting_to.html
   1720    5. http://openmp.org/wp/openmp-specifications/
   1721    6. http://gcc.gnu.org/wiki/TransactionalMemory
   1722    7. http://gcc.gnu.org/wiki/Atomic/GCCMM
   1723    8. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   1724    9. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   1725   10. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   1726   11. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   1727   12. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   1728   13. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
   1729   14. http://gcc.gnu.org/PR14258
   1730   15. http://gcc.gnu.org/PR35688
   1731   16. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/libstdc++/manual/manual/status.html#status.iso.2011
   1732   17. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254
   1733   18. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Optimize-Options.html#index-Ofast-689
   1734   19. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfno-protect-parens_007d-270
   1735   20. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254
   1736   21. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfrontend-optimize_007d-275
   1737   22. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWfunction-elimination_007d-170
   1738   23. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
   1739   24. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
   1740   25. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
   1741   26. http://msdn.microsoft.com/en-us/library/bb787181%28v=vs.85%29.aspx
   1742   27. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
   1743   28. http://gcc.gnu.org/wiki/Fortran2003Status
   1744   29. http://gcc.gnu.org/wiki/OOP
   1745   30. http://gcc.gnu.org/wiki/Fortran2008Status
   1746   31. http://gcc.gnu.org/wiki/Coarray
   1747   32. http://gcc.gnu.org/wiki/CoarrayLib
   1748   33. http://gcc.gnu.org/wiki/TS29113Status
   1749   34. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bstd_003d_007d_0040var_007bstd_007d-option-53
   1750   35. http://weekly.golang.org/doc/go1.html
   1751   36. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
   1752   37. http://nongnu.org/avr-libc/
   1753   38. http://gcc.gnu.org/PR54461
   1754   39. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html
   1755   40. https://sites.google.com/site/x32abi/
   1756   41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1
   1757   42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
   1758   43. http://www.dwarfstd.org/doc/040408.1.html
   1759   44. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1
   1760   45. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1
   1761   46. http://weekly.golang.org/doc/go1.html
   1762   47. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2
   1763   48. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.3
   1764   49. http://gcc.gnu.org/onlinedocs/
   1765   50. mailto:gcc-help (a] gcc.gnu.org
   1766   51. mailto:gcc (a] gcc.gnu.org
   1767   52. http://gcc.gnu.org/lists.html
   1768   53. http://www.fsf.org/
   1769   54. http://gcc.gnu.org/about.html
   1770   55. http://validator.w3.org/check/referer
   1771 ======================================================================
   1772 http://gcc.gnu.org/gcc-4.6/index.html
   1773 
   1774                              GCC 4.6 Release Series
   1775 
   1776    April 12, 2013
   1777 
   1778    The [1]GNU project and the GCC developers are pleased to announce the
   1779    release of GCC 4.6.4.
   1780 
   1781    This release is a bug-fix release, containing fixes for regressions in
   1782    GCC 4.6.3 relative to previous releases of GCC.
   1783 
   1784 Release History
   1785 
   1786    GCC 4.6.4
   1787           April 12, 2013 ([2]changes, [3]documentation)
   1788 
   1789    GCC 4.6.3
   1790           March 1, 2012 ([4]changes, [5]documentation)
   1791 
   1792    GCC 4.6.2
   1793           October 26, 2011 ([6]changes, [7]documentation)
   1794 
   1795    GCC 4.6.1
   1796           June 27, 2011 ([8]changes, [9]documentation)
   1797 
   1798    GCC 4.6.0
   1799           March 25, 2011 ([10]changes, [11]documentation)
   1800 
   1801 References and Acknowledgements
   1802 
   1803    GCC used to stand for the GNU C Compiler, but since the compiler
   1804    supports several other languages aside from C, it now stands for the
   1805    GNU Compiler Collection.
   1806 
   1807    A list of [12]successful builds is updated as new information becomes
   1808    available.
   1809 
   1810    The GCC developers would like to thank the numerous people that have
   1811    contributed new features, improvements, bug fixes, and other changes as
   1812    well as test results to GCC. This [13]amazing group of volunteers is
   1813    what makes GCC successful.
   1814 
   1815    For additional information about GCC please refer to the [14]GCC
   1816    project web site or contact the [15]GCC development mailing list.
   1817 
   1818    To obtain GCC please use [16]our mirror sites or [17]our SVN server.
   1819 
   1820 
   1821     For questions related to the use of GCC, please consult these web
   1822     pages and the [18]GCC manuals. If that fails, the
   1823     [19]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   1824     web pages and the development of GCC are welcome on our developer
   1825     list at [20]gcc (a] gcc.gnu.org. All of [21]our lists have public
   1826     archives.
   1827 
   1828    Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
   1829    distribution of this entire article is permitted in any medium,
   1830    provided this notice is preserved.
   1831 
   1832    These pages are [23]maintained by the GCC team. Last modified
   1833    2013-04-12[24].
   1834 
   1835 References
   1836 
   1837    1. http://www.gnu.org/
   1838    2. http://gcc.gnu.org/gcc-4.6/changes.html
   1839    3. http://gcc.gnu.org/onlinedocs/4.6.4/
   1840    4. http://gcc.gnu.org/gcc-4.6/changes.html
   1841    5. http://gcc.gnu.org/onlinedocs/4.6.3/
   1842    6. http://gcc.gnu.org/gcc-4.6/changes.html
   1843    7. http://gcc.gnu.org/onlinedocs/4.6.2/
   1844    8. http://gcc.gnu.org/gcc-4.6/changes.html
   1845    9. http://gcc.gnu.org/onlinedocs/4.6.1/
   1846   10. http://gcc.gnu.org/gcc-4.6/changes.html
   1847   11. http://gcc.gnu.org/onlinedocs/4.6.0/
   1848   12. http://gcc.gnu.org/gcc-4.6/buildstat.html
   1849   13. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   1850   14. http://gcc.gnu.org/index.html
   1851   15. mailto:gcc (a] gcc.gnu.org
   1852   16. http://gcc.gnu.org/mirrors.html
   1853   17. http://gcc.gnu.org/svn.html
   1854   18. http://gcc.gnu.org/onlinedocs/
   1855   19. mailto:gcc-help (a] gcc.gnu.org
   1856   20. mailto:gcc (a] gcc.gnu.org
   1857   21. http://gcc.gnu.org/lists.html
   1858   22. http://www.fsf.org/
   1859   23. http://gcc.gnu.org/about.html
   1860   24. http://validator.w3.org/check/referer
   1861 ======================================================================
   1862 http://gcc.gnu.org/gcc-4.6/changes.html
   1863 
   1864                              GCC 4.6 Release Series
   1865                         Changes, New Features, and Fixes
   1866 
   1867 Caveats
   1868 
   1869      * The options -b <machine> and -V <version> have been removed because
   1870        they were unreliable. Instead, users should directly run
   1871        <machine>-gcc when cross-compiling, or <machine>-gcc-<version> to
   1872        run a different version of gcc.
   1873      * GCC now has stricter checks for invalid command-line options. In
   1874        particular, when gcc was called to link object files rather than
   1875        compile source code, it would previously accept and ignore all
   1876        options starting with --, including linker options such as
   1877        --as-needed and --export-dynamic, although such options would
   1878        result in errors if any source code was compiled. Such options, if
   1879        unknown to the compiler, are now rejected in all cases; if the
   1880        intent was to pass them to the linker, options such as
   1881        -Wl,--as-needed should be used.
   1882      * Versions of the GNU C library up to and including 2.11.1 included
   1883        an [1]incorrect implementation of the cproj function. GCC optimizes
   1884        its builtin cproj according to the behavior specified and allowed
   1885        by the ISO C99 standard. If you want to avoid discrepancies between
   1886        the C library and GCC's builtin transformations when using cproj in
   1887        your code, use GLIBC 2.12 or later. If you are using an older GLIBC
   1888        and actually rely on the incorrect behavior of cproj, then you can
   1889        disable GCC's transformations using -fno-builtin-cproj.
   1890      * The C-only intermodule optimization framework (IMA, enabled by
   1891        -combine) has been removed in favor of the new generic link-time
   1892        optimization framework (LTO) introduced in [2]GCC 4.5.0.
   1893      * GCC now ships with the LGPL-licensed libquadmath library, which
   1894        provides quad-precision mathematical functions for targets with a
   1895        __float128 datatype. __float128 is available for targets on 32-bit
   1896        x86, x86-64 and Itanium architectures. The libquadmath library is
   1897        automatically built on such targets when building the Fortran
   1898        compiler.
   1899      * New -Wunused-but-set-variable and -Wunused-but-set-parameter
   1900        warnings were added for C, C++, Objective-C and Objective-C++.
   1901        These warnings diagnose variables respective parameters which are
   1902        only set in the code and never otherwise used. Usually such
   1903        variables are useless and often even the value assigned to them is
   1904        computed needlessly, sometimes expensively. The
   1905        -Wunused-but-set-variable warning is enabled by default by -Wall
   1906        flag and -Wunused-but-set-parameter by -Wall -Wextra flags.
   1907      * On ARM, a bug has been fixed in GCC's implementation of the AAPCS
   1908        rules for the layout of vectors that could lead to wrong code being
   1909        generated. Vectors larger than 8 bytes in size are now by default
   1910        aligned to an 8-byte boundary. This is an ABI change: code that
   1911        makes explicit use of vector types may be incompatible with binary
   1912        objects built with older versions of GCC. Auto-vectorized code is
   1913        not affected by this change. (This change affects GCC versions
   1914        4.6.4 and later, with the exception of versions 4.7.0 and 4.7.1.)
   1915      * On AVR, variables with the progmem attribute to locate data in
   1916        flash memory must be qualified as const.
   1917      * Support for a number of older systems and recently unmaintained or
   1918        untested target ports of GCC has been declared obsolete in GCC 4.6.
   1919        Unless there is activity to revive them, the next release of GCC
   1920        will have their sources permanently removed.
   1921        All GCC ports for the following processor architectures have been
   1922        declared obsolete:
   1923           + Argonaut ARC (arc-*)
   1924           + National Semiconductor CRX (crx-*)
   1925           + Motorola 68HC11 and 68HC12 (m68hc11-*-*, m6811-*-*,
   1926             m68hc12-*-*, m6812-*-*)
   1927           + Sunplus S+core (score-*)
   1928        The following ports for individual systems on particular
   1929        architectures have been obsoleted:
   1930           + Interix (i[34567]86-*-interix3*)
   1931           + NetWare x86 (i[3456x]86-*-netware*)
   1932           + Generic ARM PE (arm-*-pe* other than arm*-wince-pe*)
   1933           + MCore PE (mcore-*-pe*)
   1934           + SH SymbianOS (sh*-*-symbianelf*)
   1935           + GNU Hurd on Alpha and PowerPC (alpha*-*-gnu*, powerpc*-*-gnu*)
   1936           + M68K uClinux old ABI (m68k-*-uclinuxoldabi*)
   1937           + a.out NetBSD (arm*-*-netbsd*, i[34567]86-*-netbsd*,
   1938             vax-*-netbsd*, but not *-*-netbsdelf*)
   1939        The i[34567]86-*-pe alias for Cygwin targets has also been
   1940        obsoleted; users should configure for i[34567]86-*-cygwin* instead.
   1941        Certain configure options to control the set of libraries built
   1942        with GCC on some targets have been obsoleted. On ARM targets, the
   1943        options --disable-fpu, --disable-26bit, --disable-underscore,
   1944        --disable-interwork, --disable-biendian and --disable-nofmult have
   1945        been obsoleted. On MIPS targets, the options
   1946        --disable-single-float, --disable-biendian and --disable-softfloat
   1947        have been obsoleted.
   1948      * Support has been removed for all the [3]configurations obsoleted in
   1949        GCC 4.5.
   1950      * More information on porting to GCC 4.6 from previous versions of
   1951        GCC can be found in the [4]porting guide for this release.
   1952 
   1953 General Optimizer Improvements
   1954 
   1955      * A new general optimization level, -Ofast, has been introduced. It
   1956        combines the existing optimization level -O3 with options that can
   1957        affect standards compliance but result in better optimized code.
   1958        For example, -Ofast enables -ffast-math.
   1959      * Link-time optimization improvements:
   1960           + The [5]Scalable Whole Program Optimizer (WHOPR) project has
   1961             stabilized to the point of being usable. It has become the
   1962             default mode when using the LTO optimization model. Link time
   1963             optimization can now split itself into multiple parallel
   1964             compilations. Parallelism is controlled with -flto=n (where n
   1965             specifies the number of compilations to execute in parallel).
   1966             GCC can also cooperate with a GNU make job server by
   1967             specifying the -flto=jobserver option and adding + to the
   1968             beginning of the Makefile rule executing the linker.
   1969             Classical LTO mode can be enforced by -flto-partition=none.
   1970             This may result in small code quality improvements.
   1971           + A large number of bugs were fixed. GCC itself, Mozilla Firefox
   1972             and other large applications can be built with LTO enabled.
   1973           + The linker plugin support improvements
   1974                o Linker plugin is now enabled by default when the linker
   1975                  is detected to have plugin support. This is the case for
   1976                  GNU ld 2.21.51 or newer (on ELF and Cygwin targets) and
   1977                  the Gold linker on ELF targets. Plugin support of the
   1978                  Apple linker on Darwin is not compatible with GCC. The
   1979                  linker plugin can also be controlled by the
   1980                  -fuse-linker-plugin command line option.
   1981                o Resolution information from the linker plugin is used to
   1982                  drive whole program assumptions. Use of the linker plugin
   1983                  results in more aggressive optimization on binaries and
   1984                  on shared libraries that use the hidden visibility
   1985                  attribute. Consequently the use of -fwhole-program is not
   1986                  necessary in addition to LTO.
   1987           + Hidden symbols used from non-LTO objects now have to be
   1988             explicitly annotated with externally_visible when the linker
   1989             plugin is not used.
   1990           + C++ inline functions and virtual tables are now privatized
   1991             more aggressively, leading to better inter-procedural
   1992             optimization and faster dynamic linking.
   1993           + Memory usage and intermediate language streaming performance
   1994             have been improved.
   1995           + Static constructors and destructors from individual units are
   1996             inlined into a single function. This can significantly improve
   1997             startup times of large C++ applications where static
   1998             constructors are very common. For example, static constructors
   1999             are used when including the iostream header.
   2000           + Support for the Ada language has been added.
   2001      * Interprocedural optimization improvements
   2002           + The interprocedural framework was re-tuned for link time
   2003             optimization. Several scalability issues were resolved.
   2004           + Improved auto-detection of const and pure functions. Newly,
   2005             noreturn functions are auto-detected.
   2006             The [6]-Wsuggest-attribute=[const|pure|noreturn] flag is
   2007             available that informs users when adding attributes to headers
   2008             might improve code generation.
   2009           + A number of inlining heuristic improvements. In particular:
   2010                o Partial inlining is now supported and enabled by default
   2011                  at -O2 and greater. The feature can be controlled via
   2012                  -fpartial-inlining.
   2013                  Partial inlining splits functions with short hot path to
   2014                  return. This allows more aggressive inlining of the hot
   2015                  path leading to better performance and often to code size
   2016                  reductions (because cold parts of functions are not
   2017                  duplicated).
   2018                o Scalability for large compilation units was improved
   2019                  significantly.
   2020                o Inlining of callbacks is now more aggressive.
   2021                o Virtual methods are considered for inlining when the
   2022                  caller is inlined and devirtualization is then possible.
   2023                o Inlining when optimizing for size (either in cold regions
   2024                  of a program or when compiling with -Os) was improved to
   2025                  better handle C++ programs with larger abstraction
   2026                  penalty, leading to smaller and faster code.
   2027           + The IPA reference optimization pass detecting global variables
   2028             used or modified by functions was strengthened and sped up.
   2029           + Functions whose address was taken are now optimized out when
   2030             all references to them are dead.
   2031           + A new inter-procedural static profile estimation pass detects
   2032             functions that are executed once or unlikely to be executed.
   2033             Unlikely executed functions are optimized for size. Functions
   2034             executed once are optimized for size except for the inner
   2035             loops.
   2036           + On most targets with named section support, functions used
   2037             only at startup (static constructors and main), functions used
   2038             only at exit and functions detected to be cold are placed into
   2039             separate text segment subsections. This extends the
   2040             -freorder-functions feature and is controlled by the same
   2041             switch. The goal is to improve the startup time of large C++
   2042             programs.
   2043             Proper function placement requires linker support. GNU ld
   2044             2.21.51 on ELF targets was updated to place those functions
   2045             together within the text section leading to better code
   2046             locality and faster startup times of large C++ programs. The
   2047             feature is also supported in the Apple linker. Support in the
   2048             gold linker is planned.
   2049      * A new switch -fstack-usage has been added. It makes the compiler
   2050        output stack usage information for the program, on a per-function
   2051        basis, in an auxiliary file.
   2052      * A new switch -fcombine-stack-adjustments has been added. It can be
   2053        used to enable or disable the compiler's stack-slot combining pass
   2054        which before was enabled automatically at -O1 and above, but could
   2055        not be controlled on its own.
   2056      * A new switch -fstrict-volatile-bitfields has been added. Using it
   2057        indicates that accesses to volatile bitfields should use a single
   2058        access of the width of the field's type. This option can be useful
   2059        for precisely defining and accessing memory-mapped peripheral
   2060        registers from C or C++.
   2061 
   2062 Compile time and memory usage improvements
   2063 
   2064      * Datastructures used by the dataflow framework in GCC were
   2065        reorganized for better memory usage and more cache locality.
   2066        Compile time is improved especially on units with large functions
   2067        (possibly resulting from a lot of inlining) not fitting into the
   2068        processor cache. The compile time of the GCC C compiler binary with
   2069        link-time optimization went down by over 10% (benchmarked on x86-64
   2070        target).
   2071 
   2072 New Languages and Language specific improvements
   2073 
   2074   Ada
   2075 
   2076      * Stack checking has been improved on selected architectures (Alpha,
   2077        IA-32/x86-64, RS/6000 and SPARC): it now will detect stack
   2078        overflows in all cases on these architectures.
   2079      * Initial support for Ada 2012 has been added.
   2080 
   2081   C family
   2082 
   2083      * A new warning, enabled by -Wdouble-promotion, has been added that
   2084        warns about cases where a value of type float is implicitly
   2085        promoted to double. This is especially helpful for CPUs that handle
   2086        the former in hardware, but emulate the latter in software.
   2087      * A new function attribute leaf was introduced. This attribute allows
   2088        better inter-procedural optimization across calls to functions that
   2089        return to the current unit only via returning or exception
   2090        handling. This is the case for most library functions that have no
   2091        callbacks.
   2092      * Support for a new data type __int128 for targets having wide enough
   2093        machine-mode support.
   2094      * The new function attribute callee_pop_aggregate allows to specify
   2095        if the caller or callee is responsible for popping the aggregate
   2096        return pointer value from the stack.
   2097      * Support for selectively enabling and disabling warnings via #pragma
   2098        GCC diagnostic has been added. For instance:
   2099 #pragma GCC diagnostic error "-Wuninitialized"
   2100   foo(a);                       /* error is given for this one */
   2101 #pragma GCC diagnostic push
   2102 #pragma GCC diagnostic ignored "-Wuninitialized"
   2103   foo(b);                       /* no diagnostic for this one */
   2104 #pragma GCC diagnostic pop
   2105   foo(c);                       /* error is given for this one */
   2106 #pragma GCC diagnostic pop
   2107   foo(d);                       /* depends on command line options */
   2108 
   2109      * The -fmax-errors=N option is now supported. Using this option
   2110        causes the compiler to exit after N errors have been issued.
   2111 
   2112   C
   2113 
   2114      * There is now experimental support for some features from the
   2115        upcoming C1X revision of the ISO C standard. This support may be
   2116        selected with -std=c1x, or -std=gnu1x for C1X with GNU extensions.
   2117        Note that this support is experimental and may change incompatibly
   2118        in future releases for consistency with changes to the C1X standard
   2119        draft. The following features are newly supported as described in
   2120        the N1539 draft of C1X (with changes agreed at the March 2011 WG14
   2121        meeting); some other features were already supported with no
   2122        compiler changes being needed, or have some support but not in full
   2123        accord with N1539 (as amended).
   2124           + Static assertions (_Static_assert keyword)
   2125           + Typedef redefinition
   2126           + New macros in <float.h>
   2127           + Anonymous structures and unions
   2128      * The new -fplan9-extensions option directs the compiler to support
   2129        some extensions for anonymous struct fields which are implemented
   2130        by the Plan 9 compiler. A pointer to a struct may be automatically
   2131        converted to a pointer to an anonymous field when calling a
   2132        function, in order to make the types match. An anonymous struct
   2133        field whose type is a typedef name may be referred to using the
   2134        typedef name.
   2135 
   2136   C++
   2137 
   2138      * Improved [7]experimental support for the upcoming C++0x ISO C++
   2139        standard, including support for constexpr (thanks to Gabriel Dos
   2140        Reis and Jason Merrill), nullptr (thanks to Magnus Fromreide),
   2141        noexcept, unrestricted unions, range-based for loops (thanks to
   2142        Rodrigo Rivas Costa), opaque enum declarations (thanks also to
   2143        Rodrigo), implicitly deleted functions and implicit move
   2144        constructors.
   2145      * When an extern declaration within a function does not match a
   2146        declaration in the enclosing context, G++ now properly declares the
   2147        name within the namespace of the function rather than the namespace
   2148        which was open just before the function definition ([8]c++/43145).
   2149      * GCC now warns by default when casting integers to larger pointer
   2150        types. These warnings can be disabled with the option
   2151        -Wno-int-to-pointer-cast, which is now also available in C++.
   2152      * G++ no longer optimizes using the assumption that a value of
   2153        enumeration type will fall within the range specified by the
   2154        standard, since that assumption is easily violated with a
   2155        conversion from integer type ([9]c++/43680). The old behavior can
   2156        be restored with -fstrict-enums.
   2157      * The new -fnothrow-opt flag changes the semantics of a throw()
   2158        exception specification to match the proposed semantics of the
   2159        noexcept specification: just call terminate if an exception tries
   2160        to propagate out of a function with such an exception
   2161        specification. This dramatically reduces or eliminates the code
   2162        size overhead from adding the exception specification.
   2163      * The new -Wnoexcept flag will suggest adding a noexcept qualifier to
   2164        a function that the compiler can tell doesn't throw if it would
   2165        change the value of a noexcept expression.
   2166      * The -Wshadow option now warns if a local variable or type
   2167        declaration shadows another type in C++. Note that the compiler
   2168        will not warn if a local variable shadows a struct/class/enum, but
   2169        will warn if it shadows an explicit typedef.
   2170      * When an identifier is not found in the current scope, G++ now
   2171        offers suggestions about which identifier might have been intended.
   2172      * G++ now issues clearer diagnostics for missing semicolons after
   2173        class, struct, and union definitions.
   2174      * G++ now issues clearer diagnostics for missing semicolons after
   2175        class member declarations.
   2176      * G++ now issues clearer diagnostics when a colon is used in a place
   2177        where a double-colon was intended.
   2178      * G++ no longer accepts mutable on reference members ([10]c++/33558).
   2179        Use -fpermissive to allow the old, non-conforming behaviour.
   2180      * A few mangling fixes have been made, to attribute const/volatile on
   2181        function pointer types, decltype of a plain decl, and use of a
   2182        function parameter in the declaration of another parameter. By
   2183        default the compiler still uses the old mangling, but emits aliases
   2184        with the new mangling on targets that support strong aliases. Users
   2185        can switch over entirely to the new mangling with -fabi-version=5
   2186        or -fabi-version=0. -Wabi will now warn about code that uses the
   2187        old mangling.
   2188      * In 4.6.0 and 4.6.1 G++ no longer allows objects of const-qualified
   2189        type to be default initialized unless the type has a user-declared
   2190        default constructor. In 4.6.2 G++ implements the proposed
   2191        resolution of [11]DR 253, so default initialization is allowed if
   2192        it initializes all subobjects. Code that fails to compile can be
   2193        fixed by providing an initializer e.g.
   2194     struct A { A(); };
   2195     struct B : A { int i; };
   2196     const B b = B();
   2197        Use -fpermissive to allow the old, non-conforming behaviour.
   2198 
   2199     Runtime Library (libstdc++)
   2200 
   2201      * [12]Improved experimental support for the upcoming ISO C++
   2202        standard, C++0x, including using constexpr and nullptr.
   2203      * Performance improvements to the [13]Debug Mode, thanks to Franc,ois
   2204        Dumont.
   2205      * Atomic operations used for reference-counting are annotated so that
   2206        they can be understood by race detectors such as Helgrind, see
   2207        [14]Data Race Hunting.
   2208      * Most libstdc++ standard headers have been changed to no longer
   2209        include the cstddef header as an implementation detail. Code that
   2210        relied on that header being included as side-effect of including
   2211        other standard headers will need to include cstddef explicitly.
   2212 
   2213   Fortran
   2214 
   2215      * On systems supporting the libquadmath library, GNU Fortran now also
   2216        supports a quad-precision, kind=16 floating-point data type
   2217        (REAL(16), COMPLEX(16)). As the data type is not fully supported in
   2218        hardware, calculations might be one to two orders of magnitude
   2219        slower than with the 4, 8 or 10 bytes floating-point data types.
   2220        This change does not affect systems which support REAL(16) in
   2221        hardware nor those which do not support libquadmath.
   2222      * Much improved compile time for large array constructors.
   2223      * In order to reduce execution time and memory consumption, use of
   2224        temporary arrays in assignment expressions is avoided for many
   2225        cases. The compiler now reverses loops in order to avoid generating
   2226        a temporary array where possible.
   2227      * Improved diagnostics, especially with -fwhole-file.
   2228      * The -fwhole-file flag is now enabled by default. This improves code
   2229        generation and diagnostics. It can be disabled using the deprecated
   2230        -fno-whole-file flag.
   2231      * Support the generation of Makefile dependencies via the [15]-M...
   2232        flags of GCC; you may need to specify the -cpp option in addition.
   2233        The dependencies take modules, Fortran's include, and CPP's
   2234        #include into account. Note: Using -M for the module path is no
   2235        longer supported, use -J instead.
   2236      * The flag -Wconversion has been modified to only issue warnings
   2237        where a conversion leads to information loss. This drastically
   2238        reduces the number of warnings; -Wconversion is thus now enabled
   2239        with -Wall. The flag -Wconversion-extra has been added and also
   2240        warns about other conversions; -Wconversion-extra typically issues
   2241        a huge number of warnings, most of which can be ignored.
   2242      * A new command-line option -Wunused-dummy-argument warns about
   2243        unused dummy arguments and is included in -Wall. Before,
   2244        -Wunused-variable also warned about unused dummy arguments.
   2245      * Fortran 2003 support has been extended:
   2246           + Improved support for polymorphism between libraries and
   2247             programs and for complicated inheritance patterns (cf.
   2248             [16]object-oriented programming).
   2249           + Experimental support of the ASSOCIATE construct.
   2250           + In pointer assignments it is now possible to specify the lower
   2251             bounds of the pointer and, for a rank-1 or a simply contiguous
   2252             data-target, to remap the bounds.
   2253           + Automatic (re)allocation: In intrinsic assignments to
   2254             allocatable variables the left-hand side will be automatically
   2255             allocated (if unallocated) or reallocated (if the shape or
   2256             type parameter is different). To avoid the small performance
   2257             penalty, you can use a(:) = ... instead of a = ... for arrays
   2258             and character strings - or disable the feature using -std=f95
   2259             or -fno-realloc-lhs.
   2260           + Deferred type parameter: For scalar allocatable and pointer
   2261             variables the character length can be deferred.
   2262           + Namelist variables with allocatable and pointer attribute and
   2263             nonconstant length type parameter are supported.
   2264      * Fortran 2008 support has been extended:
   2265           + Experimental [17]coarray support (for one image only, i.e.
   2266             num_images() == 1); use the [18]-fcoarray=single flag to
   2267             enable it.
   2268           + The STOP and the new ERROR STOP statements now support all
   2269             constant expressions.
   2270           + Support for the CONTIGUOUS attribute.
   2271           + Support for ALLOCATE with MOLD.
   2272           + Support for the STORAGE_SIZE intrinsic inquiry function.
   2273           + Support of the NORM2 and PARITY intrinsic functions.
   2274           + The following bit intrinsics were added: POPCNT and POPPAR for
   2275             counting the number of 1 bits and returning the parity; BGE,
   2276             BGT, BLE, and BLT for bitwise comparisons; DSHIFTL and DSHIFTR
   2277             for combined left and right shifts, MASKL and MASKR for simple
   2278             left and right justified masks, MERGE_BITS for a bitwise merge
   2279             using a mask, SHIFTA, SHIFTL and SHIFTR for shift operations,
   2280             and the transformational bit intrinsics IALL, IANY and
   2281             IPARITY.
   2282           + Support of the EXECUTE_COMMAND_LINE intrinsic subroutine.
   2283           + Support for the IMPURE attribute for procedures, which allows
   2284             for ELEMENTAL procedures without the restrictions of PURE.
   2285           + Null pointers (including NULL()) and not allocated variables
   2286             can be used as actual argument to optional non-pointer,
   2287             non-allocatable dummy arguments, denoting an absent argument.
   2288           + Non-pointer variables with TARGET attribute can be used as
   2289             actual argument to POINTER dummies with INTENT(IN)
   2290           + Pointers including procedure pointers and those in a derived
   2291             type (pointer components) can now be initialized by a target
   2292             instead of only by NULL.
   2293           + The EXIT statement (with construct-name) can now be used to
   2294             leave not only the DO but also the ASSOCIATE, BLOCK, IF,
   2295             SELECT CASE and SELECT TYPE constructs.
   2296           + Internal procedures can now be used as actual argument.
   2297           + The named constants INTEGER_KINDS, LOGICAL_KINDS, REAL_KINDS
   2298             and CHARACTER_KINDS of the intrinsic module ISO_FORTRAN_ENV
   2299             have been added; these arrays contain the supported kind
   2300             values for the respective types.
   2301           + The module procedures C_SIZEOF of the intrinsic module
   2302             ISO_C_BINDINGS and COMPILER_VERSION and COMPILER_OPTIONS of
   2303             ISO_FORTRAN_ENV have been implemented.
   2304           + Minor changes: obsolescence diagnostics for ENTRY was added
   2305             for -std=f2008; a line may start with a semicolon; for
   2306             internal and module procedures END can be used instead of END
   2307             SUBROUTINE and END FUNCTION; SELECTED_REAL_KIND now also takes
   2308             a RADIX argument; intrinsic types are supported for
   2309             TYPE(intrinsic-type-spec); multiple type-bound procedures can
   2310             be declared in a single PROCEDURE statement; implied-shape
   2311             arrays are supported for named constants (PARAMETER). The
   2312             transformational, three argument versions of BESSEL_JN and
   2313             BESSEL_YN were added - the elemental, two-argument version had
   2314             been added in GCC 4.4; note that the transformational
   2315             functions use a recurrence algorithm.
   2316 
   2317   Go
   2318 
   2319    Support for the [19]Go programming language has been added to GCC. It
   2320    is not enabled by default when you build GCC; use the
   2321    --enable-languages configure option to build it. The driver program for
   2322    compiling Go code is gccgo.
   2323 
   2324    Go is currently known to work on GNU/Linux and RTEMS. Solaris support
   2325    is in progress. It may or may not work on other platforms.
   2326 
   2327   Objective-C and Objective-C++
   2328 
   2329      * The -fobjc-exceptions flag is now required to enable Objective-C
   2330        exception and synchronization syntax (introduced by the keywords
   2331        @try, @catch, @finally and @synchronized).
   2332      * A number of Objective-C 2.0 features and extensions are now
   2333        supported by GCC. These features are enabled by default; you can
   2334        disable them by using the new -fobjc-std=objc1 command-line option.
   2335      * The Objective-C 2.0 dot-syntax is now supported. It is an
   2336        alternative syntax for using getters and setters; object.count is
   2337        automatically converted into [object count] or [object setCount:
   2338        ...] depending on context; for example if (object.count > 0) is
   2339        automatically compiled into the equivalent of if ([object count] >
   2340        0) while object.count = 0; is automatically compiled into the
   2341        equivalent ot [object setCount: 0];. The dot-syntax can be used
   2342        with instance and class objects and with any setters or getters, no
   2343        matter if they are part of a declared property or not.
   2344      * Objective-C 2.0 declared properties are now supported. They are
   2345        declared using the new @property keyword, and are most commonly
   2346        used in conjunction with the new Objective-C 2.0 dot-syntax. The
   2347        nonatomic, readonly, readwrite, assign, retain, copy, setter and
   2348        getter attributes are all supported. Marking declared properties
   2349        with __attribute__ ((deprecated)) is supported too.
   2350      * The Objective-C 2.0 @synthesize and @dynamic keywords are
   2351        supported. @synthesize causes the compiler to automatically
   2352        synthesize a declared property, while @dynamic is used to disable
   2353        all warnings for a declared property for which no implementation is
   2354        provided at compile time. Synthesizing declared properties requires
   2355        runtime support in most useful cases; to be able to use it with the
   2356        GNU runtime, appropriate helper functions have been added to the
   2357        GNU Objective-C runtime ABI, and are implemented by the GNU
   2358        Objective-C runtime library shipped with GCC.
   2359      * The Objective-C 2.0 fast enumeration syntax is supported in
   2360        Objective-C. This is currently not yet available in Objective-C++.
   2361        Fast enumeration requires support in the runtime, and such support
   2362        has been added to the GNU Objective-C runtime library (shipped with
   2363        GCC).
   2364      * The Objective-C 2.0 @optional keyword is supported. It allows you
   2365        to mark methods or properties in a protocol as optional as opposed
   2366        to required.
   2367      * The Objective-C 2.0 @package keyword is supported. It has currently
   2368        the same effect as the @public keyword.
   2369      * Objective-C 2.0 method attributes are supported. Currently the
   2370        supported attributes are deprecated, sentinel, noreturn and format.
   2371      * Objective-C 2.0 method argument attributes are supported. The most
   2372        widely used attribute is unused, to mark an argument as unused in
   2373        the implementation.
   2374      * Objective-C 2.0 class and protocol attributes are supported.
   2375        Currently the only supported attribute is deprecated.
   2376      * Objective-C 2.0 class extensions are supported. A class extension
   2377        has the same syntax as a category declaration with no category
   2378        name, and the methods and properties declared in it are added
   2379        directly to the main class. It is mostly used as an alternative to
   2380        a category to add methods to a class without advertising them in
   2381        the public headers, with the advantage that for class extensions
   2382        the compiler checks that all the privately declared methods are
   2383        actually implemented.
   2384      * As a result of these enhancements, GCC can now be used to build
   2385        Objective-C and Objective-C++ software that uses Foundation and
   2386        other important system frameworks with the NeXT runtime on Darwin 9
   2387        and Darwin 10 (OSX 10.5 and 10.6).
   2388      * Many bugs in the compiler have been fixed in this release; in
   2389        particular, LTO can now be used when compiling Objective-C and
   2390        Objective-C++ and the parser is much more robust in dealing with
   2391        invalid code.
   2392 
   2393     Runtime Library (libobjc)
   2394 
   2395      * The GNU Objective-C runtime library now defines the macro
   2396        __GNU_LIBOBJC__ (with a value that is increased at every release
   2397        where there is any change to the API) in objc/objc.h, making it
   2398        easy to determine if the GNU Objective-C runtime library is being
   2399        used, and if so, which version. Previous versions of the GNU
   2400        Objective-C runtime library (and other Objective-C runtime
   2401        libraries such as the Apple one) do not define this macro.
   2402      * A new Objective-C 2.0 API, almost identical to the one implemented
   2403        by the Apple Objective-C runtime, has been implemented in the GNU
   2404        Objective-C runtime library. The new API hides the internals of
   2405        most runtime structures but provides a more extensive set of
   2406        functions to operate on them. It is much easier, for example, to
   2407        create or modify classes at runtime. The new API also makes it
   2408        easier to port software from Apple to GNU as almost no changes
   2409        should be required. The old API is still supported for backwards
   2410        compatibility; including the old objc/objc-api.h header file
   2411        automatically selects the old API, while including the new
   2412        objc/runtime.h header file automatically selects the new API.
   2413        Support for the old API is being phased out and upgrading the
   2414        software to use the new API is strongly recommended. To check for
   2415        the availability of the new API, the __GNU_LIBOBJC__ macro can be
   2416        used as older versions of the GNU Objective-C runtime library,
   2417        which do not support the new API, do not define such a macro.
   2418      * Runtime support for @synchronized has been added.
   2419      * Runtime support for Objective-C 2.0 synthesized property accessors
   2420        has been added.
   2421      * Runtime support for Objective-C 2.0 fast enumeration has been
   2422        added.
   2423 
   2424 New Targets and Target Specific Improvements
   2425 
   2426   ARM
   2427 
   2428      * GCC now supports the Cortex-M4 processor implementing the v7-em
   2429        version of the architecture using the option -mcpu=cortex-m4.
   2430      * Scheduling descriptions for the Cortex-M4, the Neon and the
   2431        floating point units of the Cortex-A9 and a pipeline description
   2432        for the Cortex-A5 have been added.
   2433      * Synchronization primitives such as __sync_fetch_and_add and friends
   2434        are now inlined for supported architectures rather than calling
   2435        into a kernel helper function.
   2436      * SSA loop prefetching is enabled by default for the Cortex-A9 at
   2437        -O3.
   2438      * Several improvements were committed to improve code generation for
   2439        the ARM architecture including a rewritten implementation for load
   2440        and store multiples.
   2441      * Several enhancements were committed to improve SIMD code generation
   2442        for NEON by adding support for widening instructions, misaligned
   2443        loads and stores, vector conditionals and support for 64 bit
   2444        arithmetic.
   2445      * Support was added for the Faraday cores fa526, fa606te, fa626te,
   2446        fmp626te, fmp626 and fa726te and can be used with the respective
   2447        names as parameters to the -mcpu= option.
   2448      * Basic support was added for Cortex-A15 and is available through
   2449        -mcpu=cortex-a15.
   2450      * GCC for AAPCS configurations now more closely adheres to the AAPCS
   2451        specification by enabling -fstrict-volatile-bitfields by default.
   2452 
   2453   IA-32/x86-64
   2454 
   2455      * The new -fsplit-stack option permits programs to use a
   2456        discontiguous stack. This is useful for threaded programs, in that
   2457        it is no longer necessary to specify the maximum stack size when
   2458        creating a thread. This feature is currently only implemented for
   2459        32-bit and 64-bit x86 GNU/Linux targets.
   2460      * Support for emitting profiler counter calls before function
   2461        prologues. This is enabled via a new command-line option -mfentry.
   2462      * Optimization for the Intel Core 2 processors is now available
   2463        through the -march=core2 and -mtune=core2 options.
   2464      * Support for Intel Core i3/i5/i7 processors is now available through
   2465        the -march=corei7 and -mtune=corei7 options.
   2466      * Support for Intel Core i3/i5/i7 processors with AVX is now
   2467        available through the -march=corei7-avx and -mtune=corei7-avx
   2468        options.
   2469      * Support for AMD Bobcat (family 14) processors is now available
   2470        through the -march=btver1 and -mtune=btver1 options.
   2471      * Support for AMD Bulldozer (family 15) processors is now available
   2472        through the -march=bdver1 and -mtune=bdver1 options.
   2473      * The default setting (when not optimizing for size) for 32-bit
   2474        GNU/Linux and Darwin x86 targets has been changed to
   2475        -fomit-frame-pointer. The default can be reverted to
   2476        -fno-omit-frame-pointer by configuring GCC with the
   2477        --enable-frame-pointer configure option.
   2478      * Darwin, FreeBSD, Solaris 2, MinGW and Cygwin now all support
   2479        __float128 on 32-bit and 64-bit x86 targets.
   2480      * AVX floating-point arithmetic can now be enabled by default at
   2481        configure time with the new --with-fpmath=avx option.
   2482      * The SSA loop prefetching pass is enabled when using -O3 when
   2483        optimizing for CPUs where prefetching is beneficial (AMD CPUs newer
   2484        than K6).
   2485      * Support for TBM (Trailing Bit Manipulation) built-in functions and
   2486        code generation is available via -mtbm.
   2487      * Support for AMD's BMI (Bit Manipulation) built-in functions and
   2488        code generation is available via -mbmi.
   2489 
   2490   MicroBlaze
   2491 
   2492      * Support has been added for the Xilinx MicroBlaze softcore processor
   2493        (microblaze-elf) embedded target. This configurable processor is
   2494        supported on several Xilinx Spartan and Virtex FPGAs.
   2495 
   2496   MIPS
   2497 
   2498      * GCC now supports the Loongson 3A processor. Its canonical -march=
   2499        and -mtune= name is loongson3a.
   2500 
   2501   MN10300 / AM33
   2502 
   2503      * The inline assembly register constraint "A" has been renamed "c".
   2504        This constraint is used to select a floating-point register that
   2505        can be used as the destination of a multiply-accumulate
   2506        instruction.
   2507      * New inline assembly register constraints "A" and "D" have been
   2508        added. These constraint letters resolve to all general registers
   2509        when compiling for AM33, and resolve to address registers only or
   2510        data registers only when compiling for MN10300.
   2511      * The MDR register is represented in the compiler. One can access the
   2512        register via the "z" constraint in inline assembly. It can be
   2513        marked as clobbered or used as a local register variable via the
   2514        "mdr" name. The compiler uses the RETF instruction if the function
   2515        does not modify the MDR register, so it is important that inline
   2516        assembly properly annotate any usage of the register.
   2517 
   2518   PowerPC/PowerPC64
   2519 
   2520      * GCC now supports the Applied Micro Titan processor with
   2521        -mcpu=titan.
   2522      * The -mrecip option has been added, which indicates whether the
   2523        reciprocal and reciprocal square root instructions should be used.
   2524      * The -mveclibabi=mass option can be used to enable the compiler to
   2525        autovectorize mathematical functions using the Mathematical
   2526        Acceleration Subsystem library.
   2527      * The -msingle-pic-base option has been added, which instructs the
   2528        compiler to avoid loading the PIC base register in function
   2529        prologues. The PIC base register must be initialized by the runtime
   2530        system.
   2531      * The -mblock-move-inline-limit option has been added, which enables
   2532        the user to control the maximum size of inlined memcpy calls and
   2533        similar.
   2534      * PowerPC64 GNU/Linux support for applications requiring a large TOC
   2535        section has been improved. A new command-line option,
   2536        -mcmodel=MODEL, controls this feature; valid values for MODEL are
   2537        small, medium, or large.
   2538      * The Altivec builtin functions vec_ld and vec_st have been modified
   2539        to generate the Altivec memory instructions LVX and STVX, even if
   2540        the -mvsx option is used. In the initial GCC 4.5 release, these
   2541        builtin functions were changed to generate VSX memory reference
   2542        instructions instead of Altivec memory instructions, but there are
   2543        differences between the two instructions. If the VSX instruction
   2544        set is available, you can now use the new builtin functions
   2545        vec_vsx_ld and vec_vsx_st which always generates the VSX memory
   2546        instructions.
   2547      * The GCC compiler on AIX now defaults to a process layout with a
   2548        larger data space allowing larger programs to be compiled.
   2549      * The GCC long double type on AIX 6.1 and above has reverted to 64
   2550        bit double precision, matching the AIX XL compiler default, because
   2551        of missing C99 symbols required by the GCC runtime.
   2552      * The default processor scheduling model and tuning for PowerPC64
   2553        GNU/Linux and for AIX 6.1 and above now is POWER7.
   2554      * Starting with GCC 4.6.1, vectors of type vector long long or vector
   2555        long are passed and returned in the same method as other vectors
   2556        with the VSX instruction set. Previously the GCC compiler did not
   2557        adhere to the ABI for 128-bit vectors with 64-bit integer base
   2558        types (PR 48857). This is also fixed in the GCC 4.5.4 release.
   2559 
   2560   S/390, zSeries and System z9/z10, IBM zEnterprise z196
   2561 
   2562      * Support for the zEnterprise z196 processor has been added. When
   2563        using the -march=z196 option, the compiler will generate code
   2564        making use of the following instruction facilities:
   2565           + Conditional load/store
   2566           + Distinct-operands
   2567           + Floating-point-extension
   2568           + Interlocked-access
   2569           + Population-count
   2570        The -mtune=z196 option avoids the compare and branch instructions
   2571        as well as the load address instruction with an index register as
   2572        much as possible and performs instruction scheduling appropriate
   2573        for the new out-of-order pipeline architecture.
   2574      * When using the -m31 -mzarch options the generated code still
   2575        conforms to the 32-bit ABI but uses the general purpose registers
   2576        as 64-bit registers internally. This requires a Linux kernel saving
   2577        the whole 64-bit registers when doing a context switch. Kernels
   2578        providing that feature indicate that by the 'highgprs' string in
   2579        /proc/cpuinfo.
   2580      * The SSA loop prefetching pass is enabled when using -O3.
   2581 
   2582   SPARC
   2583 
   2584      * GCC now supports the LEON series of SPARC V8 processors. The code
   2585        generated by the compiler can either be tuned to it by means of the
   2586        --with-tune=leon configure option and -mtune=leon compilation
   2587        option, or the compiler can be built for the sparc-leon-{elf,linux}
   2588        and sparc-leon3-{elf,linux} targets directly.
   2589      * GCC has stopped sign/zero-extending parameter registers in the
   2590        callee for functions taking parameters with sub-word size in 32-bit
   2591        mode, since this is redundant with the specification of the ABI.
   2592        GCC has never done so in 64-bit mode since this is also redundant.
   2593      * The command line option -mfix-at697f has been added to enable the
   2594        documented workaround for the single erratum of the Atmel AT697F
   2595        processor.
   2596 
   2597 Operating Systems
   2598 
   2599   Android
   2600 
   2601      * GCC now supports the Bionic C library and provides a convenient way
   2602        of building native libraries and applications for the Android
   2603        platform. Refer to the documentation of the -mandroid and -mbionic
   2604        options for details on building native code. At the moment, Android
   2605        support is enabled only for ARM.
   2606 
   2607   Darwin/Mac OS X
   2608 
   2609      * General
   2610           + Initial support for CFString types has been added.
   2611             This allows GCC to build projects including the system Core
   2612             Foundation frameworks. The GCC Objective-C family supports
   2613             CFString "toll-free bridged" as per the Mac OS X system tools.
   2614             CFString is also recognized in the context of format
   2615             attributes and arguments (see the documentation for format
   2616             attributes for limitations). At present, 8-bit character types
   2617             are supported.
   2618           + Object file size reduction.
   2619             The Darwin zeroed memory allocators have been re-written to
   2620             make more use of .zerofill sections. For non-debug code, this
   2621             can reduce object file size significantly.
   2622           + Objective-C family 64-bit support (NeXT ABI 2).
   2623             Initial support has been added to support 64-bit Objective-C
   2624             code using the Darwin/OS X native (NeXT) runtime. ABI version
   2625             2 will be selected automatically when 64-bit code is built.
   2626           + Objective-C family 32-bit ABI 1.
   2627             For 32-bit code ABI 1 is also now also allowed. At present it
   2628             must be selected manually using -fobjc-abi-version=1 where
   2629             applicable - i.e. on Darwin 9/10 (OS X 10.5/10.6).
   2630      * x86 Architecture
   2631           + The -mdynamic-no-pic option has been enabled.
   2632             Code supporting -mdynamic-no-pic optimization has been added
   2633             and is applicable to -m32 builds. The compiler bootstrap uses
   2634             the option where appropriate.
   2635           + The default value for -mtune= has been changed.
   2636             Since Darwin systems are primarily Xeon, Core-2 or similar the
   2637             default tuning has been changed to -mtune=core2.
   2638           + Enable 128-bit long double (__float128) support on Darwin.
   2639      * PPC Architecture
   2640           + Darwin64 ABI.
   2641             Several significant bugs have been fixed, such that GCC now
   2642             produces code compatible with the Darwin64 PowerPC ABI.
   2643           + libffi and boehm-gc.
   2644             The Darwin ports of the libffi and boehm-gc libraries have
   2645             been upgraded to include a Darwin64 implementation. This means
   2646             that powerpc*-*-darwin9 platforms may now, for example, build
   2647             Java applications with -m64 enabled.
   2648           + Plug-in support has been enabled.
   2649           + The -fsection-anchors option is now available although,
   2650             presently, not heavily tested.
   2651 
   2652   Solaris 2
   2653 
   2654     New Features
   2655 
   2656      * Support symbol versioning with the Sun linker.
   2657      * Allow libstdc++ to leverage full ISO C99 support on Solaris 10+.
   2658      * Support thread-local storage (TLS) with the Sun assembler on
   2659        Solaris 2/x86.
   2660      * Support TLS on Solaris 8/9 if prerequisites are met.
   2661      * Support COMDAT group with the GNU assembler and recent Sun linker.
   2662      * Support the Sun assembler visibility syntax.
   2663      * Default Solaris 2/x86 to -march=pentium4 (Solaris 10+) resp.
   2664        -march=pentiumpro (Solaris 8/9).
   2665      * Don't use SSE on Solaris 8/9 x86 by default.
   2666      * Enable 128-bit long double (__float128) support on Solaris 2/x86.
   2667 
   2668     ABI Change
   2669 
   2670      * Change the ABI for returning 8-byte vectors like __m64 in MMX
   2671        registers on Solaris 10+/x86 to match the Sun Studio 12.1+
   2672        compilers. This is an incompatible change. If you use such types,
   2673        you must either recompile all your code with the new compiler or
   2674        use the new -mvect8-ret-in-mem option to remain compatible with
   2675        previous versions of GCC and Sun Studio.
   2676 
   2677   Windows x86/x86_64
   2678 
   2679      * Initial support for decimal floating point.
   2680      * Support for the __thiscall calling-convention.
   2681      * Support for hot-patchable function prologues via the
   2682        ms_hook_prologue attribute for x86_64 in addition to 32-bit x86.
   2683      * Improvements of stack-probing and stack-allocation mechanisms.
   2684      * Support of push/pop-macro pragma as preprocessor command.
   2685        With #pragma push_macro("macro-name") the current definition of
   2686        macro-name is saved and can be restored with #pragma
   2687        pop_macro("macro-name") to its saved definition.
   2688      * Enable 128-bit long double (__float128) support on MinGW and
   2689        Cygwin.
   2690 
   2691 Other significant improvements
   2692 
   2693   Installation changes
   2694 
   2695      * An install-strip make target is provided that installs stripped
   2696        executables, and may install libraries with unneeded or debugging
   2697        sections stripped.
   2698      * On Power7 systems, there is a potential problem if you build the
   2699        GCC compiler with a host compiler using options that enable the VSX
   2700        instruction set generation. If the host compiler has been patched
   2701        so that the vec_ld and vec_st builtin functions generate Altivec
   2702        memory instructions instead of VSX memory instructions, then you
   2703        should be able to build the compiler with VSX instruction
   2704        generation.
   2705 
   2706 Changes for GCC Developers
   2707 
   2708    Note: these changes concern developers that develop GCC itself or
   2709    software that integrates with GCC, such as plugins, and not the general
   2710    GCC users.
   2711      * The gengtype utility, which previously was internal to the GCC
   2712        build process, has been enchanced to provide GC root information
   2713        for plugins as necessary.
   2714      * The old GC allocation interface of ggc_alloc and friends was
   2715        replaced with a type-safe alternative.
   2716 
   2717 GCC 4.6.1
   2718 
   2719    This is the [20]list of problem reports (PRs) from GCC's bug tracking
   2720    system that are known to be fixed in the 4.6.1 release. This list might
   2721    not be complete (that is, it is possible that some PRs that have been
   2722    fixed are not listed here).
   2723 
   2724 GCC 4.6.2
   2725 
   2726    This is the [21]list of problem reports (PRs) from GCC's bug tracking
   2727    system that are known to be fixed in the 4.6.2 release. This list might
   2728    not be complete (that is, it is possible that some PRs that have been
   2729    fixed are not listed here).
   2730 
   2731 GCC 4.6.3
   2732 
   2733    This is the [22]list of problem reports (PRs) from GCC's bug tracking
   2734    system that are known to be fixed in the 4.6.3 release. This list might
   2735    not be complete (that is, it is possible that some PRs that have been
   2736    fixed are not listed here).
   2737 
   2738 GCC 4.6.4
   2739 
   2740    This is the [23]list of problem reports (PRs) from GCC's bug tracking
   2741    system that are known to be fixed in the 4.6.4 release. This list might
   2742    not be complete (that is, it is possible that some PRs that have been
   2743    fixed are not listed here).
   2744 
   2745 
   2746     For questions related to the use of GCC, please consult these web
   2747     pages and the [24]GCC manuals. If that fails, the
   2748     [25]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   2749     web pages and the development of GCC are welcome on our developer
   2750     list at [26]gcc (a] gcc.gnu.org. All of [27]our lists have public
   2751     archives.
   2752 
   2753    Copyright (C) [28]Free Software Foundation, Inc. Verbatim copying and
   2754    distribution of this entire article is permitted in any medium,
   2755    provided this notice is preserved.
   2756 
   2757    These pages are [29]maintained by the GCC team. Last modified
   2758    2013-04-12[30].
   2759 
   2760 References
   2761 
   2762    1. http://sourceware.org/bugzilla/show_bug.cgi?id=10401
   2763    2. http://gcc.gnu.org/gcc-4.5/changes.html
   2764    3. http://gcc.gnu.org/gcc-4.5/changes.html#obsoleted
   2765    4. http://gcc.gnu.org/gcc-4.6/porting_to.html
   2766    5. http://gcc.gnu.org/projects/lto/whopr.pdf
   2767    6. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
   2768    7. http://gcc.gnu.org/gcc-4.6/cxx0x_status.html
   2769    8. http://gcc.gnu.org/PR43145
   2770    9. http://gcc.gnu.org/PR43680
   2771   10. http://gcc.gnu.org/PR33558
   2772   11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#253
   2773   12. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x
   2774   13. http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html
   2775   14. http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.races
   2776   15. http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html
   2777   16. http://gcc.gnu.org/wiki/OOP
   2778   17. http://gcc.gnu.org/wiki/Coarray
   2779   18. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcoarray_007d-233
   2780   19. http://golang.org/
   2781   20. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.1
   2782   21. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.2
   2783   22. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.3
   2784   23. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.4
   2785   24. http://gcc.gnu.org/onlinedocs/
   2786   25. mailto:gcc-help (a] gcc.gnu.org
   2787   26. mailto:gcc (a] gcc.gnu.org
   2788   27. http://gcc.gnu.org/lists.html
   2789   28. http://www.fsf.org/
   2790   29. http://gcc.gnu.org/about.html
   2791   30. http://validator.w3.org/check/referer
   2792 ======================================================================
   2793 http://gcc.gnu.org/gcc-4.5/index.html
   2794 
   2795                              GCC 4.5 Release Series
   2796 
   2797    Jul 2, 2012
   2798 
   2799    The [1]GNU project and the GCC developers are pleased to announce the
   2800    release of GCC 4.5.4.
   2801 
   2802    This release is a bug-fix release, containing fixes for regressions in
   2803    GCC 4.5.3 relative to previous releases of GCC.
   2804 
   2805 Release History
   2806 
   2807    GCC 4.5.4
   2808           Jul 2, 2012 ([2]changes)
   2809 
   2810    GCC 4.5.3
   2811           Apr 28, 2011 ([3]changes)
   2812 
   2813    GCC 4.5.2
   2814           Dec 16, 2010 ([4]changes)
   2815 
   2816    GCC 4.5.1
   2817           Jul 31, 2010 ([5]changes)
   2818 
   2819    GCC 4.5.0
   2820           April 14, 2010 ([6]changes)
   2821 
   2822 References and Acknowledgements
   2823 
   2824    GCC used to stand for the GNU C Compiler, but since the compiler
   2825    supports several other languages aside from C, it now stands for the
   2826    GNU Compiler Collection.
   2827 
   2828    A list of [7]successful builds is updated as new information becomes
   2829    available.
   2830 
   2831    The GCC developers would like to thank the numerous people that have
   2832    contributed new features, improvements, bug fixes, and other changes as
   2833    well as test results to GCC. This [8]amazing group of volunteers is
   2834    what makes GCC successful.
   2835 
   2836    For additional information about GCC please refer to the [9]GCC project
   2837    web site or contact the [10]GCC development mailing list.
   2838 
   2839    To obtain GCC please use [11]our mirror sites or [12]our SVN server.
   2840 
   2841 
   2842     For questions related to the use of GCC, please consult these web
   2843     pages and the [13]GCC manuals. If that fails, the
   2844     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   2845     web pages and the development of GCC are welcome on our developer
   2846     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
   2847     archives.
   2848 
   2849    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
   2850    distribution of this entire article is permitted in any medium,
   2851    provided this notice is preserved.
   2852 
   2853    These pages are [18]maintained by the GCC team. Last modified
   2854    2012-11-02[19].
   2855 
   2856 References
   2857 
   2858    1. http://www.gnu.org/
   2859    2. http://gcc.gnu.org/gcc-4.5/changes.html
   2860    3. http://gcc.gnu.org/gcc-4.5/changes.html
   2861    4. http://gcc.gnu.org/gcc-4.5/changes.html
   2862    5. http://gcc.gnu.org/gcc-4.5/changes.html
   2863    6. http://gcc.gnu.org/gcc-4.5/changes.html
   2864    7. http://gcc.gnu.org/gcc-4.5/buildstat.html
   2865    8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   2866    9. http://gcc.gnu.org/index.html
   2867   10. mailto:gcc (a] gcc.gnu.org
   2868   11. http://gcc.gnu.org/mirrors.html
   2869   12. http://gcc.gnu.org/svn.html
   2870   13. http://gcc.gnu.org/onlinedocs/
   2871   14. mailto:gcc-help (a] gcc.gnu.org
   2872   15. mailto:gcc (a] gcc.gnu.org
   2873   16. http://gcc.gnu.org/lists.html
   2874   17. http://www.fsf.org/
   2875   18. http://gcc.gnu.org/about.html
   2876   19. http://validator.w3.org/check/referer
   2877 ======================================================================
   2878 http://gcc.gnu.org/gcc-4.5/changes.html
   2879 
   2880                              GCC 4.5 Release Series
   2881                         Changes, New Features, and Fixes
   2882 
   2883 Caveats
   2884 
   2885      * GCC now requires the [1]MPC library in order to build. See the
   2886        [2]prerequisites page for version requirements.
   2887      * Support for a number of older systems and recently unmaintained or
   2888        untested target ports of GCC has been declared obsolete in GCC 4.5.
   2889        Unless there is activity to revive them, the next release of GCC
   2890        will have their sources permanently removed.
   2891        The following ports for individual systems on particular
   2892        architectures have been obsoleted:
   2893           + IRIX releases before 6.5 (mips-sgi-irix5*,
   2894             mips-sgi-irix6.[0-4])
   2895           + Solaris 7 (*-*-solaris2.7)
   2896           + Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*,
   2897             alpha-dec-osf5.0*)
   2898           + Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions
   2899             can be found in the [3]announcement.
   2900        Support for the classic POWER architecture implemented in the
   2901        original RIOS and RIOS2 processors of the old IBM RS/6000 product
   2902        line has been obsoleted in the rs6000 port. This does not affect
   2903        the new generation Power and PowerPC architectures.
   2904      * Support has been removed for all the [4]configurations obsoleted in
   2905        GCC 4.4.
   2906      * Support has been removed for the protoize and unprotoize utilities,
   2907        obsoleted in GCC 4.4.
   2908      * Support has been removed for tuning for Itanium1 (Merced) variants.
   2909        Note that code tuned for Itanium2 should also run correctly on
   2910        Itanium1.
   2911      * GCC now generates unwind info also for epilogues. DWARF debuginfo
   2912        generated by GCC now uses more features of DWARF3 than before, and
   2913        also some DWARF4 features. GDB older than 7.0 is not able to handle
   2914        either of these, so to debug GCC 4.5 generated binaries or
   2915        libraries GDB 7.0 or later is needed. You can disable use of DWARF4
   2916        features with the -gdwarf-3 -gstrict-dwarf options, or use
   2917        -gdwarf-2 -gstrict-dwarf to restrict GCC to just DWARF2, but
   2918        epilogue unwind info is emitted unconditionally whenever unwind
   2919        info is emitted.
   2920      * On x86 targets, code containing floating-point calculations may run
   2921        significantly slower when compiled with GCC 4.5 in strict C99
   2922        conformance mode than they did with earlier GCC versions. This is
   2923        due to stricter standard conformance of the compiler and can be
   2924        avoided by using the option -fexcess-precision=fast; also see
   2925        [5]below.
   2926      * The function attribute noinline no longer prevents GCC from cloning
   2927        the function. A new attribute noclone has been introduced for this
   2928        purpose. Cloning a function means that it is duplicated and the new
   2929        copy is specialized for certain contexts (for example when a
   2930        parameter is a known constant).
   2931 
   2932 General Optimizer Improvements
   2933 
   2934      * The -save-temps now takes an optional argument. The -save-temps and
   2935        -save-temps=cwd switches write the temporary files in the current
   2936        working directory based on the original source file. The
   2937        -save-temps=obj switch will write files into the directory
   2938        specified with the -o option, and the intermediate filenames are
   2939        based on the output file. This will allow the user to get the
   2940        compiler intermediate files when doing parallel builds without two
   2941        builds of the same filename located in different directories from
   2942        interfering with each other.
   2943      * Debugging dumps are now created in the same directory as the object
   2944        file rather than in the current working directory. This allows the
   2945        user to get debugging dumps when doing parallel builds without two
   2946        builds of the same filename interfering with each other.
   2947      * GCC has been integrated with the [6]MPC library. This allows GCC to
   2948        evaluate complex arithmetic at compile time [7]more accurately. It
   2949        also allows GCC to evaluate calls to complex built-in math
   2950        functions having constant arguments and replace them at compile
   2951        time with their mathematically equivalent results. In doing so, GCC
   2952        can generate correct results regardless of the math library
   2953        implementation or floating point precision of the host platform.
   2954        This also allows GCC to generate identical results regardless of
   2955        whether one compiles in native or cross-compile configurations to a
   2956        particular target. The following built-in functions take advantage
   2957        of this new capability: cacos, cacosh, casin, casinh, catan,
   2958        catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
   2959        and ctanh. The float and long double variants of these functions
   2960        (e.g. csinf and csinl) are also handled.
   2961      * A new link-time optimizer has been added ([8]-flto). When this
   2962        option is used, GCC generates a bytecode representation of each
   2963        input file and writes it to specially-named sections in each object
   2964        file. When the object files are linked together, all the function
   2965        bodies are read from these named sections and instantiated as if
   2966        they had been part of the same translation unit. This enables
   2967        interprocedural optimizations to work across different files (and
   2968        even different languages), potentially improving the performance of
   2969        the generated code. To use the link-timer optimizer, -flto needs to
   2970        be specified at compile time and during the final link. If the
   2971        program does not require any symbols to be exported, it is possible
   2972        to combine -flto and the experimental [9]-fwhopr with
   2973        [10]-fwhole-program to allow the interprocedural optimizers to use
   2974        more aggressive assumptions.
   2975      * The automatic parallelization pass was enhanced to support
   2976        parallelization of outer loops.
   2977      * Automatic parallelization can be enabled as part of Graphite. In
   2978        addition to -ftree-parallelize-loops=, specify
   2979        -floop-parallelize-all to enable the Graphite-based optimization.
   2980      * The infrastructure for optimizing based on [11]restrict qualified
   2981        pointers has been rewritten and should result in code generation
   2982        improvements. Optimizations based on restrict qualified pointers
   2983        are now also available when using -fno-strict-aliasing.
   2984      * There is a new optimization pass that attempts to change prototype
   2985        of functions to avoid unused parameters, pass only relevant parts
   2986        of structures and turn arguments passed by reference to arguments
   2987        passed by value when possible. It is enabled by -O2 and above as
   2988        well as -Os and can be manually invoked using the new command-line
   2989        switch -fipa-sra.
   2990      * GCC now optimize exception handling code. In particular cleanup
   2991        regions that are proved to not have any effect are optimized out.
   2992 
   2993 New Languages and Language specific improvements
   2994 
   2995   All languages
   2996 
   2997      * The -fshow-column option is now on by default. This means error
   2998        messages now have a column associated with them.
   2999 
   3000   Ada
   3001 
   3002      * Compilation of programs heavily using discriminated record types
   3003        with variant parts has been sped up and generates more compact
   3004        code.
   3005      * Stack checking now works reasonably well on most plaforms. In some
   3006        specific cases, stack overflows may still fail to be detected, but
   3007        a compile-time warning will be issued for these cases.
   3008 
   3009   C family
   3010 
   3011      * If a header named in a #include directive is not found, the
   3012        compiler exits immediately. This avoids a cascade of errors arising
   3013        from declarations expected to be found in that header being
   3014        missing.
   3015      * A new built-in function __builtin_unreachable() has been added that
   3016        tells the compiler that control will never reach that point. It may
   3017        be used after asm statements that terminate by transferring control
   3018        elsewhere, and in other places that are known to be unreachable.
   3019      * The -Wlogical-op option now warns for logical expressions such as
   3020        (c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be
   3021        mistakes. This option is disabled by default.
   3022      * An asm goto feature has been added to allow asm statements that
   3023        jump to C labels.
   3024      * C++0x raw strings are supported for C++ and for C with -std=gnu99.
   3025      * The deprecated attribute now takes an optional string argument, for
   3026        example, __attribute__((deprecated("text string"))), that will be
   3027        printed together with the deprecation warning.
   3028 
   3029   C
   3030 
   3031      * The -Wenum-compare option, which warns when comparing values of
   3032        different enum types, now works for C. It formerly only worked for
   3033        C++. This warning is enabled by -Wall. It may be avoided by using a
   3034        type cast.
   3035      * The -Wcast-qual option now warns about casts which are unsafe in
   3036        that they permit const-correctness to be violated without further
   3037        warnings. Specifically, it warns about cases where a qualifier is
   3038        added when all the lower types are not const. For example, it warns
   3039        about a cast from char ** to const char **.
   3040      * The -Wc++-compat option is significantly improved. It issues new
   3041        warnings for:
   3042           + Using C++ reserved operator names as identifiers.
   3043           + Conversions to enum types without explicit casts.
   3044           + Using va_arg with an enum type.
   3045           + Using different enum types in the two branches of ?:.
   3046           + Using ++ or -- on a variable of enum type.
   3047           + Using the same name as both a struct, union or enum tag and a
   3048             typedef, unless the typedef refers to the tagged type itself.
   3049           + Using a struct, union, or enum which is defined within another
   3050             struct or union.
   3051           + A struct field defined using a typedef if there is a field in
   3052             the struct, or an enclosing struct, whose name is the typedef
   3053             name.
   3054           + Duplicate definitions at file scope.
   3055           + Uninitialized const variables.
   3056           + A global variable with an anonymous struct, union, or enum
   3057             type.
   3058           + Using a string constant to initialize a char array whose size
   3059             is the length of the string.
   3060      * The new -Wjump-misses-init option warns about cases where a goto or
   3061        switch skips the initialization of a variable. This sort of branch
   3062        is an error in C++ but not in C. This warning is enabled by
   3063        -Wc++-compat.
   3064      * GCC now ensures that a C99-conforming <stdint.h> is present on most
   3065        targets, and uses information about the types in this header to
   3066        implement the Fortran bindings to those types. GCC does not ensure
   3067        the presence of such a header, and does not implement the Fortran
   3068        bindings, on the following targets: NetBSD, VxWorks, VMS,
   3069        SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF.
   3070      * GCC now implements C90- and C99-conforming rules for constant
   3071        expressions. This may cause warnings or errors for some code using
   3072        expressions that can be folded to a constant but are not constant
   3073        expressions as defined by ISO C.
   3074      * All known target-independent C90 and C90 Amendment 1 conformance
   3075        bugs, and all known target-independent C99 conformance bugs not
   3076        related to floating point or extended identifiers, have been fixed.
   3077      * The C decimal floating point support now includes support for the
   3078        FLOAT_CONST_DECIMAL64 pragma.
   3079      * The named address space feature from ISO/IEC TR 18037 is now
   3080        supported. This is currently only implemented for the SPU
   3081        processor.
   3082 
   3083   C++
   3084 
   3085      * Improved [12]experimental support for the upcoming C++0x ISO C++
   3086        standard, including support for raw strings, lambda expressions and
   3087        explicit type conversion operators.
   3088      * When printing the name of a class template specialization, G++ will
   3089        now omit any template arguments which come from default template
   3090        arguments. This behavior (and the pretty-printing of function
   3091        template specializations as template signature and arguments) can
   3092        be disabled with the -fno-pretty-templates option.
   3093      * Access control is now applied to typedef names used in a template,
   3094        which may cause G++ to reject some ill-formed code that was
   3095        accepted by earlier releases. The -fno-access-control option can be
   3096        used as a temporary workaround until the code is corrected.
   3097      * Compilation time for code that uses templates should now scale
   3098        linearly with the number of instantiations rather than
   3099        quadratically, as template instantiations are now looked up using
   3100        hash tables.
   3101      * Declarations of functions that look like builtin declarations of
   3102        library functions are only considered to be redeclarations if they
   3103        are declared with extern "C". This may cause problems with code
   3104        that omits extern "C" on hand-written declarations of C library
   3105        functions such as abort or memcpy. Such code is ill-formed, but was
   3106        accepted by earlier releases.
   3107      * Diagnostics that used to complain about passing non-POD types to
   3108        ... or jumping past the declaration of a non-POD variable now check
   3109        for triviality rather than PODness, as per C++0x.
   3110      * In C++0x mode local and anonymous classes are now allowed as
   3111        template arguments, and in declarations of variables and functions
   3112        with linkage, so long as any such declaration that is used is also
   3113        defined ([13]DR 757).
   3114      * Labels may now have attributes, as has been permitted for a while
   3115        in C. This is only permitted when the label definition and the
   3116        attribute specifier is followed by a semicolon--i.e., the label
   3117        applies to an empty statement. The only useful attribute for a
   3118        label is unused.
   3119      * G++ now implements [14]DR 176. Previously G++ did not support using
   3120        the injected-class-name of a template base class as a type name,
   3121        and lookup of the name found the declaration of the template in the
   3122        enclosing scope. Now lookup of the name finds the
   3123        injected-class-name, which can be used either as a type or as a
   3124        template, depending on whether or not the name is followed by a
   3125        template argument list. As a result of this change, some code that
   3126        was previously accepted may be ill-formed because
   3127          1. The injected-class-name is not accessible because it's from a
   3128             private base, or
   3129          2. The injected-class-name cannot be used as an argument for a
   3130             template template parameter.
   3131        In either of these cases, the code can be fixed by adding a
   3132        nested-name-specifier to explicitly name the template. The first
   3133        can be worked around with -fno-access-control; the second is only
   3134        rejected with -pedantic.
   3135      * A new standard mangling for SIMD vector types has been added, to
   3136        avoid name clashes on systems with vectors of varying length. By
   3137        default the compiler still uses the old mangling, but emits aliases
   3138        with the new mangling on targets that support strong aliases. Users
   3139        can switch over entirely to the new mangling with -fabi-version=4
   3140        or -fabi-version=0. -Wabi will now warn about code that uses the
   3141        old mangling.
   3142      * The command-line option -ftemplate-depth-N is now written as
   3143        -ftemplate-depth=N and the old form is deprecated.
   3144      * Conversions between NULL and non-pointer types are now warned by
   3145        default. The new option -Wno-conversion-null disables these
   3146        warnings. Previously these warnings were only available when using
   3147        -Wconversion explicitly.
   3148 
   3149     Runtime Library (libstdc++)
   3150 
   3151      * [15]Improved experimental support for the upcoming ISO C++
   3152        standard, C++0x, including:
   3153           + Support for <future>, <functional>, and <random>.
   3154           + Existing facilities now exploit explicit operators and the
   3155             newly implemented core C++0x features.
   3156      * An experimental [16]profile mode has been added. This is an
   3157        implementation of many C++ standard library constructs with an
   3158        additional analysis layer that gives performance improvement advice
   3159        based on recognition of suboptimal usage patterns. For example,
   3160 #include <vector>
   3161 int main()
   3162 {
   3163   std::vector<int> v;
   3164   for (int k = 0; k < 1024; ++k)
   3165     v.insert(v.begin(), k);
   3166 }
   3167 
   3168        When instrumented via the profile mode, can return suggestions
   3169        about the initial size and choice of the container used as follows:
   3170 vector-to-list: improvement = 5: call stack = 0x804842c ...
   3171     : advice = change std::vector to std::list
   3172 vector-size: improvement = 3: call stack = 0x804842c ...
   3173     : advice = change initial container size from 0 to 1024
   3174 
   3175        These constructs can be substituted for the normal libstdc++
   3176        constructs on a piecemeal basis, or all existing components can be
   3177        transformed via the -D_GLIBCXX_PROFILE macro.
   3178      * [17]Support for decimal floating-point arithmetic (aka ISO C++ TR
   3179        24733) has been added. This support is in header file
   3180        <decimal/decimal>, uses namespace std::decimal, and includes
   3181        classes decimal32, decimal64, and decimal128.
   3182      * Sources have been audited for application of function attributes
   3183        nothrow, const, pure, and noreturn.
   3184      * Python pretty-printers have been added for many standard library
   3185        components that simplify the internal representation and present a
   3186        more intuitive view of components when used with
   3187        appropriately-advanced versions of GDB. For more information,
   3188        please consult the more [18]detailed description.
   3189      * The default behavior for comparing typeinfo names has changed, so
   3190        in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
   3191      * The new -static-libstdc++ option directs g++ to link the C++
   3192        library statically, even if the default would normally be to link
   3193        it dynamically.
   3194 
   3195   Fortran
   3196 
   3197      * The COMMON default padding has been changed - instead of adding the
   3198        padding before a variable it is now added afterwards, which
   3199        increases the compatibility with other vendors and helps to obtain
   3200        the correct output in some cases. Cf. also the -falign-commons
   3201        option ([19]added in 4.4).
   3202      * The -finit-real= option now also supports the value snan for
   3203        signalling not-a-number; to be effective, one additionally needs to
   3204        enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
   3205        optimizations can turn a signalling NaN into a quiet one.
   3206      * The new option -fcheck= has been added with the options bounds,
   3207        array-temps, do, pointer, and recursive. The bounds and array-temps
   3208        options are equivalent to -fbounds-check and
   3209        -fcheck-array-temporaries. The do option checks for invalid
   3210        modification of loop iteration variables, and the recursive option
   3211        tests for recursive calls to subroutines/functions which are not
   3212        marked as recursive. With pointer pointer association checks in
   3213        calls are performed; however, neither undefined pointers nor
   3214        pointers in expressions are handled. Using -fcheck=all enables all
   3215        these run-time checks.
   3216      * The run-time checking -fcheck=bounds now warns about invalid string
   3217        lengths of character dummy arguments. Additionally, more
   3218        compile-time checks have been added.
   3219      * The new option [20]-fno-protect-parens has been added; if set, the
   3220        compiler may reorder REAL and COMPLEX expressions without regard to
   3221        parentheses.
   3222      * GNU Fortran no longer links against libgfortranbegin. As before,
   3223        MAIN__ (assembler symbol name) is the actual Fortran main program,
   3224        which is invoked by the main function. However, main is now
   3225        generated and put in the same object file as MAIN__. For the time
   3226        being, libgfortranbegin still exists for backward compatibility.
   3227        For details see the new [21]Mixed-Language Programming chapter in
   3228        the manual.
   3229      * The I/O library was restructured for performance and cleaner code.
   3230      * Array assignments and WHERE are now run in parallel when OpenMP's
   3231        WORKSHARE is used.
   3232      * The experimental option -fwhole-file was added. The option allows
   3233        whole-file checking of procedure arguments and allows for better
   3234        optimizations. It can also be used with -fwhole-program, which is
   3235        now also supported in gfortran.
   3236      * More Fortran 2003 and Fortran 2008 mathematical functions can now
   3237        be used as initialization expressions.
   3238      * Some extended attributes such as STDCALL are now supported via the
   3239        [22]GCC$ compiler directive.
   3240      * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
   3241        intrinsic behaves now as if zero were always positive.
   3242      * For legacy compatibiliy: On Cygwin and MinGW, the special files
   3243        CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now
   3244        supported.
   3245      * Fortran 2003 support has been extended:
   3246           + Procedure-pointer function results and procedure-pointer
   3247             components (including PASS),
   3248           + allocatable scalars (experimental),
   3249           + DEFERRED type-bound procedures,
   3250           + the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements
   3251             have been implemented.
   3252           + The ALLOCATE statement supports type-specs and the SOURCE=
   3253             argument.
   3254           + OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC
   3255             type-bound procedure (i.e. as type-bound operators).
   3256           + Rounding (ROUND=, RZ, ...) for output is now supported.
   3257           + The INT_FAST{8,16,32,64,128}_T kind type parameters of the
   3258             intrinsic module ISO_C_BINDING are now supported, except for
   3259             the targets listed above as ones where GCC does not have
   3260             <stdint.h> type information.
   3261           + Extensible derived types with type-bound procedure or
   3262             procedure pointer with PASS attribute now have to use CLASS in
   3263             line with the Fortran 2003 standard; the workaround to use
   3264             TYPE is no longer supported.
   3265           + [23]Experimental, incomplete support for polymorphism,
   3266             including CLASS, SELECT TYPE and dynamic dispatch of
   3267             type-bound procedure calls. Some features do not work yet such
   3268             as unlimited polymorphism (CLASS(*)).
   3269      * Fortran 2008 support has been extended:
   3270           + The OPEN statement now supports the NEWUNIT= option, which
   3271             returns a unique file unit, thus preventing inadvertent use of
   3272             the same unit in different parts of the program.
   3273           + Support for unlimited format items has been added.
   3274           + The INT{8,16,32} and REAL{32,64,128} kind type parameters of
   3275             the intrinsic module ISO_FORTRAN_ENV are now supported.
   3276           + Using complex arguments with TAN, SINH, COSH, TANH, ASIN,
   3277             ACOS, and ATAN is now possible; the functions ASINH, ACOSH,
   3278             and ATANH have been added (for real and complex arguments) and
   3279             ATAN(Y,X) is now an alias for ATAN2(Y,X).
   3280           + The BLOCK construct has been implemented.
   3281 
   3282 New Targets and Target Specific Improvements
   3283 
   3284   AIX
   3285 
   3286      * Full cross-toolchain support now available with GNU Binutils
   3287 
   3288   ARM
   3289 
   3290      * GCC now supports the Cortex-M0 and Cortex-A5 processors.
   3291      * GCC now supports the ARM v7E-M architecture.
   3292      * GCC now supports VFPv4-based FPUs and FPUs with
   3293        single-precision-only VFP.
   3294      * GCC has many improvements to optimization for other ARM processors,
   3295        including scheduling support for the integer pipeline on Cortex-A9.
   3296      * GCC now supports the IEEE 754-2008 half-precision floating-point
   3297        type, and a variant ARM-specific half-precision type. This type is
   3298        specified using __fp16, with the layout determined by
   3299        -mfp16-format. With appropriate -mfpu options, the Cortex-A9 and
   3300        VFPv4 half-precision instructions will be used.
   3301      * GCC now supports the variant of AAPCS that uses VFP registers for
   3302        parameter passing and return values.
   3303 
   3304   AVR
   3305 
   3306      * The -mno-tablejump option has been removed because it has the same
   3307        effect as the -fno-jump-tables option.
   3308      * Added support for these new AVR devices:
   3309           + ATmega8U2
   3310           + ATmega16U2
   3311           + ATmega32U2
   3312 
   3313   IA-32/x86-64
   3314 
   3315      * GCC now will set the default for -march= based on the configure
   3316        target.
   3317      * GCC now supports handling floating-point excess precision arising
   3318        from use of the x87 floating-point unit in a way that conforms to
   3319        ISO C99. This is enabled with -fexcess-precision=standard and with
   3320        standards conformance options such as -std=c99, and may be disabled
   3321        using -fexcess-precision=fast.
   3322      * Support for the Intel Atom processor is now available through the
   3323        -march=atom and -mtune=atom options.
   3324      * A new -mcrc32 option is now available to enable crc32 intrinsics.
   3325      * A new -mmovbe option is now available to enable GCC to use the
   3326        movbe instruction to implement __builtin_bswap32 and
   3327        __builtin_bswap64.
   3328      * SSE math now can be enabled by default at configure time with the
   3329        new --with-fpmath=sse option.
   3330      * There is a new intrinsic header file, <x86intrin.h>. It should be
   3331        included before using any IA-32/x86-64 intrinsics.
   3332      * Support for the XOP, FMA4, and LWP instruction sets for the AMD
   3333        Orochi processors are now available with the -mxop, -mfma4, and
   3334        -mlwp options.
   3335      * The -mabm option enables GCC to use the popcnt and lzcnt
   3336        instructions on AMD processors.
   3337      * The -mpopcnt option enables GCC to use the popcnt instructions on
   3338        both AMD and Intel processors.
   3339 
   3340   M68K/ColdFire
   3341 
   3342      * GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x
   3343        and 5441x devices.
   3344      * GCC now supports thread-local storage (TLS) on M68K and ColdFire
   3345        processors.
   3346 
   3347   MeP
   3348 
   3349    Support has been added for the Toshiba Media embedded Processor (MeP,
   3350    or mep-elf) embedded target.
   3351 
   3352   MIPS
   3353 
   3354      * GCC now supports MIPS 1004K processors.
   3355      * GCC can now be configured with options --with-arch-32,
   3356        --with-arch-64, --with-tune-32 and --with-tune-64 to control the
   3357        default optimization separately for 32-bit and 64-bit modes.
   3358      * MIPS targets now support an alternative _mcount interface, in which
   3359        register $12 points to the function's save slot for register $31.
   3360        This interface is selected by the -mcount-ra-address option; see
   3361        the documentation for more details.
   3362      * GNU/Linux targets can now generate read-only .eh_frame sections.
   3363        This optimization requires GNU binutils 2.20 or above, and is only
   3364        available if GCC is configured with a suitable version of binutils.
   3365      * GNU/Linux targets can now attach special relocations to indirect
   3366        calls, so that the linker can turn them into direct jumps or
   3367        branches. This optimization requires GNU binutils 2.20 or later,
   3368        and is automatically selected if GCC is configured with an
   3369        appropriate version of binutils. It can be explicitly enabled or
   3370        disabled using the -mrelax-pic-calls command-line option.
   3371      * GCC now generates more heavily-optimized atomic operations on
   3372        Octeon processors.
   3373      * MIPS targets now support the -fstack-protector option.
   3374      * GCC now supports an -msynci option, which specifies that synci is
   3375        enough to flush the instruction cache, without help from the
   3376        operating system. GCC uses this information to optimize
   3377        automatically-generated cache flush operations, such as those used
   3378        for nested functions in C. There is also a --with-synci
   3379        configure-time option, which makes -msynci the default.
   3380      * GCC supports four new function attributes for interrupt handlers:
   3381        interrupt, use_shadow_register_set, keep_interrupts_masked and
   3382        use_debug_exception_return. See the documentation for more details
   3383        about these attributes.
   3384 
   3385   RS/6000 (POWER/PowerPC)
   3386 
   3387      * GCC now supports the Power ISA 2.06, which includes the VSX
   3388        instructions that add vector 64-bit floating point support, new
   3389        population count instructions, and conversions between floating
   3390        point and unsigned types.
   3391      * Support for the power7 processor is now available through the
   3392        -mcpu=power7 and -mtune=power7.
   3393      * GCC will now vectorize loops that contain simple math functions
   3394        like copysign when generating code for altivec or VSX targets.
   3395      * Support for the A2 processor is now available through the -mcpu=a2
   3396        and -mtune=a2 options.
   3397      * Support for the 476 processor is now available through the
   3398        -mcpu={476,476fp} and -mtune={476,476fp} options.
   3399      * Support for the e500mc64 processor is now available through the
   3400        -mcpu=e500mc64 and -mtune=e500mc64 options.
   3401      * GCC can now be configured with options --with-cpu-32,
   3402        --with-cpu-64, --with-tune-32 and --with-tune-64 to control the
   3403        default optimization separately for 32-bit and 64-bit modes.
   3404      * Starting with GCC 4.5.4, vectors of type vector long long or vector
   3405        long are passed and returned in the same method as other vectors
   3406        with the VSX instruction set. Previously the GCC compiler did not
   3407        adhere to the ABI for 128-bit vectors with 64-bit integer base
   3408        types (PR 48857). This is also fixed in the GCC 4.6.1 release.
   3409 
   3410   RX
   3411 
   3412    Support has been added for the Renesas RX Processor (rx-elf) target.
   3413 
   3414 Operating Systems
   3415 
   3416   Windows (Cygwin and MinGW)
   3417 
   3418      * GCC now installs all the major language runtime libraries as DLLs
   3419        when configured with the --enable-shared option.
   3420      * GCC now makes use of the new support for aligned common variables
   3421        in versions of binutils >= 2.20 to fix bugs in the support for SSE
   3422        data types.
   3423      * Improvements to the libffi support library increase the reliability
   3424        of code generated by GCJ on all Windows platforms. Libgcj is
   3425        enabled by default for the first time.
   3426      * Libtool improvements simplify installation by placing the generated
   3427        DLLs in the correct binaries directory.
   3428      * Numerous other minor bugfixes and improvements, and substantial
   3429        enhancements to the Fortran language support library.
   3430 
   3431    >
   3432 
   3433 Other significant improvements
   3434 
   3435   Plugins
   3436 
   3437      * It is now possible to extend the compiler without having to modify
   3438        its source code. A new option -fplugin=file.so tells GCC to load
   3439        the shared object file.so and execute it as part of the compiler.
   3440        The internal documentation describes the details on how plugins can
   3441        interact with the compiler.
   3442 
   3443   Installation changes
   3444 
   3445      * The move to newer autotools changed default installation
   3446        directories and switches to control them: The --with-datarootdir,
   3447        --with-docdir, --with-pdfdir, and --with-htmldir switches are not
   3448        used any more. Instead, you can now use --datarootdir, --docdir,
   3449        --htmldir, and --pdfdir. The default installation directories have
   3450        changed as follows according to the GNU Coding Standards:
   3451 
   3452        datarootdir read-only architecture-independent data root [PREFIX/share]
   3453        localedir   locale-specific message catalogs [DATAROOTDIR/locale]
   3454        docdir      documentation root [DATAROOTDIR/doc/PACKAGE]
   3455        htmldir     html documentation [DOCDIR]
   3456        dvidir      dvi documentation [DOCDIR]
   3457        pdfdir      pdf documentation [DOCDIR]
   3458        psdir       ps documentation [DOCDIR]
   3459        The following variables have new default values:
   3460 
   3461        datadir read-only architecture-independent data [DATAROOTDIR]
   3462        infodir info documentation [DATAROOTDIR/info]
   3463        mandir  man documentation [DATAROOTDIR/man]
   3464 
   3465 GCC 4.5.1
   3466 
   3467    This is the [24]list of problem reports (PRs) from GCC's bug tracking
   3468    system that are known to be fixed in the 4.5.1 release. This list might
   3469    not be complete (that is, it is possible that some PRs that have been
   3470    fixed are not listed here).
   3471 
   3472   All languages
   3473 
   3474      * GCC's new link-time optimizer ([25]-flto) now also works on a few
   3475        non-ELF targets:
   3476           + Cygwin (*-cygwin*)
   3477           + MinGW (*-mingw*)
   3478           + Darwin on x86-64 (x86_64-apple-darwin*)
   3479        LTO is not enabled by default for these targets. To enable LTO, you
   3480        should configure with the --enable-lto option.
   3481 
   3482 GCC 4.5.2
   3483 
   3484    This is the [26]list of problem reports (PRs) from GCC's bug tracking
   3485    system that are known to be fixed in the 4.5.2 release. This list might
   3486    not be complete (that is, it is possible that some PRs that have been
   3487    fixed are not listed here).
   3488 
   3489 GCC 4.5.3
   3490 
   3491    This is the [27]list of problem reports (PRs) from GCC's bug tracking
   3492    system that are known to be fixed in the 4.5.3 release. This list might
   3493    not be complete (that is, it is possible that some PRs that have been
   3494    fixed are not listed here).
   3495 
   3496    On the PowerPC compiler, the Altivec builtin functions vec_ld and
   3497    vec_st have been modified to generate the Altivec memory instructions
   3498    LVX and STVX, even if the -mvsx option is used. In the initial GCC 4.5
   3499    release, these builtin functions were changed to generate VSX memory
   3500    reference instructions instead of Altivec memory instructions, but
   3501    there are differences between the two instructions. If the VSX
   3502    instruction set is available, you can now use the new builtin functions
   3503    vec_vsx_ld and vec_vsx_st which always generates the VSX memory
   3504    instructions.
   3505 
   3506 GCC 4.5.4
   3507 
   3508    This is the [28]list of problem reports (PRs) from GCC's bug tracking
   3509    system that are known to be fixed in the 4.5.4 release. This list might
   3510    not be complete (that is, it is possible that some PRs that have been
   3511    fixed are not listed here).
   3512 
   3513 
   3514     For questions related to the use of GCC, please consult these web
   3515     pages and the [29]GCC manuals. If that fails, the
   3516     [30]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   3517     web pages and the development of GCC are welcome on our developer
   3518     list at [31]gcc (a] gcc.gnu.org. All of [32]our lists have public
   3519     archives.
   3520 
   3521    Copyright (C) [33]Free Software Foundation, Inc. Verbatim copying and
   3522    distribution of this entire article is permitted in any medium,
   3523    provided this notice is preserved.
   3524 
   3525    These pages are [34]maintained by the GCC team. Last modified
   3526    2012-11-02[35].
   3527 
   3528 References
   3529 
   3530    1. http://www.multiprecision.org/
   3531    2. http://gcc.gnu.org/install/prerequisites.html
   3532    3. http://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
   3533    4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
   3534    5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
   3535    6. http://www.multiprecision.org/
   3536    7. http://gcc.gnu.org/PR30789
   3537    8. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
   3538    9. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
   3539   10. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
   3540   11. http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
   3541   12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
   3542   13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
   3543   14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
   3544   15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x
   3545   16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
   3546   17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
   3547   18. http://sourceware.org/gdb/wiki/STLSupport
   3548   19. http://gcc.gnu.org/gcc-4.4/changes.html
   3549   20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
   3550   21. http://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
   3551   22. http://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
   3552   23. http://gcc.gnu.org/wiki/OOP
   3553   24. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
   3554   25. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
   3555   26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
   3556   27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
   3557   28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
   3558   29. http://gcc.gnu.org/onlinedocs/
   3559   30. mailto:gcc-help (a] gcc.gnu.org
   3560   31. mailto:gcc (a] gcc.gnu.org
   3561   32. http://gcc.gnu.org/lists.html
   3562   33. http://www.fsf.org/
   3563   34. http://gcc.gnu.org/about.html
   3564   35. http://validator.w3.org/check/referer
   3565 ======================================================================
   3566 http://gcc.gnu.org/gcc-4.4/index.html
   3567 
   3568                              GCC 4.4 Release Series
   3569 
   3570    March 13, 2012
   3571 
   3572    The [1]GNU project and the GCC developers are pleased to announce the
   3573    release of GCC 4.4.7.
   3574 
   3575    This release is a bug-fix release, containing fixes for regressions in
   3576    GCC 4.4.6 relative to previous releases of GCC.
   3577 
   3578 Release History
   3579 
   3580    GCC 4.4.7
   3581           March 13, 2012 ([2]changes)
   3582 
   3583    GCC 4.4.6
   3584           April 16, 2011 ([3]changes)
   3585 
   3586    GCC 4.4.5
   3587           October 1, 2010 ([4]changes)
   3588 
   3589    GCC 4.4.4
   3590           April 29, 2010 ([5]changes)
   3591 
   3592    GCC 4.4.3
   3593           January 21, 2010 ([6]changes)
   3594 
   3595    GCC 4.4.2
   3596           October 15, 2009 ([7]changes)
   3597 
   3598    GCC 4.4.1
   3599           July 22, 2009 ([8]changes)
   3600 
   3601    GCC 4.4.0
   3602           April 21, 2009 ([9]changes)
   3603 
   3604 References and Acknowledgements
   3605 
   3606    GCC used to stand for the GNU C Compiler, but since the compiler
   3607    supports several other languages aside from C, it now stands for the
   3608    GNU Compiler Collection.
   3609 
   3610    A list of [10]successful builds is updated as new information becomes
   3611    available.
   3612 
   3613    The GCC developers would like to thank the numerous people that have
   3614    contributed new features, improvements, bug fixes, and other changes as
   3615    well as test results to GCC. This [11]amazing group of volunteers is
   3616    what makes GCC successful.
   3617 
   3618    For additional information about GCC please refer to the [12]GCC
   3619    project web site or contact the [13]GCC development mailing list.
   3620 
   3621    To obtain GCC please use [14]our mirror sites or [15]our SVN server.
   3622 
   3623 
   3624     For questions related to the use of GCC, please consult these web
   3625     pages and the [16]GCC manuals. If that fails, the
   3626     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   3627     web pages and the development of GCC are welcome on our developer
   3628     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
   3629     archives.
   3630 
   3631    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
   3632    distribution of this entire article is permitted in any medium,
   3633    provided this notice is preserved.
   3634 
   3635    These pages are [21]maintained by the GCC team. Last modified
   3636    2012-11-02[22].
   3637 
   3638 References
   3639 
   3640    1. http://www.gnu.org/
   3641    2. http://gcc.gnu.org/gcc-4.4/changes.html
   3642    3. http://gcc.gnu.org/gcc-4.4/changes.html
   3643    4. http://gcc.gnu.org/gcc-4.4/changes.html
   3644    5. http://gcc.gnu.org/gcc-4.4/changes.html
   3645    6. http://gcc.gnu.org/gcc-4.4/changes.html
   3646    7. http://gcc.gnu.org/gcc-4.4/changes.html
   3647    8. http://gcc.gnu.org/gcc-4.4/changes.html
   3648    9. http://gcc.gnu.org/gcc-4.4/changes.html
   3649   10. http://gcc.gnu.org/gcc-4.4/buildstat.html
   3650   11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   3651   12. http://gcc.gnu.org/index.html
   3652   13. mailto:gcc (a] gcc.gnu.org
   3653   14. http://gcc.gnu.org/mirrors.html
   3654   15. http://gcc.gnu.org/svn.html
   3655   16. http://gcc.gnu.org/onlinedocs/
   3656   17. mailto:gcc-help (a] gcc.gnu.org
   3657   18. mailto:gcc (a] gcc.gnu.org
   3658   19. http://gcc.gnu.org/lists.html
   3659   20. http://www.fsf.org/
   3660   21. http://gcc.gnu.org/about.html
   3661   22. http://validator.w3.org/check/referer
   3662 ======================================================================
   3663 http://gcc.gnu.org/gcc-4.4/changes.html
   3664 
   3665                              GCC 4.4 Release Series
   3666                         Changes, New Features, and Fixes
   3667 
   3668    The latest release in the 4.4 release series is [1]GCC 4.4.7.
   3669 
   3670 Caveats
   3671 
   3672      * __builtin_stdarg_start has been completely removed from GCC.
   3673        Support for <varargs.h> had been deprecated since GCC 4.0. Use
   3674        __builtin_va_start as a replacement.
   3675      * Some of the errors issued by the C++ front end that could be
   3676        downgraded to warnings in previous releases by using -fpermissive
   3677        are now warnings by default. They can be converted into errors by
   3678        using -pedantic-errors.
   3679      * Use of the cpp assertion extension will now emit a warning when
   3680        -Wdeprecated or -pedantic is used. This extension has been
   3681        deprecated for many years, but never warned about.
   3682      * Packed bit-fields of type char were not properly bit-packed on many
   3683        targets prior to GCC 4.4. On these targets, the fix in GCC 4.4
   3684        causes an ABI change. For example there is no longer a 4-bit
   3685        padding between field a and b in this structure:
   3686     struct foo
   3687     {
   3688       char a:4;
   3689       char b:8;
   3690     } __attribute__ ((packed));
   3691        There is a new warning to help identify fields that are affected:
   3692     foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4
   3693        The warning can be disabled with -Wno-packed-bitfield-compat.
   3694      * On ARM EABI targets, the C++ mangling of the va_list type has been
   3695        changed to conform to the current revision of the EABI. This does
   3696        not affect the libstdc++ library included with GCC.
   3697      * The SCOUNT and POS bits of the MIPS DSP control register are now
   3698        treated as global. Previous versions of GCC treated these fields as
   3699        call-clobbered instead.
   3700      * The MIPS port no longer recognizes the h asm constraint. It was
   3701        necessary to remove this constraint in order to avoid generating
   3702        unpredictable code sequences.
   3703        One of the main uses of the h constraint was to extract the high
   3704        part of a multiplication on 64-bit targets. For example:
   3705     asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
   3706        You can now achieve the same effect using 128-bit types:
   3707     typedef unsigned int uint128_t __attribute__((mode(TI)));
   3708     result = ((uint128_t) x * y) >> 64;
   3709        The second sequence is better in many ways. For example, if x and y
   3710        are constants, the compiler can perform the multiplication at
   3711        compile time. If x and y are not constants, the compiler can
   3712        schedule the runtime multiplication better than it can schedule an
   3713        asm statement.
   3714      * Support for a number of older systems and recently unmaintained or
   3715        untested target ports of GCC has been declared obsolete in GCC 4.4.
   3716        Unless there is activity to revive them, the next release of GCC
   3717        will have their sources permanently removed.
   3718        The following ports for individual systems on particular
   3719        architectures have been obsoleted:
   3720           + Generic a.out on IA32 and m68k (i[34567]86-*-aout*,
   3721             m68k-*-aout*)
   3722           + Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*,
   3723             armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*,
   3724             sh-*-*). This does not affect other more specific targets
   3725             using the COFF object format on those architectures, or the
   3726             more specific H8300 and SH targets (h8300-*-rtems*,
   3727             h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*,
   3728             sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
   3729           + 2BSD on PDP-11 (pdp11-*-bsd)
   3730           + AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*,
   3731             powerpc-ibm-aix4.[12]*)
   3732           + Tuning support for Itanium1 (Merced) variants. Note that code
   3733             tuned for Itanium2 should also run correctly on Itanium1.
   3734      * The protoize and unprotoize utilities have been obsoleted and will
   3735        be removed in GCC 4.5. These utilities have not been installed by
   3736        default since GCC 3.0.
   3737      * Support has been removed for all the [2]configurations obsoleted in
   3738        GCC 4.3.
   3739      * Unknown -Wno-* options are now silently ignored by GCC if no other
   3740        diagnostics are issued. If other diagnostics are issued, then GCC
   3741        warns about the unknown options.
   3742      * More information on porting to GCC 4.4 from previous versions of
   3743        GCC can be found in the [3]porting guide for this release.
   3744 
   3745 General Optimizer Improvements
   3746 
   3747      * A new command-line switch -findirect-inlining has been added. When
   3748        turned on it allows the inliner to also inline indirect calls that
   3749        are discovered to have known targets at compile time thanks to
   3750        previous inlining.
   3751      * A new command-line switch -ftree-switch-conversion has been added.
   3752        This new pass turns simple initializations of scalar variables in
   3753        switch statements into initializations from a static array, given
   3754        that all the values are known at compile time and the ratio between
   3755        the new array size and the original switch branches does not exceed
   3756        the parameter --param switch-conversion-max-branch-ratio (default
   3757        is eight).
   3758      * A new command-line switch -ftree-builtin-call-dce has been added.
   3759        This optimization eliminates unnecessary calls to certain builtin
   3760        functions when the return value is not used, in cases where the
   3761        calls can not be eliminated entirely because the function may set
   3762        errno. This optimization is on by default at -O2 and above.
   3763      * A new command-line switch -fconserve-stack directs the compiler to
   3764        minimize stack usage even if it makes the generated code slower.
   3765        This affects inlining decisions.
   3766      * When the assembler supports it, the compiler will now emit unwind
   3767        information using assembler .cfi directives. This makes it possible
   3768        to use such directives in inline assembler code. The new option
   3769        -fno-dwarf2-cfi-asm directs the compiler to not use .cfi
   3770        directives.
   3771      * The [4]Graphite branch has been merged. This merge has brought in a
   3772        new framework for loop optimizations based on a polyhedral
   3773        intermediate representation. These optimizations apply to all the
   3774        languages supported by GCC. The following new code transformations
   3775        are available in GCC 4.4:
   3776           + -floop-interchange performs loop interchange transformations
   3777             on loops. Interchanging two nested loops switches the inner
   3778             and outer loops. For example, given a loop like:
   3779           DO J = 1, M
   3780             DO I = 1, N
   3781               A(J, I) = A(J, I) * C
   3782             ENDDO
   3783           ENDDO
   3784 
   3785             loop interchange will transform the loop as if the user had
   3786             written:
   3787           DO I = 1, N
   3788             DO J = 1, M
   3789               A(J, I) = A(J, I) * C
   3790             ENDDO
   3791           ENDDO
   3792 
   3793             which can be beneficial when N is larger than the caches,
   3794             because in Fortran, the elements of an array are stored in
   3795             memory contiguously by column, and the original loop iterates
   3796             over rows, potentially creating at each access a cache miss.
   3797           + -floop-strip-mine performs loop strip mining transformations
   3798             on loops. Strip mining splits a loop into two nested loops.
   3799             The outer loop has strides equal to the strip size and the
   3800             inner loop has strides of the original loop within a strip.
   3801             For example, given a loop like:
   3802           DO I = 1, N
   3803             A(I) = A(I) + C
   3804           ENDDO
   3805 
   3806             loop strip mining will transform the loop as if the user had
   3807             written:
   3808           DO II = 1, N, 4
   3809             DO I = II, min (II + 3, N)
   3810               A(I) = A(I) + C
   3811             ENDDO
   3812           ENDDO
   3813 
   3814           + -floop-block performs loop blocking transformations on loops.
   3815             Blocking strip mines each loop in the loop nest such that the
   3816             memory accesses of the element loops fit inside caches. For
   3817             example, given a loop like:
   3818           DO I = 1, N
   3819             DO J = 1, M
   3820               A(J, I) = B(I) + C(J)
   3821             ENDDO
   3822           ENDDO
   3823 
   3824             loop blocking will transform the loop as if the user had
   3825             written:
   3826           DO II = 1, N, 64
   3827             DO JJ = 1, M, 64
   3828               DO I = II, min (II + 63, N)
   3829                 DO J = JJ, min (JJ + 63, M)
   3830                   A(J, I) = B(I) + C(J)
   3831                 ENDDO
   3832               ENDDO
   3833             ENDDO
   3834           ENDDO
   3835 
   3836             which can be beneficial when M is larger than the caches,
   3837             because the innermost loop will iterate over a smaller amount
   3838             of data that can be kept in the caches.
   3839      * A new register allocator has replaced the old one. It is called
   3840        integrated register allocator (IRA) because coalescing, register
   3841        live range splitting, and hard register preferencing are done
   3842        on-the-fly during coloring. It also has better integration with the
   3843        reload pass. IRA is a regional register allocator which uses modern
   3844        Chaitin-Briggs coloring instead of Chow's priority coloring used in
   3845        the old register allocator. More info about IRA internals and
   3846        options can be found in the GCC manuals.
   3847      * A new instruction scheduler and software pipeliner, based on the
   3848        selective scheduling approach, has been added. The new pass
   3849        performs instruction unification, register renaming, substitution
   3850        through register copies, and speculation during scheduling. The
   3851        software pipeliner is able to pipeline non-countable loops. The new
   3852        pass is targeted at scheduling-eager in-order platforms. In GCC 4.4
   3853        it is available for the Intel Itanium platform working by default
   3854        as the second scheduling pass (after register allocation) at the
   3855        -O3 optimization level.
   3856      * When using -fprofile-generate with a multi-threaded program, the
   3857        profile counts may be slightly wrong due to race conditions. The
   3858        new -fprofile-correction option directs the compiler to apply
   3859        heuristics to smooth out the inconsistencies. By default the
   3860        compiler will give an error message when it finds an inconsistent
   3861        profile.
   3862      * The new -fprofile-dir=PATH option permits setting the directory
   3863        where profile data files are stored when using -fprofile-generate
   3864        and friends, and the directory used when reading profile data files
   3865        using -fprofile-use and friends.
   3866 
   3867 New warning options
   3868 
   3869      * The new -Wframe-larger-than=NUMBER option directs GCC to emit a
   3870        warning if any stack frame is larger than NUMBER bytes. This may be
   3871        used to help ensure that code fits within a limited amount of stack
   3872        space.
   3873      * The command-line option -Wlarger-than-N is now written as
   3874        -Wlarger-than=N and the old form is deprecated.
   3875      * The new -Wno-mudflap option disables warnings about constructs
   3876        which can not be instrumented when using -fmudflap.
   3877 
   3878 New Languages and Language specific improvements
   3879 
   3880      * Version 3.0 of the [5]OpenMP specification is now supported for the
   3881        C, C++, and Fortran compilers.
   3882      * New character data types, per [6]TR 19769: New character types in
   3883        C, are now supported for the C compiler in -std=gnu99 mode, as
   3884        __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
   3885        -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
   3886 
   3887   C family
   3888 
   3889      * A new optimize attribute was added to allow programmers to change
   3890        the optimization level and particular optimization options for an
   3891        individual function. You can also change the optimization options
   3892        via the GCC optimize pragma for functions defined after the pragma.
   3893        The GCC push_options pragma and the GCC pop_options pragma allow
   3894        you temporarily save and restore the options used. The GCC
   3895        reset_options pragma restores the options to what was specified on
   3896        the command line.
   3897      * Uninitialized warnings do not require enabling optimization
   3898        anymore, that is, -Wuninitialized can be used together with -O0.
   3899        Nonetheless, the warnings given by -Wuninitialized will probably be
   3900        more accurate if optimization is enabled.
   3901      * -Wparentheses now warns about expressions such as (!x | y) and (!x
   3902        & y). Using explicit parentheses, such as in ((!x) | y), silences
   3903        this warning.
   3904      * -Wsequence-point now warns within if, while,do while and for
   3905        conditions, and within for begin/end expressions.
   3906      * A new option -dU is available to dump definitions of preprocessor
   3907        macros that are tested or expanded.
   3908 
   3909   C++
   3910 
   3911      * [7]Improved experimental support for the upcoming ISO C++ standard,
   3912        C++0x. Including support for auto, inline namespaces, generalized
   3913        initializer lists, defaulted and deleted functions, new character
   3914        types, and scoped enums.
   3915      * Those errors that may be downgraded to warnings to build legacy
   3916        code now mention -fpermissive when -fdiagnostics-show-option is
   3917        enabled.
   3918      * -Wconversion now warns if the result of a static_cast to enumeral
   3919        type is unspecified because the value is outside the range of the
   3920        enumeral type.
   3921      * -Wuninitialized now warns if a non-static reference or non-static
   3922        const member appears in a class without constructors.
   3923      * G++ now properly implements value-initialization, so objects with
   3924        an initializer of () and an implicitly defined default constructor
   3925        will be zero-initialized before the default constructor is called.
   3926 
   3927     Runtime Library (libstdc++)
   3928 
   3929      * [8]Improved experimental support for the upcoming ISO C++ standard,
   3930        C++0x, including:
   3931           + Support for <chrono>, <condition_variable>, <cstdatomic>,
   3932             <forward_list>, <initializer_list>, <mutex>, <ratio>,
   3933             <system_error>, and <thread>.
   3934           + unique_ptr, <algorithm> additions, exception propagation, and
   3935             support for the new character types in <string> and <limits>.
   3936           + Existing facilities now exploit initializer lists, defaulted
   3937             and deleted functions, and the newly implemented core C++0x
   3938             features.
   3939           + Some standard containers are more efficient together with
   3940             stateful allocators, i.e., no allocator is constructed on the
   3941             fly at element construction time.
   3942      * Experimental support for non-standard pointer types in containers.
   3943      * The long standing libstdc++/30928 has been fixed for targets
   3944        running glibc 2.10 or later.
   3945      * As usual, many small and larger bug fixes, in particular quite a
   3946        few corner cases in <locale>.
   3947 
   3948   Fortran
   3949 
   3950      * GNU Fortran now employs libcpp directly instead of using cc1 as an
   3951        external preprocessor. The [9]-cpp option was added to allow manual
   3952        invocation of the preprocessor without relying on filename
   3953        extensions.
   3954      * The [10]-Warray-temporaries option warns about array temporaries
   3955        generated by the compiler, as an aid to optimization.
   3956      * The [11]-fcheck-array-temporaries option has been added, printing a
   3957        notification at run time, when an array temporary had to be created
   3958        for an function argument. Contrary to -Warray-temporaries the
   3959        warning is only printed if the array is noncontiguous.
   3960      * Improved generation of DWARF debugging symbols
   3961      * If using an intrinsic not part of the selected standard (via -std=
   3962        and -fall-intrinsics) gfortran will now treat it as if this
   3963        procedure were declared EXTERNAL and try to link to a user-supplied
   3964        procedure. -Wintrinsics-std will warn whenever this happens. The
   3965        now-useless option -Wnonstd-intrinsic was removed.
   3966      * The flag -falign-commons has been added to control the alignment of
   3967        variables in COMMON blocks, which is enabled by default in line
   3968        with previous GCC version. Using -fno-align-commons one can force
   3969        commons to be contiguous in memory as required by the Fortran
   3970        standard, however, this slows down the memory access. The option
   3971        -Walign-commons, which is enabled by default, warns when padding
   3972        bytes were added for alignment. The proper solution is to sort the
   3973        common objects by decreasing storage size, which avoids the
   3974        alignment problems.
   3975      * Fortran 2003 support has been extended:
   3976           + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
   3977             now supported (except internal reads from/writes to wide
   3978             strings). [12]-fbackslash now supports also \unnnn and
   3979             \Unnnnnnnn to enter Unicode characters.
   3980           + Asynchronous I/O (implemented as synchronous I/O) and the
   3981             decimal=, size=, sign=, pad=, blank=, and delim= specifiers
   3982             are now supported in I/O statements.
   3983           + Support for Fortran 2003 structure constructors and for array
   3984             constructor with typespec has been added.
   3985           + Procedure Pointers (but not yet as component in derived types
   3986             and as function results) are now supported.
   3987           + Abstract types, type extension, and type-bound procedures
   3988             (both PROCEDURE and GENERIC but not as operators). Note: As
   3989             CLASS/polymorphyic types are not implemented, type-bound
   3990             procedures with PASS accept as non-standard extension TYPE
   3991             arguments.
   3992      * Fortran 2008 support has been added:
   3993           + The -std=f2008 option and support for the file extensions
   3994             .f2008 and .F2008 has been added.
   3995           + The g0 format descriptor is now supported.
   3996           + The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH,
   3997             ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED
   3998             are now available (some of them existed as GNU extension
   3999             before). Note: The hyperbolic functions are not yet supporting
   4000             complex arguments and the three- argument version of BESSEL_*N
   4001             is not available.
   4002           + The bit intrinsics LEADZ and TRAILZ have been added.
   4003 
   4004   Java (GCJ)
   4005 
   4006   Ada
   4007 
   4008      * The Ada runtime now supports multilibs on many platforms including
   4009        x86_64, SPARC and PowerPC. Their build is enabled by default.
   4010 
   4011 New Targets and Target Specific Improvements
   4012 
   4013   ARM
   4014 
   4015      * GCC now supports optimizing for the Cortex-A9, Cortex-R4 and
   4016        Cortex-R4F processors and has many other improvements to
   4017        optimization for ARM processors.
   4018      * GCC now supports the VFPv3 variant with 16 double-precision
   4019        registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been
   4020        renamed to -mfpu=vfpv3.
   4021      * GCC now supports the -mfix-cortex-m3-ldrd option to work around an
   4022        erratum on Cortex-M3 processors.
   4023      * GCC now supports the __sync_* atomic operations for ARM EABI
   4024        GNU/Linux.
   4025      * The section anchors optimization is now enabled by default when
   4026        optimizing for ARM.
   4027      * GCC now uses a new EABI-compatible profiling interface for EABI
   4028        targets. This requires a function __gnu_mcount_nc, which is
   4029        provided by GNU libc versions 2.8 and later.
   4030 
   4031   AVR
   4032 
   4033      * The -mno-tablejump option has been deprecated because it has the
   4034        same effect as the -fno-jump-tables option.
   4035      * Added support for these new AVR devices:
   4036           + ATA6289
   4037           + ATtiny13A
   4038           + ATtiny87
   4039           + ATtiny167
   4040           + ATtiny327
   4041           + ATmega8C1
   4042           + ATmega16C1
   4043           + ATmega32C1
   4044           + ATmega8M1
   4045           + ATmega16M1
   4046           + ATmega32M1
   4047           + ATmega32U4
   4048           + ATmega16HVB
   4049           + ATmega4HVD
   4050           + ATmega8HVD
   4051           + ATmega64C1
   4052           + ATmega64M1
   4053           + ATmega16U4
   4054           + ATmega32U6
   4055           + ATmega128RFA1
   4056           + AT90PWM81
   4057           + AT90SCR100
   4058           + M3000F
   4059           + M3000S
   4060           + M3001B
   4061 
   4062   IA-32/x86-64
   4063 
   4064      * Support for Intel AES built-in functions and code generation is
   4065        available via -maes.
   4066      * Support for Intel PCLMUL built-in function and code generation is
   4067        available via -mpclmul.
   4068      * Support for Intel AVX built-in functions and code generation is
   4069        available via -mavx.
   4070      * Automatically align the stack for local variables with alignment
   4071        requirement.
   4072      * GCC can now utilize the SVML library for vectorizing calls to a set
   4073        of C99 functions if -mveclibabi=svml is specified and you link to
   4074        an SVML ABI compatible library.
   4075      * On x86-64, the ABI has been changed in the following cases to
   4076        conform to the x86-64 ABI:
   4077           + Passing/returning structures with flexible array member:
   4078   struct foo
   4079     {
   4080       int i;
   4081       int flex[];
   4082     };
   4083           + Passing/returning structures with complex float member:
   4084   struct foo
   4085     {
   4086       int i;
   4087       __complex__ float f;
   4088     };
   4089           + Passing/returning unions with long double member:
   4090   union foo
   4091     {
   4092       int x;
   4093       long double ld;
   4094     };
   4095        Code built with previous versions of GCC that uses any of these is
   4096        not compatible with code built with GCC 4.4.0 or later.
   4097      * A new target attribute was added to allow programmers to change the
   4098        target options like -msse2 or -march=k8 for an individual function.
   4099        You can also change the target options via the GCC target pragma
   4100        for functions defined after the pragma.
   4101      * GCC can now be configured with options --with-arch-32,
   4102        --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and
   4103        --with-tune-64 to control the default optimization separately for
   4104        32-bit and 64-bit modes.
   4105 
   4106   IA-32/IA64
   4107 
   4108      * Support for __float128 (TFmode) IEEE quad type and corresponding
   4109        TCmode IEEE complex quad type is available via the soft-fp library
   4110        on IA-32/IA64 targets. This includes basic arithmetic operations
   4111        (addition, subtraction, negation, multiplication and division) on
   4112        __float128 real and TCmode complex values, the full set of IEEE
   4113        comparisons between __float128 values, conversions to and from
   4114        float, double and long double floating point types, as well as
   4115        conversions to and from signed or unsigned integer, signed or
   4116        unsigned long integer and signed or unsigned quad (TImode, IA64
   4117        only) integer types. Additionally, all operations generate the full
   4118        set of IEEE exceptions and support the full set of IEEE rounding
   4119        modes.
   4120 
   4121   M68K/ColdFire
   4122 
   4123      * GCC now supports instruction scheduling for ColdFire V1, V3 and V4
   4124        processors. (Scheduling support for ColdFire V2 processors was
   4125        added in GCC 4.3.)
   4126      * GCC now supports the -mxgot option to support programs requiring
   4127        many GOT entries on ColdFire.
   4128      * The m68k-*-linux-gnu target now builds multilibs by default.
   4129 
   4130   MIPS
   4131 
   4132      * MIPS Technologies have extended the original MIPS SVR4 ABI to
   4133        include support for procedure linkage tables (PLTs) and copy
   4134        relocations. These extensions allow GNU/Linux executables to use a
   4135        significantly more efficient code model than the one defined by the
   4136        original ABI.
   4137        GCC support for this code model is available via a new command-line
   4138        option, -mplt. There is also a new configure-time option,
   4139        --with-mips-plt, to make -mplt the default.
   4140        The new code model requires support from the assembler, the linker,
   4141        and the runtime C library. This support is available in binutils
   4142        2.19 and GLIBC 2.9.
   4143      * GCC can now generate MIPS16 code for 32-bit GNU/Linux executables
   4144        and 32-bit GNU/Linux shared libraries. This feature requires GNU
   4145        binutils 2.19 or above.
   4146      * Support for RMI's XLR processor is now available through the
   4147        -march=xlr and -mtune=xlr options.
   4148      * 64-bit targets can now perform 128-bit multiplications inline,
   4149        instead of relying on a libgcc function.
   4150      * Native GNU/Linux toolchains now support -march=native and
   4151        -mtune=native, which select the host processor.
   4152      * GCC now supports the R10K, R12K, R14K and R16K processors. The
   4153        canonical -march= and -mtune= names for these processors are
   4154        r10000, r12000, r14000 and r16000 respectively.
   4155      * GCC can now work around the side effects of speculative execution
   4156        on R10K processors. Please see the documentation of the
   4157        -mr10k-cache-barrier option for details.
   4158      * Support for the MIPS64 Release 2 instruction set has been added.
   4159        The option -march=mips64r2 enables generation of these
   4160        instructions.
   4161      * GCC now supports Cavium Networks' Octeon processor. This support is
   4162        available through the -march=octeon and -mtune=octeon options.
   4163      * GCC now supports STMicroelectronics' Loongson 2E/2F processors. The
   4164        canonical -march= and -mtune= names for these processors are
   4165        loongson2e and loongson2f.
   4166 
   4167   picochip
   4168 
   4169    Picochip is a 16-bit processor. A typical picoChip contains over 250
   4170    small cores, each with small amounts of memory. There are three
   4171    processor variants (STAN, MEM and CTRL) with different instruction sets
   4172    and memory configurations and they can be chosen using the -mae option.
   4173 
   4174    This port is intended to be a "C" only port.
   4175 
   4176   Power Architecture and PowerPC
   4177 
   4178      * GCC now supports the e300c2, e300c3 and e500mc processors.
   4179      * GCC now supports Xilinx processors with a single-precision FPU.
   4180      * Decimal floating point is now supported for e500 processors.
   4181 
   4182   S/390, zSeries and System z9/z10
   4183 
   4184      * Support for the IBM System z10 EC/BC processor has been added. When
   4185        using the -march=z10 option, the compiler will generate code making
   4186        use of instructions provided by the General-Instruction-Extension
   4187        Facility and the Execute-Extension Facility.
   4188 
   4189   VxWorks
   4190 
   4191      * GCC now supports the thread-local storage mechanism used on
   4192        VxWorks.
   4193 
   4194   Xtensa
   4195 
   4196      * GCC now supports thread-local storage (TLS) for Xtensa processor
   4197        configurations that include the Thread Pointer option. TLS also
   4198        requires support from the assembler and linker; this support is
   4199        provided in the GNU binutils beginning with version 2.19.
   4200 
   4201 Documentation improvements
   4202 
   4203 Other significant improvements
   4204 
   4205 GCC 4.4.1
   4206 
   4207    This is the [13]list of problem reports (PRs) from GCC's bug tracking
   4208    system that are known to be fixed in the 4.4.1 release. This list might
   4209    not be complete (that is, it is possible that some PRs that have been
   4210    fixed are not listed here).
   4211 
   4212 GCC 4.4.2
   4213 
   4214    This is the [14]list of problem reports (PRs) from GCC's bug tracking
   4215    system that are known to be fixed in the 4.4.2 release. This list might
   4216    not be complete (that is, it is possible that some PRs that have been
   4217    fixed are not listed here).
   4218 
   4219 GCC 4.4.3
   4220 
   4221    This is the [15]list of problem reports (PRs) from GCC's bug tracking
   4222    system that are known to be fixed in the 4.4.3 release. This list might
   4223    not be complete (that is, it is possible that some PRs that have been
   4224    fixed are not listed here).
   4225 
   4226 GCC 4.4.4
   4227 
   4228    This is the [16]list of problem reports (PRs) from GCC's bug tracking
   4229    system that are known to be fixed in the 4.4.4 release. This list might
   4230    not be complete (that is, it is possible that some PRs that have been
   4231    fixed are not listed here).
   4232 
   4233 GCC 4.4.5
   4234 
   4235    This is the [17]list of problem reports (PRs) from GCC's bug tracking
   4236    system that are known to be fixed in the 4.4.5 release. This list might
   4237    not be complete (that is, it is possible that some PRs that have been
   4238    fixed are not listed here).
   4239 
   4240 GCC 4.4.6
   4241 
   4242    This is the [18]list of problem reports (PRs) from GCC's bug tracking
   4243    system that are known to be fixed in the 4.4.6 release. This list might
   4244    not be complete (that is, it is possible that some PRs that have been
   4245    fixed are not listed here).
   4246 
   4247 GCC 4.4.7
   4248 
   4249    This is the [19]list of problem reports (PRs) from GCC's bug tracking
   4250    system that are known to be fixed in the 4.4.7 release. This list might
   4251    not be complete (that is, it is possible that some PRs that have been
   4252    fixed are not listed here).
   4253 
   4254 
   4255     For questions related to the use of GCC, please consult these web
   4256     pages and the [20]GCC manuals. If that fails, the
   4257     [21]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   4258     web pages and the development of GCC are welcome on our developer
   4259     list at [22]gcc (a] gcc.gnu.org. All of [23]our lists have public
   4260     archives.
   4261 
   4262    Copyright (C) [24]Free Software Foundation, Inc. Verbatim copying and
   4263    distribution of this entire article is permitted in any medium,
   4264    provided this notice is preserved.
   4265 
   4266    These pages are [25]maintained by the GCC team. Last modified
   4267    2012-11-02[26].
   4268 
   4269 References
   4270 
   4271    1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.7
   4272    2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
   4273    3. http://gcc.gnu.org/gcc-4.4/porting_to.html
   4274    4. http://gcc.gnu.org/wiki/Graphite
   4275    5. http://openmp.org/wp/openmp-specifications/
   4276    6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
   4277    7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
   4278    8. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#id476343
   4279    9. http://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
   4280   10. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
   4281   11. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
   4282   12. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
   4283   13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
   4284   14. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
   4285   15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
   4286   16. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
   4287   17. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5
   4288   18. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6
   4289   19. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7
   4290   20. http://gcc.gnu.org/onlinedocs/
   4291   21. mailto:gcc-help (a] gcc.gnu.org
   4292   22. mailto:gcc (a] gcc.gnu.org
   4293   23. http://gcc.gnu.org/lists.html
   4294   24. http://www.fsf.org/
   4295   25. http://gcc.gnu.org/about.html
   4296   26. http://validator.w3.org/check/referer
   4297 ======================================================================
   4298 http://gcc.gnu.org/gcc-4.3/index.html
   4299 
   4300                              GCC 4.3 Release Series
   4301 
   4302    Jun 27, 2011
   4303 
   4304    The [1]GNU project and the GCC developers are pleased to announce the
   4305    release of GCC 4.3.6.
   4306 
   4307    This release is a bug-fix release, containing fixes for regressions in
   4308    GCC 4.3.5 relative to previous releases of GCC.
   4309 
   4310 Release History
   4311 
   4312    GCC 4.3.6
   4313           Jun 27, 2011 ([2]changes)
   4314 
   4315    GCC 4.3.5
   4316           May 22, 2010 ([3]changes)
   4317 
   4318    GCC 4.3.4
   4319           August 4, 2009 ([4]changes)
   4320 
   4321    GCC 4.3.3
   4322           January 24, 2009 ([5]changes)
   4323 
   4324    GCC 4.3.2
   4325           August 27, 2008 ([6]changes)
   4326 
   4327    GCC 4.3.1
   4328           June 6, 2008 ([7]changes)
   4329 
   4330    GCC 4.3.0
   4331           March 5, 2008 ([8]changes)
   4332 
   4333 References and Acknowledgements
   4334 
   4335    GCC used to stand for the GNU C Compiler, but since the compiler
   4336    supports several other languages aside from C, it now stands for the
   4337    GNU Compiler Collection.
   4338 
   4339    A list of [9]successful builds is updated as new information becomes
   4340    available.
   4341 
   4342    The GCC developers would like to thank the numerous people that have
   4343    contributed new features, improvements, bug fixes, and other changes as
   4344    well as test results to GCC. This [10]amazing group of volunteers is
   4345    what makes GCC successful.
   4346 
   4347    For additional information about GCC please refer to the [11]GCC
   4348    project web site or contact the [12]GCC development mailing list.
   4349 
   4350    To obtain GCC please use [13]our mirror sites or [14]our SVN server.
   4351 
   4352 
   4353     For questions related to the use of GCC, please consult these web
   4354     pages and the [15]GCC manuals. If that fails, the
   4355     [16]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   4356     web pages and the development of GCC are welcome on our developer
   4357     list at [17]gcc (a] gcc.gnu.org. All of [18]our lists have public
   4358     archives.
   4359 
   4360    Copyright (C) [19]Free Software Foundation, Inc. Verbatim copying and
   4361    distribution of this entire article is permitted in any medium,
   4362    provided this notice is preserved.
   4363 
   4364    These pages are [20]maintained by the GCC team. Last modified
   4365    2012-11-02[21].
   4366 
   4367 References
   4368 
   4369    1. http://www.gnu.org/
   4370    2. http://gcc.gnu.org/gcc-4.3/changes.html
   4371    3. http://gcc.gnu.org/gcc-4.3/changes.html
   4372    4. http://gcc.gnu.org/gcc-4.3/changes.html
   4373    5. http://gcc.gnu.org/gcc-4.3/changes.html
   4374    6. http://gcc.gnu.org/gcc-4.3/changes.html
   4375    7. http://gcc.gnu.org/gcc-4.3/changes.html
   4376    8. http://gcc.gnu.org/gcc-4.3/changes.html
   4377    9. http://gcc.gnu.org/gcc-4.3/buildstat.html
   4378   10. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   4379   11. http://gcc.gnu.org/index.html
   4380   12. mailto:gcc (a] gcc.gnu.org
   4381   13. http://gcc.gnu.org/mirrors.html
   4382   14. http://gcc.gnu.org/svn.html
   4383   15. http://gcc.gnu.org/onlinedocs/
   4384   16. mailto:gcc-help (a] gcc.gnu.org
   4385   17. mailto:gcc (a] gcc.gnu.org
   4386   18. http://gcc.gnu.org/lists.html
   4387   19. http://www.fsf.org/
   4388   20. http://gcc.gnu.org/about.html
   4389   21. http://validator.w3.org/check/referer
   4390 ======================================================================
   4391 http://gcc.gnu.org/gcc-4.3/changes.html
   4392 
   4393                              GCC 4.3 Release Series
   4394                         Changes, New Features, and Fixes
   4395 
   4396    The latest release in the 4.3 release series is [1]GCC 4.3.5.
   4397 
   4398 Caveats
   4399 
   4400      * GCC requires the [2]GMP and [3]MPFR libraries for building all the
   4401        various front-end languages it supports. See the [4]prerequisites
   4402        page for version requirements.
   4403      * ColdFire targets now treat long double as having the same format as
   4404        double. In earlier versions of GCC, they used the 68881 long double
   4405        format instead.
   4406      * The m68k-uclinux target now uses the same calling conventions as
   4407        m68k-linux-gnu. You can select the original calling conventions by
   4408        configuring for m68k-uclinuxoldabi instead. Note that
   4409        m68k-uclinuxoldabi also retains the original 80-bit long double on
   4410        ColdFire targets.
   4411      * The -fforce-mem option has been removed because it has had no
   4412        effect in the last few GCC releases.
   4413      * The i386 -msvr3-shlib option has been removed since it is no longer
   4414        used.
   4415      * Fastcall for i386 has been changed not to pass aggregate arguments
   4416        in registers, following Microsoft compilers.
   4417      * Support for the AOF assembler has been removed from the ARM back
   4418        end; this affects only the targets arm-semi-aof and armel-semi-aof,
   4419        which are no longer recognized. We removed these targets without a
   4420        deprecation period because we discovered that they have been
   4421        unusable since GCC 4.0.0.
   4422      * Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*)
   4423        has been removed. This support had been deprecated since GCC 4.0.0.
   4424      * Support for a number of older systems and recently unmaintained or
   4425        untested target ports of GCC has been declared obsolete in GCC 4.3.
   4426        Unless there is activity to revive them, the next release of GCC
   4427        will have their sources permanently removed.
   4428        All GCC ports for the following processor architectures have been
   4429        declared obsolete:
   4430           + Morpho MT (mt-*)
   4431        The following aliases for processor architectures have been
   4432        declared obsolete. Users should use the indicated generic target
   4433        names instead, with compile-time options such as -mcpu or
   4434        configure-time options such as --with-cpu to control the
   4435        configuration more precisely.
   4436           + strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-*
   4437             instead).
   4438           + parisc*-*-* (use hppa*-*-* instead).
   4439           + m680[012]0-*-* (use m68k-*-* instead).
   4440        All GCC ports for the following operating systems have been
   4441        declared obsolete:
   4442           + BeOS (*-*-beos*)
   4443           + kaOS (*-*-kaos*)
   4444           + GNU/Linux using the a.out object format (*-*-linux*aout*)
   4445           + GNU/Linux using version 1 of the GNU C Library
   4446             (*-*-linux*libc1*)
   4447           + Solaris versions before Solaris 7 (*-*-solaris2.[0-6],
   4448             *-*-solaris2.[0-6].*)
   4449           + Miscellaneous System V (*-*-sysv*)
   4450           + WindISS (*-*-windiss*)
   4451        Also, those for some individual systems on particular architectures
   4452        have been obsoleted:
   4453           + UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*)
   4454           + CRIS with a.out object format (cris-*-aout)
   4455           + BSD 4.3 on PA-RISC (hppa1.1-*-bsd*)
   4456           + OSF/1 on PA-RISC (hppa1.1-*-osf*)
   4457           + PRO on PA-RISC (hppa1.1-*-pro*)
   4458           + Sequent PTX on IA32 (i[34567]86-sequent-ptx4*,
   4459             i[34567]86-sequent-sysv4*)
   4460           + SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*)
   4461           + UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host
   4462             was previously [5]removed in 2001, leaving only the support
   4463             for UWIN as a target now being deprecated)
   4464           + ChorusOS on PowerPC (powerpc-*-chorusos*)
   4465           + All VAX configurations apart from NetBSD and OpenBSD
   4466             (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*)
   4467      * The [6]-Wconversion option has been modified. Its purpose now is to
   4468        warn for implicit conversions that may alter a value. This new
   4469        behavior is available for both C and C++. Warnings about
   4470        conversions between signed and unsigned integers can be disabled by
   4471        using -Wno-sign-conversion. In C++, they are disabled by default
   4472        unless -Wsign-conversion is explicitly requested. The old behavior
   4473        of -Wconversion, that is, warn for prototypes causing a type
   4474        conversion that is different from what would happen to the same
   4475        argument in the absence of a prototype, has been moved to a new
   4476        option -Wtraditional-conversion, which is only available for C.
   4477      * The -m386, -m486, -mpentium and -mpentiumpro tuning options have
   4478        been removed because they were deprecated for more than 3 GCC major
   4479        releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or
   4480        -mtune=pentiumpro as a replacement.
   4481      * The -funsafe-math-optimizations option now automatically turns on
   4482        -fno-trapping-math in addition to -fno-signed-zeros, as it enables
   4483        reassociation and thus may introduce or remove traps.
   4484      * The -ftree-vectorize option is now on by default under -O3. In
   4485        order to generate code for a SIMD extension, it has to be enabled
   4486        as well: use -maltivec for PowerPC platforms and -msse/-msse2 for
   4487        i?86 and x86_64.
   4488      * More information on porting to GCC 4.3 from previous versions of
   4489        GCC can be found in the [7]porting guide for this release.
   4490 
   4491 General Optimizer Improvements
   4492 
   4493      * The GCC middle-end has been integrated with the [8]MPFR library.
   4494        This allows GCC to evaluate and replace at compile-time calls to
   4495        built-in math functions having constant arguments with their
   4496        mathematically equivalent results. In making use of [9]MPFR, GCC
   4497        can generate correct results regardless of the math library
   4498        implementation or floating point precision of the host platform.
   4499        This also allows GCC to generate identical results regardless of
   4500        whether one compiles in native or cross-compile configurations to a
   4501        particular target. The following built-in functions take advantage
   4502        of this new capability: acos, acosh, asin, asinh, atan2, atan,
   4503        atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1,
   4504        fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10,
   4505        log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh,
   4506        tan, tanh, tgamma, y0, y1 and yn. The float and long double
   4507        variants of these functions (e.g. sinf and sinl) are also handled.
   4508        The sqrt and cabs functions with constant arguments were already
   4509        optimized in prior GCC releases. Now they also use [10]MPFR.
   4510      * A new forward propagation pass on RTL was added. The new pass
   4511        replaces several slower transformations, resulting in compile-time
   4512        improvements as well as better code generation in some cases.
   4513      * A new command-line switch -frecord-gcc-switches has been added to
   4514        GCC, although it is only enabled for some targets. The switch
   4515        causes the command line that was used to invoke the compiler to be
   4516        recorded into the object file that is being created. The exact
   4517        format of this recording is target and binary file format
   4518        dependent, but it usually takes the form of a note section
   4519        containing ASCII text. The switch is related to the -fverbose-asm
   4520        switch, but that one only records the information in the assembler
   4521        output file as comments, so the information never reaches the
   4522        object file.
   4523      * The inliner heuristic is now aware of stack frame consumption. New
   4524        command-line parameters --param large-stack-frame and --param
   4525        large-stack-frame-growth can be used to limit stack frame size
   4526        growth caused by inlining.
   4527      * During feedback directed optimizations, the expected block size the
   4528        memcpy, memset and bzero functions operate on is discovered and for
   4529        cases of commonly used small sizes, specialized inline code is
   4530        generated.
   4531      * __builtin_expect no longer requires its argument to be a compile
   4532        time constant.
   4533      * Interprocedural optimization was reorganized to work on functions
   4534        in SSA form. This enables more precise and cheaper dataflow
   4535        analysis and makes writing interprocedural optimizations easier.
   4536        The following improvements have been implemented on top of this
   4537        framework:
   4538           + Pre-inline optimization: Selected local optimization passes
   4539             are run before the inliner (and other interprocedural passes)
   4540             are executed. This significantly improves the accuracy of code
   4541             growth estimates used by the inliner and reduces the overall
   4542             memory footprint for large compilation units.
   4543           + Early inlining (a simple bottom-up inliner pass inlining only
   4544             functions whose body is smaller than the expected call
   4545             overhead) is now executed with the early optimization passes,
   4546             thus inlining already optimized function bodies into an
   4547             unoptimized function that is subsequently optimized by early
   4548             optimizers. This enables the compiler to quickly eliminate
   4549             abstraction penalty in C++ programs.
   4550           + Interprocedural constant propagation now operate on SSA form
   4551             increasing accuracy of the analysis.
   4552      * A new internal representation for GIMPLE statements has been
   4553        contributed, resulting in compile-time memory savings.
   4554      * The vectorizer was enhanced to support vectorization of outer
   4555        loops, intra-iteration parallelism (loop-aware SLP), vectorization
   4556        of strided accesses and loops with multiple data-types. Run-time
   4557        dependency testing using loop versioning was added. The cost model,
   4558        turned on by -fvect-cost-model, was developed.
   4559 
   4560 New Languages and Language specific improvements
   4561 
   4562      * We have added new command-line options
   4563        -finstrument-functions-exclude-function-list and
   4564        -finstrument-functions-exclude-file-list. They provide more control
   4565        over which functions are annotated by the -finstrument-functions
   4566        option.
   4567 
   4568   C family
   4569 
   4570      * Implicit conversions between generic vector types are now only
   4571        permitted when the two vectors in question have the same number of
   4572        elements and compatible element types. (Note that the restriction
   4573        involves compatible element types, not implicitly-convertible
   4574        element types: thus, a vector type with element type int may not be
   4575        implicitly converted to a vector type with element type unsigned
   4576        int.) This restriction, which is in line with specifications for
   4577        SIMD architectures such as AltiVec, may be relaxed using the flag
   4578        -flax-vector-conversions. This flag is intended only as a
   4579        compatibility measure and should not be used for new code.
   4580      * -Warray-bounds has been added and is now enabled by default for
   4581        -Wall . It produces warnings for array subscripts that can be
   4582        determined at compile time to be always out of bounds.
   4583        -Wno-array-bounds will disable the warning.
   4584      * The constructor and destructor function attributes now accept
   4585        optional priority arguments which control the order in which the
   4586        constructor and destructor functions are run.
   4587      * New [11]command-line options -Wtype-limits,
   4588        -Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body,
   4589        -Wclobbered and -Wignored-qualifiers have been added for finer
   4590        control of the diverse warnings enabled by -Wextra.
   4591      * A new function attribute alloc_size has been added to mark up
   4592        malloc style functions. For constant sized allocations this can be
   4593        used to find out the size of the returned pointer using the
   4594        __builtin_object_size() function for buffer overflow checking and
   4595        similar. This supplements the already built-in malloc and calloc
   4596        constant size handling.
   4597      * Integer constants written in binary are now supported as a GCC
   4598        extension. They consist of a prefix 0b or 0B, followed by a
   4599        sequence of 0 and 1 digits.
   4600      * A new predefined macro __COUNTER__ has been added. It expands to
   4601        sequential integral values starting from 0. In conjunction with the
   4602        ## operator, this provides a convenient means to generate unique
   4603        identifiers.
   4604      * A new command-line option -fdirectives-only has been added. It
   4605        enables a special preprocessing mode which improves the performance
   4606        of applications like distcc and ccache.
   4607      * Fixed-point data types and operators have been added. They are
   4608        based on Chapter 4 of the Embedded-C specification (n1169.pdf).
   4609        Currently, only MIPS targets are supported.
   4610      * Decimal floating-point arithmetic based on draft ISO/IEC TR 24732,
   4611        N1241, is now supported as a GCC extension to C for targets
   4612        i[34567]86-*-linux-gnu, powerpc*-*-linux-gnu, s390*-ibm-linux-gnu,
   4613        and x86_64-*-linux-gnu. The feature introduces new data types
   4614        _Decimal32, _Decimal64, and _Decimal128 with constant suffixes DF,
   4615        DD, and DL.
   4616 
   4617   C++
   4618 
   4619      * [12]Experimental support for the upcoming ISO C++ standard, C++0x.
   4620      * -Wc++0x-compat has been added and is now enabled by default for
   4621        -Wall. It produces warnings for constructs whose meaning differs
   4622        between ISO C++ 1998 and C++0x.
   4623      * The -Wparentheses option now works for C++ as it does for C. It
   4624        warns if parentheses are omitted when operators with confusing
   4625        precedence are nested. It also warns about ambiguous else
   4626        statements. Since -Wparentheses is enabled by -Wall, this may cause
   4627        additional warnings with existing C++ code which uses -Wall. These
   4628        new warnings may be disabled by using -Wall -Wno-parentheses.
   4629      * The -Wmissing-declarations now works for C++ as it does for C.
   4630      * The -fvisibility-ms-compat flag was added, to make it easier to
   4631        port larger projects using shared libraries from Microsoft's Visual
   4632        Studio to ELF and Mach-O systems.
   4633      * C++ attribute handling has been overhauled for template arguments
   4634        (ie dependent types). In particular, __attribute__((aligned(T)));
   4635        works for C++ types.
   4636 
   4637     Runtime Library (libstdc++)
   4638 
   4639      * [13]Experimental support for the upcoming ISO C++ standard, C++0x.
   4640      * Support for TR1 mathematical special functions and regular
   4641        expressions. ([14]Implementation status of TR1)
   4642      * Default what implementations give more elaborate exception strings
   4643        for bad_cast, bad_typeid, bad_exception, and bad_alloc.
   4644      * Header dependencies have been streamlined, reducing unnecessary
   4645        includes and pre-processed bloat.
   4646      * Variadic template implementations of items in <tuple> and
   4647        <functional>.
   4648      * An experimental [15]parallel mode has been added. This is a
   4649        parallel implementation of many C++ Standard library algorithms,
   4650        like std::accumulate, std::for_each, std::transform, or std::sort,
   4651        to give but four examples. These algorithms can be substituted for
   4652        the normal (sequential) libstdc++ algorithms on a piecemeal basis,
   4653        or all existing algorithms can be transformed via the
   4654        -D_GLIBCXX_PARALLEL macro.
   4655      * Debug mode versions of classes in <unordered_set> and
   4656        <unordered_map>.
   4657      * Formal deprecation of <ext/hash_set> and <ext/hash_map>, which are
   4658        now <backward/hash_set> and <backward/hash_map>. This code:
   4659     #include <ext/hash_set>
   4660     __gnu_cxx::hash_set<int> s;
   4661 
   4662        Can be transformed (in order of preference) to:
   4663     #include <tr1/unordered_set>
   4664     std::tr1::unordered_set<int> s;
   4665 
   4666        or
   4667     #include <backward/hash_set>
   4668     __gnu_cxx::hash_set<int> s;
   4669 
   4670        Similar transformations apply to __gnu_cxx::hash_map,
   4671        __gnu_cxx::hash_multimap, __gnu_cxx::hash_set,
   4672        __gnu_cxx::hash_multiset.
   4673 
   4674   Fortran
   4675 
   4676      * Due to the fact that the [16]GMP and [17]MPFR libraries are
   4677        required for all languages, Fortran is no longer special in this
   4678        regard and is available by default.
   4679      * The [18]-fexternal-blas option has been added, which generates
   4680        calls to BLAS routines for intrinsic matrix operations such as
   4681        matmul rather than using the built-in algorithms.
   4682      * Support to give a backtrace (compiler flag -fbacktrace or
   4683        environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems
   4684        only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a
   4685        run-time error occured.
   4686      * GNU Fortran now defines __GFORTRAN__ when it runs the C
   4687        preprocessor (CPP).
   4688      * The [19]-finit-local-zero, -finit-real, -finit-integer,
   4689        -finit-character, and -finit-logical options have been added, which
   4690        can be used to initialize local variables.
   4691      * The intrinsic procedures [20]GAMMA and [21]LGAMMA have been added,
   4692        which calculate the Gamma function and its logarithm. Use EXTERNAL
   4693        gamma if you want to use your own gamma function.
   4694      * GNU Fortran now regards the backslash character as literal (as
   4695        required by the Fortran 2003 standard); using [22]-fbackslash GNU
   4696        Fortran interprets backslashes as C-style escape characters.
   4697      * The [23]interpretation of binary, octal and hexadecimal (BOZ)
   4698        literal constants has been changed. Before they were always
   4699        interpreted as integer; now they are bit-wise transferred as
   4700        argument of INT, REAL, DBLE and CMPLX as required by the Fortran
   4701        2003 standard, and for real and complex variables in DATA
   4702        statements or when directly assigned to real and complex variables.
   4703        Everywhere else and especially in expressions they are still
   4704        regarded as integer constants.
   4705      * Fortran 2003 support has been extended:
   4706           + Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE
   4707           + Pointer intent
   4708           + Intrinsic module ISO_ENV_FORTRAN
   4709           + Interoperability with C (ISO C Bindings)
   4710           + ABSTRACT INTERFACES and PROCEDURE statements (without POINTER
   4711             attribute)
   4712           + Fortran 2003 BOZ
   4713 
   4714   Java (GCJ)
   4715 
   4716      * GCJ now uses the Eclipse Java compiler for its Java parsing needs.
   4717        This enables the use of all 1.5 language features, and fixes most
   4718        existing front end bugs.
   4719      * libgcj now supports all 1.5 language features which require runtime
   4720        support: foreach, enum, annotations, generics, and auto-boxing.
   4721      * We've made many changes to the tools shipped with gcj.
   4722           + The old jv-scan tool has been removed. This tool never really
   4723             worked properly. There is no replacement.
   4724           + gcjh has been rewritten. Some of its more obscure options no
   4725             longer work, but are still recognized in an attempt at
   4726             compatibility. gjavah is a new program with similar
   4727             functionality but different command-line options.
   4728           + grmic and grmiregistry have been rewritten. grmid has been
   4729             added.
   4730           + gjar replaces the old fastjar.
   4731           + gjarsigner (used for signing jars), gkeytool (used for key
   4732             management), gorbd (for CORBA), gserialver (computes
   4733             serialization UIDs), and gtnameserv (also for CORBA) are now
   4734             installed.
   4735      * The ability to dump the contents of the java run time heap to a
   4736        file for off-line analysis has been added. The heap dumps may be
   4737        analyzed with the new gc-analyze tool. They may be generated on
   4738        out-of-memory conditions or on demand and are controlled by the new
   4739        run time class gnu.gcj.util.GCInfo.
   4740      * java.util.TimeZone can now read files from /usr/share/zoneinfo to
   4741        provide correct, updated, timezone information. This means that
   4742        packagers no longer have to update libgcj when a time zone change
   4743        is published.
   4744 
   4745 New Targets and Target Specific Improvements
   4746 
   4747   IA-32/x86-64
   4748 
   4749      * Tuning for Intel Core 2 processors is available via -mtune=core2
   4750        and -march=core2.
   4751      * Tuning for AMD Geode processors is available via -mtune=geode and
   4752        -march=geode.
   4753      * Code generation of block move (memcpy) and block set (memset) was
   4754        rewritten. GCC can now pick the best algorithm (loop, unrolled
   4755        loop, instruction with rep prefix or a library call) based on the
   4756        size of the block being copied and the CPU being optimized for. A
   4757        new option -minline-stringops-dynamically has been added. With this
   4758        option string operations of unknown size are expanded such that
   4759        small blocks are copied by in-line code, while for large blocks a
   4760        library call is used. This results in faster code than
   4761        -minline-all-stringops when the library implementation is capable
   4762        of using cache hierarchy hints. The heuristic choosing the
   4763        particular algorithm can be overwritten via -mstringop-strategy.
   4764        Newly also memset of values different from 0 is inlined.
   4765      * GCC no longer places the cld instruction before string operations.
   4766        Both i386 and x86-64 ABI documents mandate the direction flag to be
   4767        clear at the entry of a function. It is now invalid to set the flag
   4768        in asm statement without reseting it afterward.
   4769      * Support for SSSE3 built-in functions and code generation are
   4770        available via -mssse3.
   4771      * Support for SSE4.1 built-in functions and code generation are
   4772        available via -msse4.1.
   4773      * Support for SSE4.2 built-in functions and code generation are
   4774        available via -msse4.2.
   4775      * Both SSE4.1 and SSE4.2 support can be enabled via -msse4.
   4776      * A new set of options -mpc32, -mpc64 and -mpc80 have been added to
   4777        allow explicit control of x87 floating point precision.
   4778      * Support for __float128 (TFmode) IEEE quad type and corresponding
   4779        TCmode IEEE complex quad type is available via the soft-fp library
   4780        on x86_64 targets. This includes basic arithmetic operations
   4781        (addition, subtraction, negation, multiplication and division) on
   4782        __float128 real and TCmode complex values, the full set of IEEE
   4783        comparisons between __float128 values, conversions to and from
   4784        float, double and long double floating point types, as well as
   4785        conversions to and from signed or unsigned integer, signed or
   4786        unsigned long integer and signed or unsigned quad (TImode) integer
   4787        types. Additionally, all operations generate the full set of IEEE
   4788        exceptions and support the full set of IEEE rounding modes.
   4789      * GCC can now utilize the ACML library for vectorizing calls to a set
   4790        of C99 functions on x86_64 if -mveclibabi=acml is specified and you
   4791        link to an ACML ABI compatible library.
   4792 
   4793   ARM
   4794 
   4795      * Compiler and Library support for Thumb-2 and the ARMv7 architecture
   4796        has been added.
   4797 
   4798   CRIS
   4799 
   4800     New features
   4801 
   4802      * Compiler and Library support for the CRIS v32 architecture, as
   4803        found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been
   4804        added.
   4805 
   4806     Configuration changes
   4807 
   4808      * The cris-*-elf target now includes support for CRIS v32, including
   4809        libraries, through the -march=v32 option.
   4810      * A new crisv32-*-elf target defaults to generate code for CRIS v32.
   4811      * A new crisv32-*-linux* target defaults to generate code for CRIS
   4812        v32.
   4813      * The cris-*-aout target has been obsoleted.
   4814 
   4815     Improved support for built-in functions
   4816 
   4817      * GCC can now use the lz and swapwbr instructions to implement the
   4818        __builtin_clz, __builtin_ctz and __builtin_ffs family of functions.
   4819      * __builtin_bswap32 is now implemented using the swapwb instruction,
   4820        when available.
   4821 
   4822   m68k and ColdFire
   4823 
   4824     New features
   4825 
   4826      * Support for several new ColdFire processors has been added. You can
   4827        generate code for them using the new -mcpu option.
   4828      * All targets now support ColdFire processors.
   4829      * m68k-uclinux targets have improved support for C++ constructors and
   4830        destructors, and for shared libraries.
   4831      * It is now possible to set breakpoints on the first or last line of
   4832        a function, even if there are no statements on that line.
   4833 
   4834     Optimizations
   4835 
   4836      * Support for sibling calls has been added.
   4837      * More use is now made of the ColdFire mov3q instruction.
   4838      * __builtin_clz is now implemented using the ff1 ColdFire
   4839        instruction, when available.
   4840      * GCC now honors the -m68010 option. 68010 code now uses clr rather
   4841        than move to zero volatile memory.
   4842      * 68020 targets and above can now use symbol(index.size*scale)
   4843        addresses for indexed array accesses. Earlier compilers would
   4844        always load the symbol into a base register first.
   4845 
   4846     Configuration changes
   4847 
   4848      * All m68k and ColdFire targets now allow the default processor to be
   4849        set at configure time using --with-cpu.
   4850      * A --with-arch configuration option has been added. This option
   4851        allows you to restrict a target to ColdFire or non-ColdFire
   4852        processors.
   4853 
   4854     Preprocessor macros
   4855 
   4856      * An __mcfv*__ macro is now defined for all ColdFire targets.
   4857        (Earlier versions of GCC only defined __mcfv4e__.)
   4858      * __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added.
   4859      * All targets now define __mc68010 and __mc68010__ when generating
   4860        68010 code.
   4861 
   4862     Command-line changes
   4863 
   4864      * New command-line options -march, -mcpu, -mtune and -mhard-float
   4865        have been added. These options apply to both m68k and ColdFire
   4866        targets.
   4867      * -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative
   4868        versions of -mshort, etc.
   4869      * -fforce-addr has been removed. It is now ignored by the compiler.
   4870 
   4871     Other improvements
   4872 
   4873      * ColdFire targets now try to maintain a 4-byte-aligned stack where
   4874        possible.
   4875      * m68k-uclinux targets now try to avoid situations that lead to the
   4876        load-time error: BINFMT_FLAT: reloc outside program.
   4877 
   4878   MIPS
   4879 
   4880     Changes to existing configurations
   4881 
   4882      * libffi and libjava now support all three GNU/Linux ABIs: o32, n32
   4883        and n64. Every GNU/Linux configuration now builds these libraries
   4884        by default.
   4885      * GNU/Linux configurations now generate -mno-shared code unless
   4886        overridden by -fpic, -fPIC, -fpie or -fPIE.
   4887      * mipsisa32*-linux-gnu configurations now generate hard-float code by
   4888        default, just like other mipsisa32* and mips*-linux-gnu
   4889        configurations. You can build a soft-float version of any
   4890        mips*-linux-gnu configuration by passing --with-float=soft to
   4891        configure.
   4892      * mips-wrs-vxworks now supports run-time processes (RTPs).
   4893 
   4894     Changes to existing command-line options
   4895 
   4896      * The -march and -mtune options no longer accept 24k as a processor
   4897        name. Please use 24kc, 24kf2_1 or 24kf1_1 instead.
   4898      * The -march and -mtune options now accept 24kf2_1, 24kef2_1 and
   4899        34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The
   4900        options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for
   4901        24kx, 24kex and 34kx.
   4902 
   4903     New configurations
   4904 
   4905    GCC now supports the following configurations:
   4906      * mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by
   4907        default. Earlier releases also recognized this configuration, but
   4908        they treated it in the same way as mipsisa32*-linux-gnu*. Note that
   4909        you can customize any mips*-linux-gnu* configuration to a
   4910        particular ISA or processor by passing an appropriate --with-arch
   4911        option to configure.
   4912      * mipsisa*-sde-elf*, which provides compatibility with MIPS
   4913        Technologies' SDE toolchains. The configuration uses the SDE
   4914        libraries by default, but you can use it like other newlib-based
   4915        ELF configurations by passing --with-newlib to configure. It is the
   4916        only configuration besides mips64vr*-elf* to build MIPS16 as well
   4917        as non-MIPS16 libraries.
   4918      * mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf*
   4919        configuration, but uses the o32 and o64 ABIs instead of the 32-bit
   4920        and 64-bit forms of the EABI.
   4921 
   4922     New processors and application-specific extensions
   4923 
   4924      * Support for the SmartMIPS ASE is available through the new
   4925        -msmartmips option.
   4926      * Support for revision 2 of the DSP ASE is available through the new
   4927        -mdspr2 option. A new preprocessor macro called __mips_dsp_rev
   4928        indicates the revision of the ASE in use.
   4929      * Support for the 4KS and 74K families of processors is available
   4930        through the -march and -mtune options.
   4931 
   4932     Improved support for built-in functions
   4933 
   4934      * GCC can now use load-linked, store-conditional and sync
   4935        instructions to implement atomic built-in functions such as
   4936        __sync_fetch_and_add. The memory reference must be 4 bytes wide for
   4937        32-bit targets and either 4 or 8 bytes wide for 64-bit targets.
   4938      * GCC can now use the clz and dclz instructions to implement the
   4939        __builtin_ctz and __builtin_ffs families of functions.
   4940      * There is a new __builtin___clear_cache function for flushing the
   4941        instruction cache. GCC expands this function inline on MIPS32
   4942        revision 2 targets, otherwise it calls the function specified by
   4943        -mcache-flush-func.
   4944 
   4945     MIPS16 improvements
   4946 
   4947      * GCC can now compile objects that contain a mixture of MIPS16 and
   4948        non-MIPS16 code. There are two new attributes, mips16 and nomips16,
   4949        for specifying which mode a function should use.
   4950      * A new option called -minterlink-mips16 makes non-MIPS16 code
   4951        link-compatible with MIPS16 code.
   4952      * After many bug fixes, the long-standing MIPS16 -mhard-float support
   4953        should now work fairly reliably.
   4954      * GCC can now use the MIPS16e save and restore instructions.
   4955      * -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled
   4956        with -G0 -fsection-anchors is often smaller than code compiled with
   4957        -G8. However, please note that you must usually compile all objects
   4958        in your application with the same -G option; see the documentation
   4959        of -G for details.
   4960      * A new option called-mcode-readable specifies which instructions are
   4961        allowed to load from the code segment. -mcode-readable=yes is the
   4962        default and says that any instruction may load from the code
   4963        segment. The other alternatives are -mcode-readable=pcrel, which
   4964        says that only PC-relative MIPS16 instructions may load from the
   4965        code segment, and -mcode-readable=no, which says that no
   4966        instruction may do so. Please see the documentation for more
   4967        details, including example uses.
   4968 
   4969     Small-data improvements
   4970 
   4971    There are three new options for controlling small data:
   4972      * -mno-extern-sdata, which disables small-data accesses for
   4973        externally-defined variables. Code compiled with -Gn
   4974        -mno-extern-sdata will be link-compatible with any -G setting
   4975        between -G0 and -Gn inclusive.
   4976      * -mno-local-sdata, which disables the use of small-data sections for
   4977        data that is not externally visible. This option can be a useful
   4978        way of reducing small-data usage in less performance-critical parts
   4979        of an application.
   4980      * -mno-gpopt, which disables the use of the $gp register while still
   4981        honoring the -G limit when placing externally-visible data. This
   4982        option implies -mno-extern-sdata and -mno-local-sdata and it can be
   4983        useful in situations where $gp does not necessarily hold the
   4984        expected value.
   4985 
   4986     Miscellaneous improvements
   4987 
   4988      * There is a new option called -mbranch-cost for tweaking the
   4989        perceived cost of branches.
   4990      * If GCC is configured to use a version of GAS that supports the
   4991        .gnu_attribute directive, it will use that directive to record
   4992        certain properties of the output code. .gnu_attribute is new to GAS
   4993        2.18.
   4994      * There are two new function attributes, near and far, for overriding
   4995        the command-line setting of -mlong-calls on a function-by-function
   4996        basis.
   4997      * -mfp64, which previously required a 64-bit target, now works with
   4998        MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and
   4999        mipsisa*-sde-elf* configurations provide suitable library support.
   5000      * GCC now recognizes the -mdmx and -mmt options and passes them down
   5001        to the assembler. It does nothing else with the options at present.
   5002 
   5003   SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture
   5004   (BEA)
   5005 
   5006      * Support has been added for this new architecture.
   5007 
   5008   RS6000 (POWER/PowerPC)
   5009 
   5010      * Support for the PowerPC 750CL paired-single instructions has been
   5011        added with a new powerpc-*-linux*paired* target configuration. It
   5012        is enabled by an associated -mpaired option and can be accessed
   5013        using new built-in functions.
   5014      * Support for auto-detecting architecture and system configuration to
   5015        auto-select processor optimization tuning.
   5016      * Support for VMX on AIX 5.3 has been added.
   5017      * Support for AIX Version 6.1 has been added.
   5018 
   5019   S/390, zSeries and System z9
   5020 
   5021      * Support for the IBM System z9 EC/BC processor (z9 GA3) has been
   5022        added. When using the -march=z9-ec option, the compiler will
   5023        generate code making use of instructions provided by the decimal
   5024        floating point facility and the floating point conversion facility
   5025        (pfpo). Besides the instructions used to implement decimal floating
   5026        point operations these facilities also contain instructions to move
   5027        between general purpose and floating point registers and to modify
   5028        and copy the sign-bit of floating point values.
   5029      * When the -march=z9-ec option is used the new
   5030        -mhard-dfp/-mno-hard-dfp options can be used to specify whether the
   5031        decimal floating point hardware instructions will be used or not.
   5032        If none of them is given the hardware support is enabled by
   5033        default.
   5034      * The -mstack-guard option can now be omitted when using stack
   5035        checking via -mstack-size in order to let GCC choose a sensible
   5036        stack guard value according to the frame size of each function.
   5037      * Various changes to improve performance of generated code have been
   5038        implemented, including:
   5039           + The condition code set by an add logical with carry
   5040             instruction is now available for overflow checks like: a + b +
   5041             carry < b.
   5042           + The test data class instruction is now used to implement
   5043             sign-bit and infinity checks of binary and decimal floating
   5044             point numbers.
   5045 
   5046   SPARC
   5047 
   5048      * Support for the Sun UltraSPARC T2 (Niagara 2) processor has been
   5049        added.
   5050 
   5051   Xtensa
   5052 
   5053      * Stack unwinding for exception handling now uses by default a
   5054        specialized version of DWARF unwinding. This is not
   5055        binary-compatible with the setjmp/longjmp (sjlj) unwinding used for
   5056        Xtensa with previous versions of GCC.
   5057      * For Xtensa processors that include the Conditional Store option,
   5058        the built-in functions for atomic memory access are now implemented
   5059        using S32C1I instructions.
   5060      * If the Xtensa NSA option is available, GCC will use it to implement
   5061        the __builtin_ctz and __builtin_clz functions.
   5062 
   5063 Documentation improvements
   5064 
   5065      * Existing libstdc++ documentation has been edited and restructured
   5066        into a single DocBook XML manual. The results can be viewed online
   5067        [24]here.
   5068 
   5069 Other significant improvements
   5070 
   5071      * The compiler's --help command-line option has been extended so that
   5072        it now takes an optional set of arguments. These arguments restrict
   5073        the information displayed to specific classes of command-line
   5074        options, and possibly only a subset of those options. It is also
   5075        now possible to replace the descriptive text associated with each
   5076        displayed option with an indication of its current value, or for
   5077        binary options, whether it has been enabled or disabled.
   5078        Here are some examples. The following will display all the options
   5079        controlling warning messages:
   5080       --help=warnings
   5081 
   5082        Whereas this will display all the undocumented, target specific
   5083        options:
   5084       --help=target,undocumented
   5085 
   5086        This sequence of commands will display the binary optimizations
   5087        that are enabled by -O3:
   5088       gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
   5089       gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
   5090       diff /tmp/O2-opts /tmp/O3-opts | grep enabled
   5091 
   5092      * The configure options --with-pkgversion and --with-bugurl have been
   5093        added. These allow distributors of GCC to include a
   5094        distributor-specific string in manuals and --version output and to
   5095        specify the URL for reporting bugs in their versions of GCC.
   5096 
   5097 GCC 4.3.1
   5098 
   5099    This is the [25]list of problem reports (PRs) from GCC's bug tracking
   5100    system that are known to be fixed in the 4.3.1 release. This list might
   5101    not be complete (that is, it is possible that some PRs that have been
   5102    fixed are not listed here).
   5103 
   5104 Target Specific Changes
   5105 
   5106   IA-32/x86-64
   5107 
   5108     ABI changes
   5109 
   5110      * Starting with GCC 4.3.1, decimal floating point variables are
   5111        aligned to their natural boundaries when they are passed on the
   5112        stack for i386.
   5113 
   5114     Command-line changes
   5115 
   5116      * Starting with GCC 4.3.1, the -mcld option has been added to
   5117        automatically generate a cld instruction in the prologue of
   5118        functions that use string instructions. This option is used for
   5119        backward compatibility on some operating systems and can be enabled
   5120        by default for 32-bit x86 targets by configuring GCC with the
   5121        --enable-cld configure option.
   5122 
   5123 GCC 4.3.2
   5124 
   5125    This is the [26]list of problem reports (PRs) from GCC's bug tracking
   5126    system that are known to be fixed in the 4.3.2 release. This list might
   5127    not be complete (that is, it is possible that some PRs that have been
   5128    fixed are not listed here).
   5129 
   5130 GCC 4.3.3
   5131 
   5132    This is the [27]list of problem reports (PRs) from GCC's bug tracking
   5133    system that are known to be fixed in the 4.3.3 release. This list might
   5134    not be complete (that is, it is possible that some PRs that have been
   5135    fixed are not listed here).
   5136 
   5137 GCC 4.3.4
   5138 
   5139    This is the [28]list of problem reports (PRs) from GCC's bug tracking
   5140    system that are known to be fixed in the 4.3.4 release. This list might
   5141    not be complete (that is, it is possible that some PRs that have been
   5142    fixed are not listed here).
   5143 
   5144 GCC 4.3.5
   5145 
   5146    This is the [29]list of problem reports (PRs) from GCC's bug tracking
   5147    system that are known to be fixed in the 4.3.5 release. This list might
   5148    not be complete (that is, it is possible that some PRs that have been
   5149    fixed are not listed here).
   5150 
   5151 GCC 4.3.6
   5152 
   5153    This is the [30]list of problem reports (PRs) from GCC's bug tracking
   5154    system that are known to be fixed in the 4.3.6 release. This list might
   5155    not be complete (that is, it is possible that some PRs that have been
   5156    fixed are not listed here).
   5157 
   5158 
   5159     For questions related to the use of GCC, please consult these web
   5160     pages and the [31]GCC manuals. If that fails, the
   5161     [32]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   5162     web pages and the development of GCC are welcome on our developer
   5163     list at [33]gcc (a] gcc.gnu.org. All of [34]our lists have public
   5164     archives.
   5165 
   5166    Copyright (C) [35]Free Software Foundation, Inc. Verbatim copying and
   5167    distribution of this entire article is permitted in any medium,
   5168    provided this notice is preserved.
   5169 
   5170    These pages are [36]maintained by the GCC team. Last modified
   5171    2012-11-02[37].
   5172 
   5173 References
   5174 
   5175    1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5
   5176    2. http://gmplib.org/
   5177    3. http://www.mpfr.org/
   5178    4. http://gcc.gnu.org/install/prerequisites.html
   5179    5. http://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
   5180    6. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
   5181    7. http://gcc.gnu.org/gcc-4.3/porting_to.html
   5182    8. http://www.mpfr.org/
   5183    9. http://www.mpfr.org/
   5184   10. http://www.mpfr.org/
   5185   11. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
   5186   12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
   5187   13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
   5188   14. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#m anual.intro.status.standard.tr1
   5189   15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
   5190   16. http://gmplib.org/
   5191   17. http://www.mpfr.org/
   5192   18. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
   5193   19. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
   5194   20. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
   5195   21. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
   5196   22. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
   5197   23. http://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
   5198   24. http://gcc.gnu.org/onlinedocs/libstdc++/
   5199   25. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
   5200   26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
   5201   27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
   5202   28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
   5203   29. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
   5204   30. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6
   5205   31. http://gcc.gnu.org/onlinedocs/
   5206   32. mailto:gcc-help (a] gcc.gnu.org
   5207   33. mailto:gcc (a] gcc.gnu.org
   5208   34. http://gcc.gnu.org/lists.html
   5209   35. http://www.fsf.org/
   5210   36. http://gcc.gnu.org/about.html
   5211   37. http://validator.w3.org/check/referer
   5212 ======================================================================
   5213 http://gcc.gnu.org/gcc-4.2/index.html
   5214 
   5215                              GCC 4.2 Release Series
   5216 
   5217    May 19, 2008
   5218 
   5219    The [1]GNU project and the GCC developers are pleased to announce the
   5220    release of GCC 4.2.4.
   5221 
   5222    This release is a bug-fix release, containing fixes for regressions in
   5223    GCC 4.2.3 relative to previous releases of GCC.
   5224 
   5225 Release History
   5226 
   5227    GCC 4.2.4
   5228           May 19, 2008 ([2]changes)
   5229 
   5230    GCC 4.2.3
   5231           February 1, 2008 ([3]changes)
   5232 
   5233    GCC 4.2.2
   5234           October 7, 2007 ([4]changes)
   5235 
   5236    GCC 4.2.1
   5237           July 18, 2007 ([5]changes)
   5238 
   5239    GCC 4.2.0
   5240           May 13, 2007 ([6]changes)
   5241 
   5242 References and Acknowledgements
   5243 
   5244    GCC used to stand for the GNU C Compiler, but since the compiler
   5245    supports several other languages aside from C, it now stands for the
   5246    GNU Compiler Collection.
   5247 
   5248    A list of [7]successful builds is updated as new information becomes
   5249    available.
   5250 
   5251    The GCC developers would like to thank the numerous people that have
   5252    contributed new features, improvements, bug fixes, and other changes as
   5253    well as test results to GCC. This [8]amazing group of volunteers is
   5254    what makes GCC successful.
   5255 
   5256    For additional information about GCC please refer to the [9]GCC project
   5257    web site or contact the [10]GCC development mailing list.
   5258 
   5259    To obtain GCC please use [11]our mirror sites or [12]our SVN server.
   5260 
   5261 
   5262     For questions related to the use of GCC, please consult these web
   5263     pages and the [13]GCC manuals. If that fails, the
   5264     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   5265     web pages and the development of GCC are welcome on our developer
   5266     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
   5267     archives.
   5268 
   5269    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
   5270    distribution of this entire article is permitted in any medium,
   5271    provided this notice is preserved.
   5272 
   5273    These pages are [18]maintained by the GCC team. Last modified
   5274    2012-11-02[19].
   5275 
   5276 References
   5277 
   5278    1. http://www.gnu.org/
   5279    2. http://gcc.gnu.org/gcc-4.2/changes.html
   5280    3. http://gcc.gnu.org/gcc-4.2/changes.html
   5281    4. http://gcc.gnu.org/gcc-4.2/changes.html
   5282    5. http://gcc.gnu.org/gcc-4.2/changes.html
   5283    6. http://gcc.gnu.org/gcc-4.2/changes.html
   5284    7. http://gcc.gnu.org/gcc-4.2/buildstat.html
   5285    8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   5286    9. http://gcc.gnu.org/index.html
   5287   10. mailto:gcc (a] gcc.gnu.org
   5288   11. http://gcc.gnu.org/mirrors.html
   5289   12. http://gcc.gnu.org/svn.html
   5290   13. http://gcc.gnu.org/onlinedocs/
   5291   14. mailto:gcc-help (a] gcc.gnu.org
   5292   15. mailto:gcc (a] gcc.gnu.org
   5293   16. http://gcc.gnu.org/lists.html
   5294   17. http://www.fsf.org/
   5295   18. http://gcc.gnu.org/about.html
   5296   19. http://validator.w3.org/check/referer
   5297 ======================================================================
   5298 http://gcc.gnu.org/gcc-4.2/changes.html
   5299 
   5300                              GCC 4.2 Release Series
   5301                         Changes, New Features, and Fixes
   5302 
   5303 Caveats
   5304 
   5305      * GCC no longer accepts the -fshared-data option. This option has had
   5306        no effect in any GCC 4 release; the targets to which the option
   5307        used to apply had been removed before GCC 4.0.
   5308 
   5309 General Optimizer Improvements
   5310 
   5311      * New command-line options specify the possible relationships among
   5312        parameters and between parameters and global data. For example,
   5313        -fargument-noalias-anything specifies that arguments do not alias
   5314        any other storage.
   5315        Each language will automatically use whatever option is required by
   5316        the language standard. You should not need to use these options
   5317        yourself.
   5318 
   5319 New Languages and Language specific improvements
   5320 
   5321      * [1]OpenMP is now supported for the C, C++ and Fortran compilers.
   5322      * New command-line options -fstrict-overflow and -Wstrict-overflow
   5323        have been added. -fstrict-overflow tells the compiler that it may
   5324        assume that the program follows the strict signed overflow
   5325        semantics permitted for the language: for C and C++ this means that
   5326        the compiler may assume that signed overflow does not occur. For
   5327        example, a loop like
   5328       for (i = 1; i > 0; i *= 2)
   5329 
   5330        is presumably intended to continue looping until i overflows. With
   5331        -fstrict-overflow, the compiler may assume that signed overflow
   5332        will not occur, and transform this into an infinite loop.
   5333        -fstrict-overflow is turned on by default at -O2, and may be
   5334        disabled via -fno-strict-overflow. The -Wstrict-overflow option may
   5335        be used to warn about cases where the compiler assumes that signed
   5336        overflow will not occur. It takes five different levels:
   5337        -Wstrict-overflow=1 to 5. See the [2]documentation for details.
   5338        -Wstrict-overflow=1 is enabled by -Wall.
   5339      * The new command-line option -fno-toplevel-reorder directs GCC to
   5340        emit top-level functions, variables, and asm statements in the same
   5341        order that they appear in the input file. This is intended to
   5342        support existing code which relies on a particular ordering (for
   5343        example, code which uses top-level asm statements to switch
   5344        sections). For new code, it is generally better to use function and
   5345        variable attributes. The -fno-toplevel-reorder option may be used
   5346        for most cases which currently use -fno-unit-at-a-time. The
   5347        -fno-unit-at-a-time option will be removed in some future version
   5348        of GCC. If you know of a case which requires -fno-unit-at-a-time
   5349        which is not fixed by -fno-toplevel-reorder, please open a bug
   5350        report.
   5351 
   5352   C family
   5353 
   5354      * The pragma redefine_extname will now macro expand its tokens for
   5355        compatibility with SunPRO.
   5356      * In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct
   5357        GCC to handle inline functions as specified in the C99 standard. In
   5358        preparation for this, GCC 4.2 will warn about any use of non-static
   5359        inline functions in gnu99 or c99 mode. This new warning may be
   5360        disabled with the new gnu_inline function attribute or the new
   5361        -fgnu89-inline command-line option. Also, GCC 4.2 and later will
   5362        define one of the preprocessor macros __GNUC_GNU_INLINE__ or
   5363        __GNUC_STDC_INLINE__ to indicate the semantics of inline functions
   5364        in the current compilation.
   5365      * A new command-line option -Waddress has been added to warn about
   5366        suspicious uses of memory addresses as, for example, using the
   5367        address of a function in a conditional expression, and comparisons
   5368        against the memory address of a string literal. This warning is
   5369        enabled by -Wall.
   5370 
   5371   C++
   5372 
   5373      * C++ visibility handling has been overhauled.
   5374        Restricted visiblity is propagated from classes to members, from
   5375        functions to local statics, and from templates and template
   5376        arguments to instantiations, unless the latter has explicitly
   5377        declared visibility.
   5378        The visibility attribute for a class must come between the
   5379        class-key and the name, not after the closing brace.
   5380        Attributes are now allowed for enums and elaborated-type-specifiers
   5381        that only declare a type.
   5382        Members of the anonymous namespace are now local to a particular
   5383        translation unit, along with any other declarations which use them,
   5384        though they are still treated as having external linkage for
   5385        language semantics.
   5386      * The (undocumented) extension which permitted templates with default
   5387        arguments to be bound to template template parameters with fewer
   5388        parameters has been removed. For example:
   5389         template <template <typename> class C>
   5390         void f(C<double>) {}
   5391 
   5392         template <typename T, typename U = int>
   5393         struct S {};
   5394 
   5395         template void f(S<double>);
   5396 
   5397        is no longer accepted by G++. The reason this code is not accepted
   5398        is that S is a template with two parameters; therefore, it cannot
   5399        be bound to C which has only one parameter.
   5400      * The <?, >?, <?=, and >?= operators, deprecated in previous GCC
   5401        releases, have been removed.
   5402      * The command-line option -fconst-strings, deprecated in previous GCC
   5403        releases, has been removed.
   5404      * The configure variable enable-__cxa_atexit is now enabled by
   5405        default for more targets. Enabling this variable is necessary in
   5406        order for static destructors to be executed in the correct order,
   5407        but it depends upon the presence of a non-standard C library in the
   5408        target library in order to work. The variable is now enabled for
   5409        more targets which are known to have suitable C libraries.
   5410      * -Wextra will produce warnings for if statements with a semicolon as
   5411        the only body, to catch code like:
   5412          if (a);
   5413             return 1;
   5414          return 0;
   5415 
   5416        To suppress the warning in valid cases, use { } instead.
   5417      * The C++ frontend now also produces strict aliasing warnings when
   5418        -fstrict-aliasing -Wstrict-aliasing is in effect.
   5419 
   5420     Runtime Library (libstdc++)
   5421 
   5422      * Added support for TR1 <random>, <complex>, and C compatibility
   5423        headers. In addition, a lock-free version of shared_ptr was
   5424        contributed as part of Phillip Jordan's Google Summer of Code
   5425        project on lock-free containers. ([3]Implementation status of TR1)
   5426      * In association with the Summer of Code work on lock-free
   5427        containers, the interface for atomic builtins was adjusted,
   5428        creating simpler alternatives for non-threaded code paths. Also,
   5429        usage was consolidated and all elements were moved from namespace
   5430        std to namespace__gnu_cxx. Affected interfaces are the functions
   5431        __exchange_and_add, __atomic_add, and the objects __mutex,
   5432        __recursive_mutex, and __scoped_lock.
   5433      * Support for versioning weak symbol names via namespace association
   5434        was added. However, as this changes the names of exported symbols,
   5435        this is turned off by default in the current ABI. Intrepid users
   5436        can enable this feature by using
   5437        --enable-symvers=gnu-versioned-namespace during configuration.
   5438      * Revised, simplified, and expanded policy-based associative
   5439        containers, including data types for tree and trie forms
   5440        (basic_tree, tree, trie), lists (list_update), and both
   5441        collision-chaining and probing hash-based containers
   5442        (basic_hash_table, cc_hash_table, gp_hash_table). More details per
   5443        the [4]documentation.
   5444      * The implementation of the debug mode was modified, whereby the
   5445        debug namespaces were nested inside of namespace std and namespace
   5446        __gnu_cxx in order to resolve some long standing corner cases
   5447        involving name lookup. Debug functionality from the policy-based
   5448        data structures was consolidated and enabled with the single macro,
   5449        _GLIBCXX_DEBUG. See PR 26142 for more information.
   5450      * Added extensions for type traits: __conditional_type,
   5451        __numeric_traits, __add_unsigned, __removed_unsigned, __enable_if.
   5452      * Added a typelist implementation for compile-time meta-programming.
   5453        Elements for typelist construction and operation can be found
   5454        within namespace __gnu_cxx::typelist.
   5455      * Added a new allocator, __gnu_cxx::throw_allocator, for testing
   5456        exception-safety.
   5457      * Enabled library-wide visibility control, allowing -fvisibility to
   5458        be used.
   5459      * Consolidated all nested namespaces and the conversion of
   5460        __gnu_internal implementation-private details to anonymous
   5461        namespaces whenever possible.
   5462      * Implemented LWG resolutions DR 431 and DR 538.
   5463 
   5464   Fortran
   5465 
   5466      * Support for allocatable components has been added (TR 15581 and
   5467        Fortran 2003).
   5468      * Support for the Fortran 2003 streaming IO extension has been added.
   5469      * The GNU Fortran compiler now uses 4-byte record markers by default
   5470        for unformatted files to be compatible with g77 and most other
   5471        compilers. The implementation allows for records greater than 2 GB
   5472        and is compatible with several other compilers. Older versions of
   5473        gfortran used 8-byte record markers by default (on most systems).
   5474        In order to change the length of the record markers, e.g. to read
   5475        unformatted files created by older gfortran versions, the
   5476        [5]-frecord-marker=8 option can be used.
   5477 
   5478   Java (GCJ)
   5479 
   5480      * A new command-line option -static-libgcj has been added for targets
   5481        that use a linker compatible with GNU Binutils. As its name
   5482        implies, this causes libgcj to be linked statically. In some cases
   5483        this causes the resulting executable to start faster and use less
   5484        memory than if the shared version of libgcj were used. However
   5485        caution should be used as it can also cause essential parts of the
   5486        library to be omitted. Some of these issues are discussed in:
   5487        [6]http://gcc.gnu.org/wiki/Statically_linking_libgcj
   5488      * fastjar is no longer bundled with GCC. To build libgcj, you will
   5489        need either InfoZIP (both zip and unzip) or an external jar
   5490        program. In the former case, the GCC build will install a jar shell
   5491        script that is based on InfoZIP and provides the same functionality
   5492        as fastjar.
   5493 
   5494 New Targets and Target Specific Improvements
   5495 
   5496   IA-32/x86-64
   5497 
   5498      * -mtune=generic can now be used to generate code running well on
   5499        common x86 chips. This includes AMD Athlon, AMD Opteron, Intel
   5500        Pentium-M, Intel Pentium 4 and Intel Core 2.
   5501      * -mtune=native and -march=native will produce code optimized for the
   5502        host architecture as detected using the cpuid instruction.
   5503      * Added a new command-line option -fstackrealign and and
   5504        __attribute__ ((force_align_arg_pointer)) to realign the stack at
   5505        runtime. This allows functions compiled with a vector-aligned stack
   5506        to be invoked from legacy objects that keep only word-alignment.
   5507 
   5508   SPARC
   5509 
   5510      * The default CPU setting has been changed from V7 to V9 in 32-bit
   5511        mode on Solaris 7 and above. This is already the case in 64-bit
   5512        mode. It can be overridden by specifying --with-cpu at configure
   5513        time.
   5514      * Back-end support of built-in functions for atomic memory access has
   5515        been implemented.
   5516      * Support for the Sun UltraSPARC T1 (Niagara) processor has been
   5517        added.
   5518 
   5519   M32C
   5520 
   5521      * Various bug fixes have made some functions (notably, functions
   5522        returning structures) incompatible with previous releases.
   5523        Recompiling all libraries is recommended. Note that code quality
   5524        has considerably improved since 4.1, making a recompile even more
   5525        beneficial.
   5526 
   5527   MIPS
   5528 
   5529      * Added support for the Broadcom SB-1A core.
   5530 
   5531   IA-64
   5532 
   5533      * Added support for IA-64 data and control speculation. By default
   5534        speculation is enabled only during second scheduler pass. A number
   5535        of machine flags was introduced to control the usage of speculation
   5536        for both scheduler passes.
   5537 
   5538   HPPA
   5539 
   5540      * Added Java language support (libffi and libjava) for 32-bit HP-UX
   5541        11 target.
   5542 
   5543 Obsolete Systems
   5544 
   5545 Documentation improvements
   5546 
   5547   PDF Documentation
   5548 
   5549      * A make pdf target has been added to the top-level makefile,
   5550        enabling automated production of PDF documentation files.
   5551        (Front-ends external to GCC should modify their Make-lang.in file
   5552        to add a lang.pdf: target.)
   5553 
   5554 Other significant improvements
   5555 
   5556   Build system improvements
   5557 
   5558      * All the components of the compiler are now bootstrapped by default.
   5559        This improves the resilience to bugs in the system compiler or
   5560        binary compatibility problems, as well as providing better testing
   5561        of GCC 4.2 itself. In addition, if you build the compiler from a
   5562        combined tree, the assembler, linker, etc. will also be
   5563        bootstrapped (i.e. built with themselves).
   5564        You can disable this behavior, and go back to the pre-GCC 4.2 set
   5565        up, by configuring GCC with --disable-bootstrap.
   5566      * The rules that configure follows to find target tools resemble more
   5567        closely the locations that the built compiler will search. In
   5568        addition, you can use the new configure option --with-target-tools
   5569        to specify where to find the target tools used during the build,
   5570        without affecting what the built compiler will use.
   5571        This can be especially useful when building packages of GCC. For
   5572        example, you may want to build GCC with GNU as or ld, even if the
   5573        resulting compiler to work with the native assembler and linker. To
   5574        do so, you can use --with-target-tools to point to the native
   5575        tools.
   5576 
   5577   Incompatible changes to the build system
   5578 
   5579      * Front-ends external to GCC should modify their Make-lang.in file to
   5580        replace double-colon rules (e.g. dvi::) with normal rules (like
   5581        lang.dvi:). Front-end makefile hooks do not use double-colon rules
   5582        anymore.
   5583      * Up to GCC 4.1, a popular way to specify the target tools used
   5584        during the build was to create directories named gas, binutils,
   5585        etc. in the build tree, and create links to the tools from there.
   5586        This does not work any more when the compiler is bootstrapped. The
   5587        new configure option --with-target-tools provides a better way to
   5588        achieve the same effect, and works for all native and cross
   5589        settings.
   5590 
   5591 
   5592     For questions related to the use of GCC, please consult these web
   5593     pages and the [7]GCC manuals. If that fails, the
   5594     [8]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   5595     web pages and the development of GCC are welcome on our developer
   5596     list at [9]gcc (a] gcc.gnu.org. All of [10]our lists have public
   5597     archives.
   5598 
   5599    Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and
   5600    distribution of this entire article is permitted in any medium,
   5601    provided this notice is preserved.
   5602 
   5603    These pages are [12]maintained by the GCC team. Last modified
   5604    2012-11-02[13].
   5605 
   5606 References
   5607 
   5608    1. http://gcc.gnu.org/projects/gomp/
   5609    2. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
   5610    3. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.tr1
   5611    4. http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html
   5612    5. http://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html
   5613    6. http://gcc.gnu.org/wiki/Statically_linking_libgcj
   5614    7. http://gcc.gnu.org/onlinedocs/
   5615    8. mailto:gcc-help (a] gcc.gnu.org
   5616    9. mailto:gcc (a] gcc.gnu.org
   5617   10. http://gcc.gnu.org/lists.html
   5618   11. http://www.fsf.org/
   5619   12. http://gcc.gnu.org/about.html
   5620   13. http://validator.w3.org/check/referer
   5621 ======================================================================
   5622 http://gcc.gnu.org/gcc-4.1/index.html
   5623 
   5624                              GCC 4.1 Release Series
   5625 
   5626    February 13, 2007
   5627 
   5628    The [1]GNU project and the GCC developers are pleased to announce the
   5629    release of GCC 4.1.2.
   5630 
   5631    This release is a bug-fix release, containing fixes for regressions in
   5632    GCC 4.1.1 relative to previous releases of GCC.
   5633 
   5634 Release History
   5635 
   5636    GCC 4.1.2
   5637           February 13, 2007 ([2]changes)
   5638 
   5639    GCC 4.1.1
   5640           May 24, 2006 ([3]changes)
   5641 
   5642    GCC 4.1.0
   5643           February 28, 2006 ([4]changes)
   5644 
   5645 References and Acknowledgements
   5646 
   5647    GCC used to stand for the GNU C Compiler, but since the compiler
   5648    supports several other languages aside from C, it now stands for the
   5649    GNU Compiler Collection.
   5650 
   5651    A list of [5]successful builds is updated as new information becomes
   5652    available.
   5653 
   5654    The GCC developers would like to thank the numerous people that have
   5655    contributed new features, improvements, bug fixes, and other changes as
   5656    well as test results to GCC. This [6]amazing group of volunteers is
   5657    what makes GCC successful.
   5658 
   5659    For additional information about GCC please refer to the [7]GCC project
   5660    web site or contact the [8]GCC development mailing list.
   5661 
   5662    To obtain GCC please use [9]our mirror sites or [10]our SVN server.
   5663 
   5664 
   5665     For questions related to the use of GCC, please consult these web
   5666     pages and the [11]GCC manuals. If that fails, the
   5667     [12]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   5668     web pages and the development of GCC are welcome on our developer
   5669     list at [13]gcc (a] gcc.gnu.org. All of [14]our lists have public
   5670     archives.
   5671 
   5672    Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
   5673    distribution of this entire article is permitted in any medium,
   5674    provided this notice is preserved.
   5675 
   5676    These pages are [16]maintained by the GCC team. Last modified
   5677    2012-11-02[17].
   5678 
   5679 References
   5680 
   5681    1. http://www.gnu.org/
   5682    2. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
   5683    3. http://gcc.gnu.org/gcc-4.1/changes.html
   5684    4. http://gcc.gnu.org/gcc-4.1/changes.html
   5685    5. http://gcc.gnu.org/gcc-4.1/buildstat.html
   5686    6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   5687    7. http://gcc.gnu.org/index.html
   5688    8. mailto:gcc (a] gcc.gnu.org
   5689    9. http://gcc.gnu.org/mirrors.html
   5690   10. http://gcc.gnu.org/svn.html
   5691   11. http://gcc.gnu.org/onlinedocs/
   5692   12. mailto:gcc-help (a] gcc.gnu.org
   5693   13. mailto:gcc (a] gcc.gnu.org
   5694   14. http://gcc.gnu.org/lists.html
   5695   15. http://www.fsf.org/
   5696   16. http://gcc.gnu.org/about.html
   5697   17. http://validator.w3.org/check/referer
   5698 ======================================================================
   5699 http://gcc.gnu.org/gcc-4.1/changes.html
   5700 
   5701                              GCC 4.1 Release Series
   5702                         Changes, New Features, and Fixes
   5703 
   5704    The latest release in the 4.1 release series is [1]GCC 4.1.2.
   5705 
   5706 Caveats
   5707 
   5708 General Optimizer Improvements
   5709 
   5710      * GCC now has infrastructure for inter-procedural optimizations and
   5711        the following inter-procedural optimizations are implemented:
   5712           + Profile guided inlining. When doing profile feedback guided
   5713             optimization, GCC can now use the profile to make better
   5714             informed decisions on whether inlining of a function is
   5715             profitable or not. This means that GCC will no longer inline
   5716             functions at call sites that are not executed very often, and
   5717             that functions at hot call sites are more likely to be
   5718             inlined.
   5719             A new parameter min-inline-recursive-probability is also now
   5720             available to throttle recursive inlining of functions with
   5721             small average recursive depths.
   5722           + Discovery of pure and const functions, a form of side-effects
   5723             analysis. While older GCC releases could also discover such
   5724             special functions, the new IPA-based pass runs earlier so that
   5725             the results are available to more optimizers. The pass is also
   5726             simply more powerful than the old one.
   5727           + Analysis of references to static variables and type escape
   5728             analysis, also forms of side-effects analysis. The results of
   5729             these passes allow the compiler to be less conservative about
   5730             call-clobbered variables and references. This results in more
   5731             redundant loads being eliminated and in making static
   5732             variables candidates for register promotion.
   5733           + Improvement of RTL-based alias analysis. The results of type
   5734             escape analysis are fed to the RTL type-based alias analyzer,
   5735             allowing it to disambiguate more memory references.
   5736           + Interprocedural constant propagation and function versioning.
   5737             This pass looks for functions that are always called with the
   5738             same constant value for one or more of the function arguments,
   5739             and propagates those constants into those functions.
   5740           + GCC will now eliminate static variables whose usage was
   5741             optimized out.
   5742           + -fwhole-program --combine can now be used to make all
   5743             functions in program static allowing whole program
   5744             optimization. As an exception, the main function and all
   5745             functions marked with the new externally_visible attribute are
   5746             kept global so that programs can link with runtime libraries.
   5747      * GCC can now do a form of partial dead code elimination (PDCE) that
   5748        allows code motion of expressions to the paths where the result of
   5749        the expression is actually needed. This is not always a win, so the
   5750        pass has been limited to only consider profitable cases. Here is an
   5751        example:
   5752     int foo (int *, int *);
   5753     int
   5754     bar (int d)
   5755     {
   5756       int a, b, c;
   5757       b = d + 1;
   5758       c = d + 2;
   5759       a = b + c;
   5760       if (d)
   5761         {
   5762           foo (&b, &c);
   5763           a = b + c;
   5764         }
   5765       printf ("%d\n", a);
   5766     }
   5767 
   5768        The a = b + c can be sunk to right before the printf. Normal code
   5769        sinking will not do this, it will sink the first one above into the
   5770        else-branch of the conditional jump, which still gives you two
   5771        copies of the code.
   5772      * GCC now has a value range propagation pass. This allows the
   5773        compiler to eliminate bounds checks and branches. The results of
   5774        the pass can also be used to accurately compute branch
   5775        probabilities.
   5776      * The pass to convert PHI nodes to straight-line code (a form of
   5777        if-conversion for GIMPLE) has been improved significantly. The two
   5778        most significant improvements are an improved algorithm to
   5779        determine the order in which the PHI nodes are considered, and an
   5780        improvement that allow the pass to consider if-conversions of basic
   5781        blocks with more than two predecessors.
   5782      * Alias analysis improvements. GCC can now differentiate between
   5783        different fields of structures in Tree-SSA's virtual operands form.
   5784        This lets stores/loads from non-overlapping structure fields not
   5785        conflict. A new algorithm to compute points-to sets was contributed
   5786        that can allows GCC to see now that p->a and p->b, where p is a
   5787        pointer to a structure, can never point to the same field.
   5788      * Various enhancements to auto-vectorization:
   5789           + Incrementally preserve SSA form when vectorizing.
   5790           + Incrementally preserve loop-closed form when vectorizing.
   5791           + Improvements to peeling for alignment: generate better code
   5792             when the misalignment of an access is known at compile time,
   5793             or when different accesses are known to have the same
   5794             misalignment, even if the misalignment amount itself is
   5795             unknown.
   5796           + Consider dependence distance in the vectorizer.
   5797           + Externalize generic parts of data reference analysis to make
   5798             this analysis available to other passes.
   5799           + Vectorization of conditional code.
   5800           + Reduction support.
   5801      * GCC can now partition functions in sections of hot and cold code.
   5802        This can significantly improve performance due to better
   5803        instruction cache locality. This feature works best together with
   5804        profile feedback driven optimization.
   5805      * A new pass to avoid saving of unneeded arguments to the stack in
   5806        vararg functions if the compiler can prove that they will not be
   5807        needed.
   5808      * Transition of basic block profiling to tree level implementation
   5809        has been completed. The new implementation should be considerably
   5810        more reliable (hopefully avoiding profile mismatch errors when
   5811        using -fprofile-use or -fbranch-probabilities) and can be used to
   5812        drive higher level optimizations, such as inlining.
   5813        The -ftree-based-profiling command-line option was removed and
   5814        -fprofile-use now implies disabling old RTL level loop optimizer
   5815        (-fno-loop-optimize). Speculative prefetching optimization
   5816        (originally enabled by -fspeculative-prefetching) was removed.
   5817 
   5818 New Languages and Language specific improvements
   5819 
   5820   C and Objective-C
   5821 
   5822      * The old Bison-based C and Objective-C parser has been replaced by a
   5823        new, faster hand-written recursive-descent parser.
   5824 
   5825   Ada
   5826 
   5827      * The build infrastructure for the Ada runtime library and tools has
   5828        been changed to be better integrated with the rest of the build
   5829        infrastructure of GCC. This should make doing cross builds of Ada a
   5830        bit easier.
   5831 
   5832   C++
   5833 
   5834      * ARM-style name-injection of friend declarations is no longer the
   5835        default. For example:
   5836           struct S {
   5837             friend void f();
   5838           };
   5839 
   5840           void g() { f(); }
   5841        will not be accepted; instead a declaration of f will need to be
   5842        present outside of the scope of S. The new -ffriend-injection
   5843        option will enable the old behavior.
   5844      * The (undocumented) extension which permitted templates with default
   5845        arguments to be bound to template template parameters with fewer
   5846        parameters has been deprecated, and will be removed in the next
   5847        major release of G++. For example:
   5848        template <template <typename> class C>
   5849        void f(C<double>) {}
   5850 
   5851        template <typename T, typename U = int>
   5852        struct S {};
   5853 
   5854        template void f(S<double>);
   5855 
   5856        makes use of the deprecated extension. The reason this code is not
   5857        valid ISO C++ is that S is a template with two parameters;
   5858        therefore, it cannot be bound to C which has only one parameter.
   5859 
   5860     Runtime Library (libstdc++)
   5861 
   5862      * Optimization work:
   5863           + A new implementation of std::search_n is provided, better
   5864             performing in case of random access iterators.
   5865           + Added further efficient specializations of istream functions,
   5866             i.e., character array and string extractors.
   5867           + Other smaller improvements throughout.
   5868      * Policy-based associative containers, designed for high-performance,
   5869        flexibility and semantic safety are delivered in ext/pb_assoc.
   5870      * A versatile string class, __gnu_cxx::__versa_string, providing
   5871        facilities conforming to the standard requirements for
   5872        basic_string, is delivered in <ext/vstring.h>. In particular:
   5873           + Two base classes are provided: the default one avoids
   5874             reference counting and is optimized for short strings; the
   5875             alternate one, still uses it while improving in a few low
   5876             level areas (e.g., alignment). See vstring_fwd.h for some
   5877             useful typedefs.
   5878           + Various algorithms have been rewritten (e.g., replace), the
   5879             code streamlined and simple optimizations added.
   5880           + Option 3 of DR 431 is implemented for both available bases,
   5881             thus improving the support for stateful allocators.
   5882      * As usual, many bugs have been fixed (e.g., libstdc++/13583,
   5883        libstdc++/23953) and LWG resolutions put into effect for the first
   5884        time (e.g., DR 280, DR 464, N1780 recommendations for DR 233, TR1
   5885        Issue 6.19). The implementation status of TR1 is now tracked in the
   5886        docs in tr1.html.
   5887 
   5888   Objective-C++
   5889 
   5890      * A new language front end for Objective-C++ has been added. This
   5891        language allows users to mix the object oriented features of
   5892        Objective-C with those of C++.
   5893 
   5894   Java (GCJ)
   5895 
   5896      * Core library (libgcj) updates based on GNU Classpath 0.15 - 0.19
   5897        features (plus some 0.20 bug-fixes)
   5898           + Networking
   5899                o The java.net.HttpURLConnection implementation no longer
   5900                  buffers the entire response body in memory. This means
   5901                  that response bodies larger than available memory can now
   5902                  be handled.
   5903           + (N)IO
   5904                o NIO FileChannel.map implementation, fast bulk put
   5905                  implementation for DirectByteBuffer (speeds up this
   5906                  method 10x).
   5907                o FileChannel.lock() and FileChannel.force() implemented.
   5908           + XML
   5909                o gnu.xml fix for nodes created outside a namespace
   5910                  context.
   5911                o Add support for output indenting and
   5912                  cdata-section-elements output instruction in
   5913                  xml.transform.
   5914                o xml.xpath corrections for cases where elements/attributes
   5915                  might have been created in non-namespace-aware mode.
   5916                  Corrections to handling of XSL variables and minor
   5917                  conformance updates.
   5918           + AWT
   5919                o GNU JAWT implementation, the AWT Native Interface, which
   5920                  allows direct access to native screen resources from
   5921                  within a Canvas's paint method. GNU Classpath Examples
   5922                  comes with a Demo, see libjava/classpath/examples/README.
   5923                o awt.datatransfer updated to 1.5 with support for
   5924                  FlavorEvents. The gtk+ awt peers now allow copy/paste of
   5925                  text, images, URIs/files and serialized objects with
   5926                  other applications and tracking clipboard change events
   5927                  with gtk+ 2.6 (for gtk+ 2.4 only text and serialized
   5928                  objects are supported). A GNU Classpath Examples
   5929                  datatransfer Demo was added to show the new
   5930                  functionality.
   5931                o Split gtk+ awt peers event handling in two threads and
   5932                  improve gdk lock handling (solves several awt lock ups).
   5933                o Speed up awt Image loading.
   5934                o Better gtk+ scrollbar peer implementation when using gtk+
   5935                  >= 2.6.
   5936                o Handle image loading errors correctly for gdkpixbuf and
   5937                  MediaTracker.
   5938                o Better handle GDK lock. Properly prefix gtkpeer native
   5939                  functions (cp_gtk).
   5940                o GdkGraphics2D has been updated to use Cairo 0.5.x or
   5941                  higher.
   5942                o BufferedImage and GtkImage rewrites. All image drawing
   5943                  operations should now work correctly (flipping requires
   5944                  gtk+ >= 2.6)
   5945                o Future Graphics2D, image and text work is documented at:
   5946                  [2]http://developer.classpath.org/mediation/ClasspathGrap
   5947                  hicsImagesText
   5948                o When gtk+ 2.6 or higher is installed the default log
   5949                  handler will produce stack traces whenever a WARNING,
   5950                  CRITICAL or ERROR message is produced.
   5951           + Free Swing
   5952                o The RepaintManager has been reworked for more efficient
   5953                  painting, especially for large GUIs.
   5954                o The layout manager OverlayLayout has been implemented,
   5955                  the BoxLayout has been rewritten to make use of the
   5956                  SizeRequirements utility class and caching for more
   5957                  efficient layout.
   5958                o Improved accessibility support.
   5959                o Significant progress has been made in the implementation
   5960                  of the javax.swing.plaf.metal package, with most UI
   5961                  delegates in a working state now. Please test this with
   5962                  your own applications and provide feedback that will help
   5963                  us to improve this package.
   5964                o The GUI demo (gnu.classpath.examples.swing.Demo) has been
   5965                  extended to highlight various features in our Free Swing
   5966                  implementation. And it includes a look and feel switcher
   5967                  for Metal (default), Ocean and GNU themes.
   5968                o The javax.swing.plaf.multi package is now implemented.
   5969                o Editing and several key actions for JTree and JTable were
   5970                  implemented.
   5971                o Lots of icons and look and feel improvements for Free
   5972                  Swing basic and metal themes were added. Try running the
   5973                  GNU Classpath Swing Demo in examples
   5974                  (gnu.classpath.examples.swing.Demo) with:
   5975                  -Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFee
   5976                  l or
   5977                  -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFee
   5978                  l
   5979                o Start of styled text capabilites for java.swing.text.
   5980                o DefaultMutableTreeNode pre-order, post-order, depth-first
   5981                  and breadth-first traversal enumerations implemented.
   5982                o JInternalFrame colors and titlebar draw properly.
   5983                o JTree is working up to par (icons, selection and keyboard
   5984                  traversal).
   5985                o JMenus were made more compatible in visual and
   5986                  programmatic behavior.
   5987                o JTable changeSelection and multiple selections
   5988                  implemented.
   5989                o JButton and JToggleButton change states work properly
   5990                  now.
   5991                o JFileChooser fixes.
   5992                o revalidate() and repaint() fixes which make Free Swing
   5993                  much more responsive.
   5994                o MetalIconFactory implemented.
   5995                o Free Swing Top-Level Compatibility. JFrame, JDialog,
   5996                  JApplet, JInternalFrame, and JWindow are now 1.5
   5997                  compatible in the sense that you can call add() and
   5998                  setLayout() directly on them, which will have the same
   5999                  effect as calling getContentPane().add() and
   6000                  getContentPane().setLayout().
   6001                o The JTree interface has been completed. JTrees now
   6002                  recognizes mouse clicks and selections work.
   6003                o BoxLayout works properly now.
   6004                o Fixed GrayFilter to actually work.
   6005                o Metal SplitPane implemented.
   6006                o Lots of Free Swing text and editor stuff work now.
   6007           + Free RMI and Corba
   6008                o Andrew Watson, Vice President and Technical Director of
   6009                  the Object Management Group, has officially assigned us
   6010                  20 bit Vendor Minor Code Id: 0x47430 ("GC") that will
   6011                  mark remote classpath-specific system exceptions.
   6012                  Obtaining the VMCID means that GNU Classpath now is a
   6013                  recogniseable type of node in a highly interoperable
   6014                  CORBA world.
   6015                o GNU Classpath now includes the first working draft to
   6016                  support the RMI over IIOP protocol. The current
   6017                  implementation is capable of remote invocations,
   6018                  transferring various Serializables and Externalizables
   6019                  via RMI-IIOP protocol. It can flatten graphs and, at
   6020                  least for the simple cases, is interoperable with 1.5
   6021                  JDKs.
   6022                o org.omg.PortableInterceptor and related functionality in
   6023                  other packages is now implemented:
   6024                     # The sever and client interceptors work as required
   6025                       since 1.4.
   6026                     # The IOR interceptor works as needed for 1.5.
   6027                o The org.omg.DynamicAny package is completed and passes
   6028                  the prepared tests.
   6029                o The Portable Object Adapter should now support the output
   6030                  of the recent IDL to java compilers. These compilers now
   6031                  generate servants and not CORBA objects as before, making
   6032                  the output depend on the existing POA implementation.
   6033                  Completing POA means that such code can already be tried
   6034                  to run on Classpath. Our POA is tested for the following
   6035                  usager scenarios:
   6036                     # POA converts servant to the CORBA object.
   6037                     # Servant provides to the CORBA object.
   6038                     # POA activates new CORBA object with the given Object
   6039                       Id (byte array) that is later accessible for the
   6040                       servant.
   6041                     # During the first call, the ServantActivator provides
   6042                       servant for this and all subsequent calls on the
   6043                       current object.
   6044                     # During each call, the ServantLocator provides
   6045                       servant for this call only.
   6046                     # ServantLocator or ServantActivator forwards call to
   6047                       another server.
   6048                     # POA has a single servant, responsible for all
   6049                       objects.
   6050                     # POA has a default servant, but some objects are
   6051                       explicitly connected to they specific servants.
   6052                  The POA is verified using tests from the former
   6053                  cost.omg.org.
   6054                o The CORBA implementation is now a working prototype that
   6055                  should support features up to 1.3 inclusive. We invite
   6056                  groups writing CORBA dependent applications to try
   6057                  Classpath implementation, reporting any possible bugs.
   6058                  The CORBA prototype is interoperable with Sun's
   6059                  implementation v 1.4, transferring object references,
   6060                  primitive types, narrow and wide strings, arrays,
   6061                  structures, trees, abstract interfaces and value types
   6062                  (feature of CORBA 2.3) between these two platforms.
   6063                  Remote exceptions are transferred and handled correctly.
   6064                  The stringified object references (IORs) from various
   6065                  sources are parsed as required. The transient (for
   6066                  current session) and permanent (till jre restart)
   6067                  redirections work. Both Little and Big Endian encoded
   6068                  messages are accepted. The implementation is verified
   6069                  using tests from the former cost.omg.org. The current
   6070                  release includes working examples (see the examples
   6071                  directory), demonstrating the client-server
   6072                  communication, using either CORBA Request or IDL-based
   6073                  stub (usually generated by a IDL to java compiler). These
   6074                  examples also show how to use the Classpath CORBA naming
   6075                  service. The IDL to java compiler is not yet written, but
   6076                  as our library must be compatible, it naturally accepts
   6077                  the output of other idlj implementations.
   6078           + Misc
   6079                o Updated TimeZone data against Olson tzdata2005l.
   6080                o Make zip and jar packages UTF-8 clean.
   6081                o "native" code builds and compiles (warning free) on
   6082                  Darwin and Solaris.
   6083                o java.util.logging.FileHandler now rotates files.
   6084                o Start of a generic JDWP framework in gnu/classpath/jdwp.
   6085                  This is unfinished, but feedback (at classpath (a] gnu.org)
   6086                  from runtime hackers is greatly appreciated. Although
   6087                  most of the work is currently being done around gcj/gij
   6088                  we want this framework to be as VM neutral as possible.
   6089                  Early design is described in:
   6090                  [3]http://gcc.gnu.org/ml/java/2005-05/msg00260.html
   6091                o QT4 AWT peers, enable by giving configure
   6092                  --enable-qt-peer. Included, but not ready for production
   6093                  yet. They are explicitly disabled and not supported. But
   6094                  if you want to help with the development of these new
   6095                  features we are interested in feedback. You will have to
   6096                  explicitly enable them to try them out (and they will
   6097                  most likely contain bugs).
   6098                o Documentation fixes all over the place. See
   6099                  [4]http://developer.classpath.org/doc/
   6100 
   6101 New Targets and Target Specific Improvements
   6102 
   6103   IA-32/x86-64
   6104 
   6105      * The x86-64 medium model (that allows building applications whose
   6106        data segment exceeds 4GB) was redesigned to match latest ABI draft.
   6107        New implementation split large datastructures into separate segment
   6108        improving performance of accesses to small datastructures and also
   6109        allows linking of small model libraries into medium model programs
   6110        as long as the libraries are not accessing the large datastructures
   6111        directly. Medium model is also supported in position independent
   6112        code now.
   6113        The ABI change results in partial incompatibility among medium
   6114        model objects. Linking medium model libraries (or objects) compiled
   6115        with new compiler into medium model program compiled with older
   6116        will likely result in exceeding ranges of relocations.
   6117        Binutils 2.16.91 or newer are required for compiling medium model
   6118        now.
   6119 
   6120   RS6000 (POWER/PowerPC)
   6121 
   6122      * The AltiVec vector primitives in <altivec.h> are now implemented in
   6123        a way that puts a smaller burden on the preprocessor, instead
   6124        processing the "overloading" in the front ends. This should benefit
   6125        compilation speed on AltiVec vector code.
   6126      * AltiVec initializers now are generated more efficiently.
   6127      * The popcountb instruction available on POWER5 now is generated.
   6128      * The floating point round to integer instructions available on
   6129        POWER5+ now is generated.
   6130      * Floating point divides can be synthesized using the floating point
   6131        reciprocal estimate instructions.
   6132      * Double precision floating point constants are initialized as single
   6133        precision values if they can be represented exactly.
   6134 
   6135   S/390, zSeries and System z9
   6136 
   6137      * Support for the IBM System z9 109 processor has been added. When
   6138        using the -march=z9-109 option, the compiler will generate code
   6139        making use of instructions provided by the extended immediate
   6140        facility.
   6141      * Support for 128-bit IEEE floating point has been added. When using
   6142        the -mlong-double-128 option, the compiler will map the long double
   6143        data type to 128-bit IEEE floating point. Using this option
   6144        constitutes an ABI change, and requires glibc support.
   6145      * Various changes to improve performance of generated code have been
   6146        implemented, including:
   6147           + In functions that do not require a literal pool, register %r13
   6148             (which is traditionally reserved as literal pool pointer), can
   6149             now be freely used for other purposes by the compiler.
   6150           + More precise tracking of register use allows the compiler to
   6151             generate more efficient function prolog and epilog code in
   6152             certain cases.
   6153           + The SEARCH STRING, COMPARE LOGICAL STRING, and MOVE STRING
   6154             instructions are now used to implement C string functions.
   6155           + The MOVE CHARACTER instruction with single byte overlap is now
   6156             used to implement the memset function with non-zero fill byte.
   6157           + The LOAD ZERO instructions are now used where appropriate.
   6158           + The INSERT CHARACTERS UNDER MASK, STORE CHARACTERS UNDER MASK,
   6159             and INSERT IMMEDIATE instructions are now used more frequently
   6160             to optimize bitfield operations.
   6161           + The BRANCH ON COUNT instruction is now used more frequently.
   6162             In particular, the fact that a loop contains a subroutine call
   6163             no longer prevents the compiler from using this instruction.
   6164           + The compiler is now aware that all shift and rotate
   6165             instructions implicitly truncate the shift count to six bits.
   6166      * Back-end support for the following generic features has been
   6167        implemented:
   6168           + The full set of [5]built-in functions for atomic memory
   6169             access.
   6170           + The -fstack-protector feature.
   6171           + The optimization pass avoiding unnecessary stores of incoming
   6172             argument registers in functions with variable argument list.
   6173 
   6174   SPARC
   6175 
   6176      * The default code model in 64-bit mode has been changed from
   6177        Medium/Anywhere to Medium/Middle on Solaris.
   6178      * TLS support is disabled by default on Solaris prior to release 10.
   6179        It can be enabled on TLS-capable Solaris 9 versions (4/04 release
   6180        and later) by specifying --enable-tls at configure time.
   6181 
   6182   MorphoSys
   6183 
   6184      * Support has been added for this new architecture.
   6185 
   6186 Obsolete Systems
   6187 
   6188 Documentation improvements
   6189 
   6190 Other significant improvements
   6191 
   6192      * GCC can now emit code for protecting applications from
   6193        stack-smashing attacks. The protection is realized by buffer
   6194        overflow detection and reordering of stack variables to avoid
   6195        pointer corruption.
   6196      * Some built-in functions have been fortified to protect them against
   6197        various buffer overflow (and format string) vulnerabilities.
   6198        Compared to the mudflap bounds checking feature, the safe builtins
   6199        have far smaller overhead. This means that programs built using
   6200        safe builtins should not experience any measurable slowdown.
   6201 
   6202 GCC 4.1.2
   6203 
   6204    This is the [6]list of problem reports (PRs) from GCC's bug tracking
   6205    system that are known to be fixed in the 4.1.2 release. This list might
   6206    not be complete (that is, it is possible that some PRs that have been
   6207    fixed are not listed here).
   6208 
   6209    When generating code for a shared library, GCC now recognizes that
   6210    global functions may be replaced when the program runs. Therefore, it
   6211    is now more conservative in deducing information from the bodies of
   6212    functions. For example, in this example:
   6213     void f() {}
   6214     void g() {
   6215      try { f(); }
   6216      catch (...) {
   6217        cout << "Exception";
   6218      }
   6219     }
   6220 
   6221    G++ would previously have optimized away the catch clause, since it
   6222    would have concluded that f cannot throw exceptions. Because users may
   6223    replace f with another function in the main body of the program, this
   6224    optimization is unsafe, and is no longer performed. If you wish G++ to
   6225    continue to optimize as before, you must add a throw() clause to the
   6226    declaration of f to make clear that it does not throw exceptions.
   6227 
   6228 
   6229     For questions related to the use of GCC, please consult these web
   6230     pages and the [7]GCC manuals. If that fails, the
   6231     [8]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   6232     web pages and the development of GCC are welcome on our developer
   6233     list at [9]gcc (a] gcc.gnu.org. All of [10]our lists have public
   6234     archives.
   6235 
   6236    Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and
   6237    distribution of this entire article is permitted in any medium,
   6238    provided this notice is preserved.
   6239 
   6240    These pages are [12]maintained by the GCC team. Last modified
   6241    2012-11-02[13].
   6242 
   6243 References
   6244 
   6245    1. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
   6246    2. http://developer.classpath.org/mediation/ClasspathGraphicsImagesText
   6247    3. http://gcc.gnu.org/ml/java/2005-05/msg00260.html
   6248    4. http://developer.classpath.org/doc/
   6249    5. http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
   6250    6. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2
   6251    7. http://gcc.gnu.org/onlinedocs/
   6252    8. mailto:gcc-help (a] gcc.gnu.org
   6253    9. mailto:gcc (a] gcc.gnu.org
   6254   10. http://gcc.gnu.org/lists.html
   6255   11. http://www.fsf.org/
   6256   12. http://gcc.gnu.org/about.html
   6257   13. http://validator.w3.org/check/referer
   6258 ======================================================================
   6259 http://gcc.gnu.org/gcc-4.0/index.html
   6260 
   6261                              GCC 4.0 Release Series
   6262 
   6263    January 31, 2007
   6264 
   6265    The [1]GNU project and the GCC developers are pleased to announce the
   6266    release of GCC 4.0.4.
   6267 
   6268    This release is a bug-fix release, containing fixes for regressions in
   6269    GCC 4.0.3 relative to previous releases of GCC.
   6270 
   6271 Release History
   6272 
   6273    GCC 4.0.4
   6274           January 31, 2007 ([2]changes)
   6275 
   6276    GCC 4.0.3
   6277           March 10, 2006 ([3]changes)
   6278 
   6279    GCC 4.0.2
   6280           September 28, 2005 ([4]changes)
   6281 
   6282    GCC 4.0.1
   6283           July 7, 2005 ([5]changes)
   6284 
   6285    GCC 4.0.0
   6286           April 20, 2005 ([6]changes)
   6287 
   6288 References and Acknowledgements
   6289 
   6290    GCC used to stand for the GNU C Compiler, but since the compiler
   6291    supports several other languages aside from C, it now stands for the
   6292    GNU Compiler Collection.
   6293 
   6294    A list of [7]successful builds is updated as new information becomes
   6295    available.
   6296 
   6297    The GCC developers would like to thank the numerous people that have
   6298    contributed new features, improvements, bug fixes, and other changes as
   6299    well as test results to GCC. This [8]amazing group of volunteers is
   6300    what makes GCC successful.
   6301 
   6302    For additional information about GCC please refer to the [9]GCC project
   6303    web site or contact the [10]GCC development mailing list.
   6304 
   6305    To obtain GCC please use [11]our mirror sites, or [12]our SVN server.
   6306 
   6307 
   6308     For questions related to the use of GCC, please consult these web
   6309     pages and the [13]GCC manuals. If that fails, the
   6310     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   6311     web pages and the development of GCC are welcome on our developer
   6312     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
   6313     archives.
   6314 
   6315    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
   6316    distribution of this entire article is permitted in any medium,
   6317    provided this notice is preserved.
   6318 
   6319    These pages are [18]maintained by the GCC team. Last modified
   6320    2012-11-02[19].
   6321 
   6322 References
   6323 
   6324    1. http://www.gnu.org/
   6325    2. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
   6326    3. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.3
   6327    4. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.2
   6328    5. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.1
   6329    6. http://gcc.gnu.org/gcc-4.0/changes.html
   6330    7. http://gcc.gnu.org/gcc-4.0/buildstat.html
   6331    8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   6332    9. http://gcc.gnu.org/index.html
   6333   10. mailto:gcc (a] gcc.gnu.org
   6334   11. http://gcc.gnu.org/mirrors.html
   6335   12. http://gcc.gnu.org/svn.html
   6336   13. http://gcc.gnu.org/onlinedocs/
   6337   14. mailto:gcc-help (a] gcc.gnu.org
   6338   15. mailto:gcc (a] gcc.gnu.org
   6339   16. http://gcc.gnu.org/lists.html
   6340   17. http://www.fsf.org/
   6341   18. http://gcc.gnu.org/about.html
   6342   19. http://validator.w3.org/check/referer
   6343 ======================================================================
   6344 http://gcc.gnu.org/gcc-4.0/changes.html
   6345 
   6346                              GCC 4.0 Release Series
   6347                         Changes, New Features, and Fixes
   6348 
   6349    The latest release in the 4.0 release series is [1]GCC 4.0.4.
   6350 
   6351 Caveats
   6352 
   6353      * GCC now generates location lists by default when compiling with
   6354        debug info and optimization.
   6355           + GDB 6.0 and older crashes when it sees location lists. GDB 6.1
   6356             or later is needed to debug binaries containing location
   6357             lists.
   6358           + When you are trying to view a value of a variable in a part of
   6359             a function where it has no location (for example when the
   6360             variable is no longer used and thus its location was used for
   6361             something else) GDB will say that it is not available.
   6362        You can disable generating location lists by -fno-var-tracking.
   6363      * GCC no longer accepts the -fwritable-strings option. Use named
   6364        character arrays when you need a writable string.
   6365      * The options -freduce-all-givs and -fmove-all-movables have been
   6366        discontinued. They were used to circumvent a shortcoming in the
   6367        heuristics of the old loop optimization code with respect to common
   6368        Fortran constructs. The new (tree) loop optimizer works differently
   6369        and doesn't need those work-arounds.
   6370      * The graph-coloring register allocator, formerly enabled by the
   6371        option -fnew-ra, has been discontinued.
   6372      * -I- has been deprecated. -iquote is meant to replace the need for
   6373        this option.
   6374      * The MIPS -membedded-pic and -mrnames options have been removed.
   6375      * All MIPS targets now require the GNU assembler. In particular, IRIX
   6376        configurations can no longer use the MIPSpro assemblers, although
   6377        they do still support the MIPSpro linkers.
   6378      * The SPARC option -mflat has been removed.
   6379      * English-language diagnostic messages will now use Unicode quotation
   6380        marks in UTF-8 locales. (Non-English messages already used the
   6381        quotes appropriate for the language in previous releases.) If your
   6382        terminal does not support UTF-8 but you are using a UTF-8 locale
   6383        (such locales are the default on many GNU/Linux systems) then you
   6384        should set LC_CTYPE=C in the environment to disable that locale.
   6385        Programs that parse diagnostics and expect plain ASCII
   6386        English-language messages should set LC_ALL=C. See [2]Markus Kuhn's
   6387        explanation of Unicode quotation marks for more information.
   6388      * The specs file is no longer installed on most platforms. Most users
   6389        will be totally unaffected. However, if you are accustomed to
   6390        editing the specs file yourself, you will now have to use the
   6391        -dumpspecs option to generate the specs file, and then edit the
   6392        resulting file.
   6393 
   6394 General Optimizer Improvements
   6395 
   6396      * The [3]tree ssa branch has been merged. This merge has brought in a
   6397        completely new optimization framework based on a higher level
   6398        intermediate representation than the existing RTL representation.
   6399        Numerous new code transformations based on the new framework are
   6400        available in GCC 4.0, including:
   6401           + Scalar replacement of aggregates
   6402           + Constant propagation
   6403           + Value range propagation
   6404           + Partial redundancy elimination
   6405           + Load and store motion
   6406           + Strength reduction
   6407           + Dead store elimination
   6408           + Dead and unreachable code elimination
   6409           + [4]Autovectorization
   6410           + Loop interchange
   6411           + Tail recursion by accumulation
   6412        Many of these passes outperform their counterparts from previous
   6413        GCC releases.
   6414      * [5]Swing Modulo Scheduling (SMS). An RTL level instruction
   6415        scheduling optimization intended for loops that perform heavy
   6416        computations.
   6417 
   6418 New Languages and Language specific improvements
   6419 
   6420   C family
   6421 
   6422      * The sentinel attribute has been added to GCC. This function
   6423        attribute allows GCC to warn when variadic functions such as execl
   6424        are not NULL terminated. See the GCC manual for a complete
   6425        description of its behavior.
   6426      * Given __attribute__((alias("target"))) it is now an error if target
   6427        is not a symbol, defined in the same translation unit. This also
   6428        applies to aliases created by #pragma weak alias=target. This is
   6429        because it's meaningless to define an alias to an undefined symbol.
   6430        On Solaris, the native assembler would have caught this error, but
   6431        GNU as does not.
   6432 
   6433   C and Objective-C
   6434 
   6435      * The -Wstrict-aliasing=2 option has been added. This warning catches
   6436        all unsafe cases, but it may also give a warning for some cases
   6437        that are safe.
   6438      * The cast-as-lvalue, conditional-expression-as-lvalue and
   6439        compound-expression-as-lvalue extensions, which were deprecated in
   6440        3.3.4 and 3.4, have been removed.
   6441      * The -fwritable-strings option, which was deprecated in 3.4, has
   6442        been removed.
   6443      * #pragma pack() semantics have been brought closer to those used by
   6444        other compilers. This also applies to C++.
   6445      * Taking the address of a variable with register storage is invalid
   6446        in C. GCC now issues an error instead of a warning.
   6447      * Arrays of incomplete element type are invalid in C. GCC now issues
   6448        an error for such arrays. Declarations such as extern struct s x[];
   6449        (where struct s has not been defined) can be moved after the
   6450        definition of struct s. Function parameters declared as arrays of
   6451        incomplete type can instead be declared as pointers.
   6452 
   6453   C++
   6454 
   6455      * When compiling without optimizations (-O0), the C++ frontend is
   6456        much faster than in any previous versions of GCC. Independent
   6457        testers have measured speed-ups up to 25% in real-world production
   6458        code, compared to the 3.4 family (which was already the fastest
   6459        version to date). Upgrading from older versions might show even
   6460        bigger improvements.
   6461      * ELF visibility attributes can now be applied to a class type, so
   6462        that it affects every member function of a class at once, without
   6463        having to specify each individually:
   6464 class __attribute__ ((visibility("hidden"))) Foo
   6465 {
   6466    int foo1();
   6467    void foo2();
   6468 };
   6469        The syntax is deliberately similar to the __declspec() system used
   6470        by Microsoft Windows based compilers, allowing cross-platform
   6471        projects to easily reuse their existing macro system for denoting
   6472        exports and imports. By explicitly marking internal classes never
   6473        used outside a binary as hidden, one can completely avoid PLT
   6474        indirection overheads during their usage by the compiler. You can
   6475        find out more about the advantages of this at
   6476        [6]http://www.akkadia.org/drepper/dsohowto.pdf
   6477      * The -fvisibility-inlines-hidden option has been added which marks
   6478        all inlineable functions as having hidden ELF visibility, thus
   6479        removing their symbol and typeinfo from the exported symbol table
   6480        of the output ELF binary. Using this option can reduce the exported
   6481        symbol count of template-heavy code by up to 40% with no code
   6482        change at all, thus notably improving link and load times for the
   6483        binary as well as a reduction in size of up to 10%. Also, check the
   6484        new [7]-fvisibility option.
   6485      * The compiler now uses the library interface specified by the [8]C++
   6486        ABI for thread-safe initialization of function-scope static
   6487        variables. Most users should leave this alone, but embedded
   6488        programmers may want to disable this by specifying
   6489        -fno-threadsafe-statics for a small savings in code size.
   6490      * Taking the address of an explicit register variable is no longer
   6491        supported. Note that C++ allows taking the address of variables
   6492        with register storage so this will continue to compile with a
   6493        warning. For example, assuming that r0 is a machine register:
   6494 register int foo asm ("r0");
   6495 register int bar;
   6496 &foo; // error, no longer accepted
   6497 &bar; // OK, with a warning
   6498      * G++ has an undocumented extension to virtual function covariancy
   6499        rules that allowed the overrider to return a type that was
   6500        implicitly convertable to the overridden function's return type.
   6501        For instance a function returning void * could be overridden by a
   6502        function returning T *. This is now deprecated and will be removed
   6503        in a future release.
   6504      * The G++ minimum and maximum operators (<? and >?) and their
   6505        compound forms (<?=) and >?=) have been deprecated and will be
   6506        removed in a future version. Code using these operators should be
   6507        modified to use std::min and std::max instead.
   6508      * Declaration of nested classes of class templates as friends are
   6509        supported:
   6510 template <typename T> struct A {
   6511   class B {};
   6512 };
   6513 class C {
   6514   template <typename T> friend class A<T>::B;
   6515 };
   6516        This complements the feature member functions of class templates as
   6517        friends introduced in GCC 3.4.0.
   6518      * When declaring a friend class using an unqualified name, classes
   6519        outside the innermost non-class scope are not searched:
   6520 class A;
   6521 namespace N {
   6522   class B {
   6523     friend class A;   // Refer to N::A which has not been declared yet
   6524                       // because name outside namespace N are not searched
   6525     friend class ::A; // Refer to ::A
   6526   };
   6527 }
   6528        Hiding the friend name until declaration is still not implemented.
   6529      * Friends of classes defined outside their namespace are correctly
   6530        handled:
   6531 namespace N {
   6532   class A;
   6533 }
   6534 class N::A {
   6535   friend class B; // Refer to N::B in GCC 4.0.0
   6536                   // but ::B in earlier versions of GCC
   6537 };
   6538 
   6539     Runtime Library (libstdc++)
   6540 
   6541      * Optimization work:
   6542           + Added efficient specializations of istream functions for char
   6543             and wchar_t.
   6544           + Further performance tuning of strings, in particular wrt
   6545             single-char append and getline.
   6546           + iter_swap - and therefore most of the mutating algorithms -
   6547             now makes an unqualified call to swap when the value_type of
   6548             the two iterators is the same.
   6549      * A large subset of the features in Technical Report 1 (TR1 for
   6550        short) is experimentally delivered (i.e., no guarantees about the
   6551        implementation are provided. In particular it is not promised that
   6552        the library will remain link-compatible when code using TR1 is
   6553        used):
   6554           + General utilities such as reference_wrapper and shared_ptr.
   6555           + Function objects, i.e., result_of, mem_fn, bind, function.
   6556           + Support for metaprogramming.
   6557           + New containers such as tuple, array, unordered_set,
   6558             unordered_map, unordered_multiset, unordered_multimap.
   6559      * As usual, many bugs have been fixed and LWG resolutions implemented
   6560        for the first time (e.g., DR 409).
   6561 
   6562   Java
   6563 
   6564      * In order to prevent naming conflicts with other implementations of
   6565        these tools, some GCJ binaries have been renamed:
   6566           + rmic is now grmic,
   6567           + rmiregistry is now grmiregistry, and
   6568           + jar is now fastjar.
   6569        In particular, these names were problematic for the jpackage.org
   6570        packaging conventions which install symlinks in /usr/bin that point
   6571        to the preferred versions of these tools.
   6572      * The -findirect-dispatch argument to the compiler now works and
   6573        generates code following a new "binary compatibility" ABI. Code
   6574        compiled this way follows the binary compatibility rules of the
   6575        Java Language Specification.
   6576      * libgcj now has support for using GCJ as a JIT, using the
   6577        gnu.gcj.jit family of system properties.
   6578      * libgcj can now find a shared library corresponding to the bytecode
   6579        representation of a class. See the documentation for the new
   6580        gcj-dbtool program, and the new gnu.gcj.precompiled.db.path system
   6581        property.
   6582      * There have been many improvements to the class library. Here are
   6583        some highlights:
   6584           + Much more of AWT and Swing exist.
   6585           + Many new packages and classes were added, including
   6586             java.util.regex, java.net.URI, javax.crypto,
   6587             javax.crypto.interfaces, javax.crypto.spec, javax.net,
   6588             javax.net.ssl, javax.security.auth,
   6589             javax.security.auth.callback, javax.security.auth.login,
   6590             javax.security.auth.x500, javax.security.sasl, org.ietf.jgss,
   6591             javax.imageio, javax.imageio.event, javax.imageio.spi,
   6592             javax.print, javax.print.attribute,
   6593             javax.print.attribute.standard, javax.print.event, and
   6594             javax.xml
   6595           + Updated SAX and DOM, and imported GNU JAXP
   6596 
   6597   Fortran
   6598 
   6599      * A new [9]Fortran front end has replaced the aging GNU Fortran 77
   6600        front end. The new front end supports Fortran 90 and Fortran 95. It
   6601        may not yet be as stable as the old Fortran front end.
   6602 
   6603   Ada
   6604 
   6605      * Ada (with tasking and Zero Cost Exceptions) is now available on
   6606        many more targets, including but not limited to: alpha-linux,
   6607        hppa-hpux, hppa-linux, powerpc-darwin, powerpc-linux, s390-linux,
   6608        s390x-linux, sparc-linux.
   6609      * Some of the new Ada 2005 features are now implemented like
   6610        Wide_Wide_Character and Ada.Containers.
   6611      * Many bugs have been fixed, tools and documentation improved.
   6612      * To compile Ada from the sources, install an older working Ada
   6613        compiler and then use --enable-languages=ada at configuration time,
   6614        since the Ada frontend is not currently activated by default. See
   6615        the [10]Installing GCC for details.
   6616 
   6617 New Targets and Target Specific Improvements
   6618 
   6619   H8/300
   6620 
   6621      * The frame layout has changed. In the new layout, the prologue of a
   6622        function first saves registers and then allocate space for locals,
   6623        resulting in an 1% improvement on code size.
   6624 
   6625   IA-32/x86-64 (AMD64)
   6626 
   6627      * The acos, asin, drem, exp10, exp2, expm1, fmod, ilogb, log10,
   6628        log1p, log2, logb and tan mathematical builtins (and their float
   6629        and long double variants) are now implemented as inline x87
   6630        intrinsics when using -ffast-math.
   6631      * The ceil, floor, nearbyint, rint and trunc mathematical builtins
   6632        (and their float and long double variants) are now implemented as
   6633        inline x87 intrinsics when using -ffast-math.
   6634      * The x87's fsincos instruction is now used automatically with
   6635        -ffast-math when calculating both the sin and cos of the same
   6636        argument.
   6637      * Instruction selection for multiplication and division by constants
   6638        has been improved.
   6639 
   6640   IA-64
   6641 
   6642      * Floating point division, integer division and sqrt are now inlined,
   6643        resulting in significant performance improvements on some codes.
   6644 
   6645   MIPS
   6646 
   6647      * Division by zero checks now use conditional traps if the target
   6648        processor supports them. This decreases code size by one word per
   6649        division operation. The old behavior (branch and break) can be
   6650        obtained either at configure time by passing --with-divide=breaks
   6651        to configure or at runtime by passing -mdivide-breaks to GCC.
   6652      * Support for MIPS64 paired-single instructions has been added. It is
   6653        enabled by -mpaired-single and can be accessed using both the
   6654        target-independent vector extensions and new MIPS-specific built-in
   6655        functions.
   6656      * Support for the MIPS-3D ASE has been added. It is enabled by
   6657        -mips3d and provides new MIPS-3D-specific built-in functions.
   6658      * The -mexplicit-relocs option now supports static n64 code (as is
   6659        used, for example, in 64-bit linux kernels). -mexplicit-relocs
   6660        should now be feature-complete and is enabled by default when GCC
   6661        is configured to use a compatible assembler.
   6662      * Support for the NEC VR4130 series has been added. This support
   6663        includes the use of VR-specific instructions and a new VR4130
   6664        scheduler. Full VR4130 support can be selected with -march=vr4130
   6665        while code for any ISA can be tuned for the VR4130 using
   6666        -mtune=vr4130. There is also a new -mvr4130-align option that
   6667        produces better schedules at the cost of increased code size.
   6668      * Support for the Broadcom SB-1 has been extended. There is now an
   6669        SB-1 scheduler as well as support for the SB-1-specific
   6670        paired-single instructions. Full SB-1 support can be selected with
   6671        -march=sb1 while code for any ISA can be optimized for the SB-1
   6672        using -mtune=sb1.
   6673      * The compiler can now work around errata in R4000, R4400, VR4120 and
   6674        VR4130 processors. These workarounds are enabled by -mfix-r4000,
   6675        -mfix-r4400, -mfix-vr4120 and -mfix-vr4130 respectively. The VR4120
   6676        and VR4130 workarounds need binutils 2.16 or above.
   6677      * IRIX shared libraries are now installed into the standard library
   6678        directories: o32 libraries go into lib/, n32 libraries go into
   6679        lib32/ and n64 libraries go into lib64/.
   6680      * The compiler supports a new -msym32 option. It can be used to
   6681        optimize n64 code in which all symbols are known to have 32-bit
   6682        values.
   6683 
   6684   S/390 and zSeries
   6685 
   6686      * New command-line options help to generate code intended to run in
   6687        an environment where stack space is restricted, e.g. Linux kernel
   6688        code:
   6689           + -mwarn-framesize and -mwarn-dynamicstack trigger compile-time
   6690             warnings for single functions that require large or dynamic
   6691             stack frames.
   6692           + -mstack-size and -mstack-guard generate code that checks for
   6693             stack overflow at run time.
   6694           + -mpacked-stack generates code that reduces the stack frame
   6695             size of many functions by reusing unneeded parts of the stack
   6696             bias area.
   6697      * The -msoft-float option now ensures that generated code never
   6698        accesses floating point registers.
   6699      * The s390x-ibm-tpf target now fully supports C++, including
   6700        exceptions and threads.
   6701      * Various changes to improve performance of the generated code have
   6702        been implemented, including:
   6703           + GCC now uses sibling calls where possible.
   6704           + Condition code handling has been optimized, allowing GCC to
   6705             omit redundant comparisons in certain cases.
   6706           + The cost function guiding many optimizations has been refined
   6707             to more accurately represent the z900 and z990 processors.
   6708           + The ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL WITH BORROW
   6709             instructions are now used to avoid conditional branches in
   6710             certain cases.
   6711           + The back end now uses the LEGITIMIZE_RELOAD_ADDRESS feature to
   6712             optimize address arithmetic required to access large stack
   6713             frames.
   6714           + GCC now makes more efficient use of memory-to-memory type
   6715             instructions (MVC, CLC, ...).
   6716           + More precise tracking of special register use allows better
   6717             instruction scheduling, in particular of the function prologue
   6718             and epilogue sequences.
   6719           + The Java front end now generates inline code to implement
   6720             integer division, instead of calling library routines.
   6721 
   6722   SPARC
   6723 
   6724      * The options -mv8, -msparclite, -mcypress, -msupersparc, -mf930 and
   6725        -mf934 have been removed. They have been replaced with -mcpu=xxx.
   6726      * The internal model used to estimate the relative cost of each
   6727        instruction has been updated. It is expected to give better results
   6728        on recent UltraSPARC processors.
   6729      * Code generation for function prologues and epilogues has been
   6730        improved, resulting in better scheduling and allowing multiple exit
   6731        points in functions.
   6732      * Support for Sun's Visual Instruction Set (VIS) has been enhanced.
   6733        It is enabled by -mvis and provides new built-in functions for VIS
   6734        instructions on UltraSPARC processors.
   6735      * The option -mapp-regs has been turned on by default on Solaris too.
   6736 
   6737   NetWare
   6738 
   6739      * Novell NetWare (on ix86, no other hardware platform was ever really
   6740        supported by this OS) has been re-enabled and the ABI supported by
   6741        GCC has been brought into sync with that of MetroWerks CodeWarrior
   6742        (the ABI previously supported was that of some Unix systems, which
   6743        NetWare never tried to support).
   6744 
   6745 Obsolete Systems
   6746 
   6747    Support for a number of older systems has been declared obsolete in GCC
   6748    4.0. Unless there is activity to revive them, the next release of GCC
   6749    will have their sources permanently removed.
   6750 
   6751    All GCC ports for the following processor architectures have been
   6752    declared obsolete:
   6753      * Intel i860
   6754      * Ubicom IP2022
   6755      * National Semiconductor NS32K
   6756      * Texas Instruments TMS320C[34]x
   6757 
   6758    Also, those for some individual systems have been obsoleted:
   6759      * SPARC family
   6760           + SPARClite-based systems (sparclite-*-coff, sparclite-*-elf,
   6761             sparc86x-*-elf)
   6762           + OpenBSD 32-bit (sparc-*-openbsd*)
   6763 
   6764 Documentation improvements
   6765 
   6766 Other significant improvements
   6767 
   6768      * Location lists are now generated by default when compiling with
   6769        debug info and optimization. Location lists provide more accurate
   6770        debug info about locations of variables and they allow debugging
   6771        code compiled with -fomit-frame-pointer.
   6772      * The -fvisibility option has been added which allows the default ELF
   6773        visibility of all symbols to be set per compilation and the new
   6774        #pragma GCC visibility preprocessor command allows the setting of
   6775        default ELF visibility for a region of code. Using
   6776        -fvisibility=hidden especially in combination with the new
   6777        -fvisibility-inlines-hidden can yield substantial improvements in
   6778        output binary quality including avoiding PLT indirection overheads,
   6779        reduction of the exported symbol count by up to 60% (with resultant
   6780        improvements to link and load times), better scope for the
   6781        optimizer to improve code and up to a 20% reduction in binary size.
   6782        Using these options correctly yields a binary with a similar symbol
   6783        count to a Windows DLL.
   6784        Perhaps more importantly, this new feature finally allows (with
   6785        careful planning) complete avoidance of symbol clashes when
   6786        manually loading shared objects with RTLD_GLOBAL, thus finally
   6787        solving problems many projects such as python were forced to use
   6788        RTLD_LOCAL for (with its resulting issues for C++ correctness). You
   6789        can find more information about using these options at
   6790        [11]http://gcc.gnu.org/wiki/Visibility.
   6791      __________________________________________________________________
   6792 
   6793 GCC 4.0.1
   6794 
   6795    This is the [12]list of problem reports (PRs) from GCC's bug tracking
   6796    system that are known to be fixed in the 4.0.1 release. This list might
   6797    not be complete (that is, it is possible that some PRs that have been
   6798    fixed are not listed here).
   6799 
   6800 GCC 4.0.2
   6801 
   6802    This is the [13]list of problem reports (PRs) from GCC's bug tracking
   6803    system that are known to be fixed in the 4.0.2 release. This list might
   6804    not be complete (that is, it is possible that some PRs that have been
   6805    fixed are not listed here).
   6806 
   6807    Unfortunately, due to a release engineering failure, this release has a
   6808    regression on Solaris that will affect some C++ programs. We suggest
   6809    that Solaris users apply a [14]patch that corrects the problem. Users
   6810    who do not wish to apply the patch should explicitly link C++ programs
   6811    with the -pthreads option, even if they do not use threads. This
   6812    problem has been corrected in the current 4.0 branch sources and will
   6813    not be present in GCC 4.0.3.
   6814 
   6815 GCC 4.0.3
   6816 
   6817    Starting with this release, the function getcontext is recognized by
   6818    the compiler as having the same semantics as the setjmp function. In
   6819    particular, the compiler will ensure that all registers are dead before
   6820    calling such a function and will emit a warning about the variables
   6821    that may be clobbered after the second return from the function.
   6822 
   6823 GCC 4.0.4
   6824 
   6825    This is the [15]list of problem reports (PRs) from GCC's bug tracking
   6826    system that are known to be fixed in the 4.0.4 release. This list might
   6827    not be complete (that is, it is possible that some PRs that have been
   6828    fixed are not listed here).
   6829 
   6830    The 4.0.4 release is provided for those that require a high degree of
   6831    binary compatibility with previous 4.0.x releases. For most users, the
   6832    GCC team recommends that version 4.1.1 or later be used instead."
   6833 
   6834 
   6835     For questions related to the use of GCC, please consult these web
   6836     pages and the [16]GCC manuals. If that fails, the
   6837     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   6838     web pages and the development of GCC are welcome on our developer
   6839     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
   6840     archives.
   6841 
   6842    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
   6843    distribution of this entire article is permitted in any medium,
   6844    provided this notice is preserved.
   6845 
   6846    These pages are [21]maintained by the GCC team. Last modified
   6847    2012-11-02[22].
   6848 
   6849 References
   6850 
   6851    1. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
   6852    2. http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
   6853    3. http://gcc.gnu.org/projects/tree-ssa/
   6854    4. http://gcc.gnu.org/projects/tree-ssa/vectorization.html
   6855    5. http://gcc.gnu.org/news/sms.html
   6856    6. http://www.akkadia.org/drepper/dsohowto.pdf
   6857    7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility
   6858    8. http://mentorembedded.github.com/cxx-abi/
   6859    9. http://gcc.gnu.org/fortran/
   6860   10. http://gcc.gnu.org/install/
   6861   11. http://gcc.gnu.org/wiki/Visibility
   6862   12. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.1
   6863   13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.2
   6864   14. http://gcc.gnu.org/ml/gcc-cvs/2005-09/msg00984.html
   6865   15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.4
   6866   16. http://gcc.gnu.org/onlinedocs/
   6867   17. mailto:gcc-help (a] gcc.gnu.org
   6868   18. mailto:gcc (a] gcc.gnu.org
   6869   19. http://gcc.gnu.org/lists.html
   6870   20. http://www.fsf.org/
   6871   21. http://gcc.gnu.org/about.html
   6872   22. http://validator.w3.org/check/referer
   6873 ======================================================================
   6874 http://gcc.gnu.org/gcc-3.4/index.html
   6875 
   6876                              GCC 3.4 Release Series
   6877 
   6878    May 26, 2006
   6879 
   6880    The [1]GNU project and the GCC developers are pleased to announce the
   6881    release of GCC 3.4.6.
   6882 
   6883    This release is a bug-fix release, containing fixes for regressions in
   6884    GCC 3.4.4 relative to previous releases of GCC. This is the last of the
   6885    3.4.x series.
   6886 
   6887    The GCC 3.4 release series includes numerous [2]new features,
   6888    improvements, bug fixes, and other changes, thanks to an [3]amazing
   6889    group of volunteers.
   6890 
   6891 Release History
   6892 
   6893    GCC 3.4.6
   6894           March 6, 2006 ([4]changes)
   6895 
   6896    GCC 3.4.5
   6897           November 30, 2005 ([5]changes)
   6898 
   6899    GCC 3.4.4
   6900           May 18, 2005 ([6]changes)
   6901 
   6902    GCC 3.4.3
   6903           November 4, 2004 ([7]changes)
   6904 
   6905    GCC 3.4.2
   6906           September 6, 2004 ([8]changes)
   6907 
   6908    GCC 3.4.1
   6909           July 1, 2004 ([9]changes)
   6910 
   6911    GCC 3.4.0
   6912           April 18, 2004 ([10]changes)
   6913 
   6914 References and Acknowledgements
   6915 
   6916    GCC used to stand for the GNU C Compiler, but since the compiler
   6917    supports several other languages aside from C, it now stands for the
   6918    GNU Compiler Collection.
   6919 
   6920    A list of [11]successful builds is updated as new information becomes
   6921    available.
   6922 
   6923    The GCC developers would like to thank the numerous people that have
   6924    contributed new features, improvements, bug fixes, and other changes as
   6925    well as test results to GCC. This [12]amazing group of volunteers is
   6926    what makes GCC successful.
   6927 
   6928    For additional information about GCC please refer to the [13]GCC
   6929    project web site or contact the [14]GCC development mailing list.
   6930 
   6931    To obtain GCC please use [15]our mirror sites, or [16]our SVN server.
   6932 
   6933 
   6934     For questions related to the use of GCC, please consult these web
   6935     pages and the [17]GCC manuals. If that fails, the
   6936     [18]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   6937     web pages and the development of GCC are welcome on our developer
   6938     list at [19]gcc (a] gcc.gnu.org. All of [20]our lists have public
   6939     archives.
   6940 
   6941    Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
   6942    distribution of this entire article is permitted in any medium,
   6943    provided this notice is preserved.
   6944 
   6945    These pages are [22]maintained by the GCC team. Last modified
   6946    2012-11-02[23].
   6947 
   6948 References
   6949 
   6950    1. http://www.gnu.org/
   6951    2. http://gcc.gnu.org/gcc-3.4/changes.html
   6952    3. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   6953    4. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
   6954    5. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.5
   6955    6. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.4
   6956    7. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.3
   6957    8. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.2
   6958    9. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.1
   6959   10. http://gcc.gnu.org/gcc-3.4/changes.html
   6960   11. http://gcc.gnu.org/gcc-3.4/buildstat.html
   6961   12. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   6962   13. http://gcc.gnu.org/index.html
   6963   14. mailto:gcc (a] gcc.gnu.org
   6964   15. http://gcc.gnu.org/mirrors.html
   6965   16. http://gcc.gnu.org/svn.html
   6966   17. http://gcc.gnu.org/onlinedocs/
   6967   18. mailto:gcc-help (a] gcc.gnu.org
   6968   19. mailto:gcc (a] gcc.gnu.org
   6969   20. http://gcc.gnu.org/lists.html
   6970   21. http://www.fsf.org/
   6971   22. http://gcc.gnu.org/about.html
   6972   23. http://validator.w3.org/check/referer
   6973 ======================================================================
   6974 http://gcc.gnu.org/gcc-3.4/changes.html
   6975 
   6976                              GCC 3.4 Release Series
   6977                         Changes, New Features, and Fixes
   6978 
   6979    The final release in the 3.4 release series is [1]GCC 3.4.6. The series
   6980    is now closed.
   6981 
   6982    GCC 3.4 has [2]many improvements in the C++ frontend. Before reporting
   6983    a bug, please make sure it's really GCC, and not your code, that is
   6984    broken.
   6985 
   6986 Caveats
   6987 
   6988      * GNU Make is now required to build GCC.
   6989      * With -nostdinc the preprocessor used to ignore both standard
   6990        include paths and include paths contained in environment variables.
   6991        It was neither documented nor intended that environment variable
   6992        paths be ignored, so this has been corrected.
   6993      * GCC no longer accepts the options -fvolatile, -fvolatile-global and
   6994        -fvolatile-static. It is unlikely that they worked correctly in any
   6995        3.x release.
   6996      * GCC no longer ships <varargs.h>. Use <stdarg.h> instead.
   6997      * Support for all the systems [3]obsoleted in GCC 3.3 has been
   6998        removed from GCC 3.4. See below for a [4]list of systems which are
   6999        obsoleted in this release.
   7000      * GCC now requires an ISO C90 (ANSI C89) C compiler to build. K&R C
   7001        compilers will not work.
   7002      * The implementation of the [5]MIPS ABIs has changed. As a result,
   7003        the code generated for certain MIPS targets will not be binary
   7004        compatible with earlier releases.
   7005      * In previous releases, the MIPS port had a fake "hilo" register with
   7006        the user-visible name accum. This register has been removed.
   7007      * The implementation of the [6]SPARC ABIs has changed. As a result,
   7008        the code generated will not be binary compatible with earlier
   7009        releases in certain cases.
   7010      * The configure option --enable-threads=pthreads has been removed;
   7011        use --enable-threads=posix instead, which should have the same
   7012        effect.
   7013      * Code size estimates used by inlining heuristics for C, Objective-C,
   7014        C++ and Java have been redesigned significantly. As a result the
   7015        parameters of -finline-insns, --param max-inline-insns-single and
   7016        --param max-inline-insns-auto need to be reconsidered.
   7017      * --param max-inline-slope and --param min-inline-insns have been
   7018        removed; they are not needed for the new bottom-up inlining
   7019        heuristics.
   7020      * The new unit-at-a-time compilation scheme has several compatibility
   7021        issues:
   7022           + The order in which functions, variables, and top-level asm
   7023             statements are emitted may have changed. Code relying on some
   7024             particular ordering needs to be updated. The majority of such
   7025             top-level asm statements can be replaced by section
   7026             attributes.
   7027           + Unreferenced static variables and functions are removed. This
   7028             may result in undefined references when an asm statement
   7029             refers to the variable/function directly. In that case either
   7030             the variable/function shall be listed in asm statement operand
   7031             or in the case of top-level asm statements the attribute used
   7032             shall be used to force function/variable to be always output
   7033             and considered as a possibly used by unknown code.
   7034             For variables the attribute is accepted only by GCC 3.4 and
   7035             newer, while for earlier versions it is sufficient to use
   7036             unused to silence warnings about the variables not being
   7037             referenced. To keep code portable across different GCC
   7038             versions, you can use appropriate preprocessor conditionals.
   7039           + Static functions now can use non-standard passing conventions
   7040             that may break asm statements calling functions directly.
   7041             Again the attribute used shall be used to prevent this
   7042             behavior.
   7043        As a temporary workaround, -fno-unit-at-a-time can be used, but
   7044        this scheme may not be supported by future releases of GCC.
   7045      * GCC 3.4 automatically places zero-initialized variables in the .bss
   7046        section on some operating systems. Versions of GNU Emacs up to (and
   7047        including) 21.3 will not work correctly when using this
   7048        optimization; you can use -fno-zero-initialized-in-bss to disable
   7049        it.
   7050      * If GCC 3.4 is configured with --enable-threads=posix (the default
   7051        on most targets that support pthreads) then _REENTRANT will be
   7052        defined unconditionally by some libstdc++ headers. C++ code which
   7053        relies on that macro to detect whether multi-threaded code is being
   7054        compiled might change in meaning, possibly resulting in linker
   7055        errors for single-threaded programs. Affected users of [7]Boost
   7056        should compile single-threaded code with -DBOOST_DISABLE_THREADS.
   7057        See Bugzilla for [8]more information.
   7058 
   7059 General Optimizer Improvements
   7060 
   7061      * Usability of the profile feedback and coverage testing has been
   7062        improved.
   7063           + Performance of profiled programs has been improved by faster
   7064             profile merging code.
   7065           + Better use of the profile feedback for optimization (loop
   7066             unrolling and loop peeling).
   7067           + File locking support allowing fork() calls and parallel runs
   7068             of profiled programs.
   7069           + Coverage file format has been redesigned.
   7070           + gcov coverage tool has been improved.
   7071           + make profiledbootstrap available to build a faster compiler.
   7072             Experiments made on i386 hardware showed an 11% speedup on -O0
   7073             and a 7.5% speedup on -O2 compilation of a [9]large C++
   7074             testcase.
   7075           + New value profiling pass enabled via -fprofile-values
   7076           + New value profile transformations pass enabled via -fvpt aims
   7077             to optimize some code sequences by exploiting knowledge about
   7078             value ranges or other properties of the operands. At the
   7079             moment a conversion of expensive divisions into cheaper
   7080             operations has been implemented.
   7081           + New -fprofile-generate and -fprofile-use command-line options
   7082             to simplify the use of profile feedback.
   7083      * A new unit-at-a-time compilation scheme for C, Objective-C, C++ and
   7084        Java which is enabled via -funit-at-a-time (and implied by -O2). In
   7085        this scheme a whole file is parsed first and optimized later. The
   7086        following basic inter-procedural optimizations are implemented:
   7087           + Removal of unreachable functions and variables
   7088           + Discovery of local functions (functions with static linkage
   7089             whose address is never taken)
   7090           + On i386, these local functions use register parameter passing
   7091             conventions.
   7092           + Reordering of functions in topological order of the call graph
   7093             to enable better propagation of optimizing hints (such as the
   7094             stack alignments needed by functions) in the back end.
   7095           + Call graph based out-of-order inlining heuristics which allows
   7096             to limit overall compilation unit growth (--param
   7097             inline-unit-growth).
   7098        Overall, the unit-at-a-time scheme produces a 1.3% improvement for
   7099        the SPECint2000 benchmark on the i386 architecture (AMD Athlon
   7100        CPU).
   7101      * More realistic code size estimates used by inlining for C,
   7102        Objective-C, C++ and Java. The growth of large functions can now be
   7103        limited via --param large-function-insns and --param
   7104        large-function-growth.
   7105      * A new cfg-level loop optimizer pass replaces the old loop unrolling
   7106        pass and adds two other loop transformations -- loop peeling and
   7107        loop unswitching -- and also uses the profile feedback to limit
   7108        code growth. (The three optimizations are enabled by
   7109        -funroll-loops, -fpeel-loops and -funswitch-loops flags,
   7110        respectively).
   7111        The old loop unroller still can be enabled by -fold-unroll-loops
   7112        and may produce better code in some cases, especially when the
   7113        webizer optimization pass is not run.
   7114      * A new web construction pass enabled via -fweb (and implied by -O3)
   7115        improves the quality of register allocation, CSE, first scheduling
   7116        pass and some other optimization passes by avoiding re-use of
   7117        pseudo registers with non-overlapping live ranges. The pass almost
   7118        always improves code quality but does make debugging difficult and
   7119        thus is not enabled by default by -O2
   7120        The pass is especially effective as cleanup after code duplication
   7121        passes, such as the loop unroller or the tracer.
   7122      * Experimental implementations of superblock or trace scheduling in
   7123        the second scheduling pass can be enabled via
   7124        -fsched2-use-superblocks and -fsched2-use-traces, respectively.
   7125 
   7126 New Languages and Language specific improvements
   7127 
   7128   Ada
   7129 
   7130      * The Ada front end has been updated to include numerous bug fixes
   7131        and enhancements. These include:
   7132           + Improved project file support
   7133           + Additional set of warnings about potential wrong code
   7134           + Improved error messages
   7135           + Improved code generation
   7136           + Improved cross reference information
   7137           + Improved inlining
   7138           + Better run-time check elimination
   7139           + Better error recovery
   7140           + More efficient implementation of unbounded strings
   7141           + Added features in GNAT.Sockets, GNAT.OS_Lib, GNAT.Debug_Pools,
   7142             ...
   7143           + New GNAT.xxxx packages (e.g. GNAT.Strings,
   7144             GNAT.Exception_Action)
   7145           + New pragmas
   7146           + New -gnatS switch replacing gnatpsta
   7147           + Implementation of new Ada features (in particular limited
   7148             with, limited aggregates)
   7149 
   7150   C/Objective-C/C++
   7151 
   7152      * Precompiled headers are now supported. Precompiled headers can
   7153        dramatically speed up compilation of some projects. There are some
   7154        known defects in the current precompiled header implementation that
   7155        will result in compiler crashes in relatively rare situations.
   7156        Therefore, precompiled headers should be considered a "technology
   7157        preview" in this release. Read the manual for details about how to
   7158        use precompiled headers.
   7159      * File handling in the preprocessor has been rewritten. GCC no longer
   7160        gets confused by symlinks and hardlinks, and now has a correct
   7161        implementation of #import and #pragma once. These two directives
   7162        have therefore been un-deprecated.
   7163      * The undocumented extension that allowed C programs to have a label
   7164        at the end of a compound statement, which has been deprecated since
   7165        GCC 3.0, has been removed.
   7166      * The cast-as-lvalue extension has been removed for C++ and
   7167        deprecated for C and Objective-C. In particular, code like this:
   7168         int i;
   7169         (char) i = 5;
   7170 
   7171        or this:
   7172         char *p;
   7173         ((int *) p)++;
   7174 
   7175        is no longer accepted for C++ and will not be accepted for C and
   7176        Objective-C in a future version.
   7177      * The conditional-expression-as-lvalue extension has been deprecated
   7178        for C and Objective-C. In particular, code like this:
   7179         int a, b, c;
   7180         (a ? b : c) = 2;
   7181 
   7182        will not be accepted for C and Objective-C in a future version.
   7183      * The compound-expression-as-lvalue extension has been deprecated for
   7184        C and Objective-C. In particular, code like this:
   7185         int a, b;
   7186         (a, b) = 2;
   7187 
   7188        will not be accepted for C and Objective-C in a future version. A
   7189        possible non-intrusive workaround is the following:
   7190         (*(a, &b)) = 2;
   7191 
   7192      * Several [10]built-in functions such as __builtin_popcount for
   7193        counting bits, finding the highest and lowest bit in a word, and
   7194        parity have been added.
   7195      * The -fwritable-strings option has been deprecated and will be
   7196        removed.
   7197      * Many C math library functions are now recognized as built-ins and
   7198        optimized.
   7199      * The C, C++, and Objective-C compilers can now handle source files
   7200        written in any character encoding supported by the host C library.
   7201        The default input character set is taken from the current locale,
   7202        and may be overridden with the -finput-charset command line option.
   7203        In the future we will add support for inline encoding markers.
   7204 
   7205   C++
   7206 
   7207      * G++ is now much closer to full conformance to the ISO/ANSI C++
   7208        standard. This means, among other things, that a lot of invalid
   7209        constructs which used to be accepted in previous versions will now
   7210        be rejected. It is very likely that existing C++ code will need to
   7211        be fixed. This document lists some of the most common issues.
   7212      * A hand-written recursive-descent C++ parser has replaced the
   7213        YACC-derived C++ parser from previous GCC releases. The new parser
   7214        contains much improved infrastructure needed for better parsing of
   7215        C++ source codes, handling of extensions, and clean separation
   7216        (where possible) between proper semantics analysis and parsing. The
   7217        new parser fixes many bugs that were found in the old parser.
   7218      * You must now use the typename and template keywords to disambiguate
   7219        dependent names, as required by the C++ standard.
   7220         struct K {
   7221           typedef int mytype_t;
   7222         };
   7223 
   7224         template <class T1> struct A {
   7225           template <class T2> struct B {
   7226               void callme(void);
   7227             };
   7228 
   7229           template <int N> void bar(void)
   7230           {
   7231             // Use 'typename' to tell the parser that T1::mytype_t names
   7232             //  a type. This is needed because the name is dependent (in
   7233             //  this case, on template parameter T1).
   7234             typename T1::mytype_t x;
   7235             x = 0;
   7236           }
   7237         };
   7238 
   7239         template <class T> void template_func(void)
   7240         {
   7241           // Use 'template' to prefix member templates within
   7242           //  dependent types (a has type A<T>, which depends on
   7243           //  the template parameter T).
   7244           A<T> a;
   7245           a.template bar<0>();
   7246 
   7247           // Use 'template' to tell the parser that B is a nested
   7248           //  template class (dependent on template parameter T), and
   7249           //  'typename' because the whole A<T>::B<int> is
   7250           //  the name of a type (again, dependent).
   7251           typename A<T>::template B<int> b;
   7252           b.callme();
   7253         }
   7254 
   7255         void non_template_func(void)
   7256         {
   7257           // Outside of any template class or function, no names can be
   7258           //  dependent, so the use of the keyword 'typename' and 'template'
   7259           //  is not needed (and actually forbidden).
   7260           A<K> a;
   7261           a.bar<0>();
   7262           A<K>::B<float> b;
   7263           b.callme();
   7264         }
   7265      * In a template definition, unqualified names will no longer find
   7266        members of a dependent base (as specified by [temp.dep]/3 in the
   7267        C++ standard). For example,
   7268         template <typename T> struct B {
   7269           int m;
   7270           int n;
   7271           int f ();
   7272           int g ();
   7273         };
   7274         int n;
   7275         int g ();
   7276         template <typename T> struct C : B<T> {
   7277           void h ()
   7278           {
   7279             m = 0; // error
   7280             f ();  // error
   7281             n = 0; // ::n is modified
   7282             g ();  // ::g is called
   7283           }
   7284         };
   7285        You must make the names dependent, e.g. by prefixing them with
   7286        this->. Here is the corrected definition of C<T>::h,
   7287         template <typename T> void C<T>::h ()
   7288         {
   7289           this->m = 0;
   7290           this->f ();
   7291           this->n = 0
   7292           this->g ();
   7293         }
   7294        As an alternative solution (unfortunately not backwards compatible
   7295        with GCC 3.3), you may use using declarations instead of this->:
   7296         template <typename T> struct C : B<T> {
   7297           using B<T>::m;
   7298           using B<T>::f;
   7299           using B<T>::n;
   7300           using B<T>::g;
   7301           void h ()
   7302           {
   7303             m = 0;
   7304             f ();
   7305             n = 0;
   7306             g ();
   7307           }
   7308         };
   7309      * In templates, all non-dependent names are now looked up and bound
   7310        at definition time (while parsing the code), instead of later when
   7311        the template is instantiated. For instance:
   7312         void foo(int);
   7313 
   7314         template <int> struct A {
   7315           static void bar(void){
   7316             foo('a');
   7317           }
   7318         };
   7319 
   7320         void foo(char);
   7321 
   7322         int main()
   7323         {
   7324           A<0>::bar();    // Calls foo(int), used to call foo(char).
   7325         }
   7326 
   7327      * In an explicit instantiation of a class template, you must use
   7328        class or struct before the template-id:
   7329         template <int N>
   7330         class A {};
   7331 
   7332         template A<0>;         // error, not accepted anymore
   7333         template class A<0>;   // OK
   7334      * The "named return value" and "implicit typename" extensions have
   7335        been removed.
   7336      * Default arguments in function types have been deprecated and will
   7337        be removed.
   7338      * ARM-style name-injection of friend declarations has been deprecated
   7339        and will be removed. For example: struct S { friend void f(); };
   7340        void g() { f(); } will not be accepted by future versions of G++;
   7341        instead a declaration of "f" will need to be present outside of the
   7342        scope of "S".
   7343      * Covariant returns are implemented for all but varadic functions
   7344        that require an adjustment.
   7345      * When -pedantic is used, G++ now issues errors about spurious
   7346        semicolons. For example,
   7347         namespace N {}; // Invalid semicolon.
   7348         void f() {}; // Invalid semicolon.
   7349      * G++ no longer accepts attributes for a declarator after the
   7350        initializer associated with that declarator. For example,
   7351         X x(1) __attribute__((...));
   7352        is no longer accepted. Instead, use:
   7353         X x __attribute__((...)) (1);
   7354      * Inside the scope of a template class, the name of the class itself
   7355        can be treated as either a class or a template. So GCC used to
   7356        accept the class name as argument of type template, and template
   7357        template parameter. However this is not C++ standard compliant. Now
   7358        the name is not treated as a valid template template argument
   7359        unless you qualify the name by its scope. For example, the code
   7360        below no longer compiles.
   7361         template <template <class> class TT> class X {};
   7362         template <class T> class Y {
   7363           X<Y> x; // Invalid, Y is always a type template parameter.
   7364         };
   7365        The valid code for the above example is
   7366           X< ::Y> x; // Valid.
   7367        (Notice the space between < and : to prevent GCC to interpret this
   7368        as a digraph for [.)
   7369      * Friend declarations that refer to template specializations are
   7370        rejected if the template has not already been declared. For
   7371        example,
   7372         template <typename T>
   7373         class C {
   7374           friend void f<> (C&);
   7375         };
   7376        is rejected. You must first declare f as a template,
   7377         template <typename T>
   7378         void f(T);
   7379      * In case of friend declarations, every name used in the friend
   7380        declaration must be accessible at the point of that declaration.
   7381        Previous versions of G++ used to be less strict about this and
   7382        allowed friend declarations for private class members, for example.
   7383        See the ISO C++ Standard Committee's [11]defect report #209 for
   7384        details.
   7385      * Declaration of member functions of class templates as friends are
   7386        supported. For example,
   7387         template <typename T> struct A {
   7388           void f();
   7389         };
   7390         class C {
   7391           template <typename T> friend void A<T>::f();
   7392         };
   7393      * You must use template <> to introduce template specializations, as
   7394        required by the standard. For example,
   7395         template <typename T>
   7396         struct S;
   7397 
   7398         struct S<int> { };
   7399        is rejected. You must write,
   7400         template <> struct S<int> {};
   7401      * G++ used to accept code like this,
   7402         struct S {
   7403           int h();
   7404           void f(int i = g());
   7405           int g(int i = h());
   7406         };
   7407        This behavior is not mandated by the standard. Now G++ issues an
   7408        error about this code. To avoid the error, you must move the
   7409        declaration of g before the declaration of f. The default arguments
   7410        for g must be visible at the point where it is called.
   7411      * The C++ ABI Section 3.3.3 specifications for the array construction
   7412        routines __cxa_vec_new2 and __cxa_vec_new3 were changed to return
   7413        NULL when the allocator argument returns NULL. These changes are
   7414        incorporated into the libstdc++ runtime library.
   7415      * Using a name introduced by a typedef in a friend declaration or in
   7416        an explicit instantiation is now rejected, as specified by the ISO
   7417        C++ standard.
   7418         class A;
   7419         typedef A B;
   7420         class C {
   7421           friend class B;      // error, no typedef name here
   7422           friend B;            // error, friend always needs class/struct/enum
   7423           friend class A;      // OK
   7424         };
   7425 
   7426         template <int> class Q {};
   7427         typedef Q<0> R;
   7428         template class R;      // error, no typedef name here
   7429         template class Q<0>;   // OK
   7430      * When allocating an array with a new expression, GCC used to allow
   7431        parentheses around the type name. This is actually ill-formed and
   7432        it is now rejected:
   7433         int* a = new (int)[10];    // error, not accepted anymore
   7434         int* a = new int[10];      // OK
   7435      * When binding an rvalue of class type to a reference, the copy
   7436        constructor of the class must be accessible. For instance, consider
   7437        the following code:
   7438         class A
   7439         {
   7440         public:
   7441           A();
   7442 
   7443         private:
   7444           A(const A&);   // private copy ctor
   7445         };
   7446 
   7447         A makeA(void);
   7448         void foo(const A&);
   7449 
   7450         void bar(void)
   7451         {
   7452           foo(A());       // error, copy ctor is not accessible
   7453           foo(makeA());   // error, copy ctor is not accessible
   7454 
   7455           A a1;
   7456           foo(a1);        // OK, a1 is a lvalue
   7457         }
   7458        This might be surprising at first sight, especially since most
   7459        popular compilers do not correctly implement this rule ([12]further
   7460        details).
   7461      * When forming a pointer to member or a pointer to member function,
   7462        access checks for class visibility (public, protected, private) are
   7463        now performed using the qualifying scope of the name itself. This
   7464        is better explained with an example:
   7465         class A
   7466         {
   7467         public:
   7468           void pub_func();
   7469         protected:
   7470           void prot_func();
   7471         private:
   7472           void priv_func();
   7473         };
   7474 
   7475         class B : public A
   7476         {
   7477         public:
   7478           void foo()
   7479           {
   7480             &A::pub_func;   // OK, pub_func is accessible through A
   7481             &A::prot_func;  // error, cannot access prot_func through A
   7482             &A::priv_func;  // error, cannot access priv_func through A
   7483 
   7484             &B::pub_func;   // OK, pub_func is accessible through B
   7485             &B::prot_func;  // OK, can access prot_func through B (within B)
   7486             &B::priv_func;  // error, cannot access priv_func through B
   7487           }
   7488         };
   7489 
   7490     Runtime Library (libstdc++)
   7491 
   7492      * Optimization work:
   7493           + Streamlined streambuf, filebuf, separate synched with C
   7494             Standard I/O streambuf.
   7495           + All formatted I/O now uses cached locale information.
   7496           + STL optimizations (memory/speed for list, red-black trees as
   7497             used by sets and maps).
   7498           + More use of GCC builtins.
   7499           + String optimizations (avoid contention on
   7500             increment/decrement-and-test of the reference count in the
   7501             empty-string object, constructor from input_iterators
   7502             speedup).
   7503      * Static linkage size reductions.
   7504      * Large File Support (files larger than 2 GB on 32-bit systems).
   7505      * Wide character and variable encoding filebuf work (UTF-8, Unicode).
   7506      * Generic character traits.
   7507      * Also support wchar_t specializations on Mac OS 10.3.x, FreeBSD 5.x,
   7508        Solaris 2.7 and above, AIX 5.x, Irix 6.5.
   7509      * The allocator class is now standard-conformant, and two additional
   7510        extension allocators have been added, mt_alloc and
   7511        bitmap_allocator.
   7512      * PCH support: -include bits/stdc++.h (2x compile speedup).
   7513      * Rewrote __cxa_demangle with support for C++ style allocators.
   7514      * New debug modes for STL containers and iterators.
   7515      * Testsuite rewrite: five times as many tests, plus increasingly
   7516        sophisticated tests, including I/O, MT, multi-locale, wide and
   7517        narrow characters.
   7518      * Use current versions of GNU "autotools" for build/configuration.
   7519 
   7520   Objective-C
   7521 
   7522      * The Objective-C front end has been updated to include the numerous
   7523        bug fixes and enhancements previously available only in Apple's
   7524        version of GCC. These include:
   7525           + Structured exception (@try... @catch... @finally, @throw) and
   7526             synchronization (@synchronized) support. These are accessible
   7527             via the -fobjc-exceptions switch; as of this writing, they may
   7528             only be used in conjunction with -fnext-runtime on Mac OS X
   7529             10.3 and later. See [13]Options Controlling Objective-C
   7530             Dialect for more information.
   7531           + An overhaul of @encode logic. The C99 _Bool and C++ bool type
   7532             may now be encoded as 'B'. In addition, the back-end/codegen
   7533             dependencies have been removed.
   7534           + An overhaul of message dispatch construction, ensuring that
   7535             the various receiver types (and casts thereof) are handled
   7536             properly, and that correct diagnostics are issued.
   7537           + Support for "Zero-Link" (-fzero-link) and "Fix-and-Continue"
   7538             (-freplace-objc-classes) debugging modes, currently available
   7539             on Mac OS X 10.3 and later. See [14]Options Controlling
   7540             Objective-C Dialect for more information.
   7541           + Access to optimized runtime entry points (-fno-nil-receivers )
   7542             on the assumption that message receivers are never nil. This
   7543             is currently available on Mac OS X 10.3 and later. See
   7544             [15]Options Controlling Objective-C Dialect for more
   7545             information.
   7546 
   7547   Java
   7548 
   7549      * Compiling a .jar file will now cause non-.class entries to be
   7550        automatically compiled as resources.
   7551      * libgcj has been ported to Darwin.
   7552      * Jeff Sturm has adapted Jan Hubicka's call graph optimization code
   7553        to gcj.
   7554      * libgcj has a new gcjlib URL type; this lets URLClassLoader load
   7555        code from shared libraries.
   7556      * libgcj has been much more completely merged with [16]GNU Classpath.
   7557      * Class loading is now much more correct; in particular the caller's
   7558        class loader is now used when that is required.
   7559      * [17]Eclipse 2.x will run out of the box using gij.
   7560      * Parts of java.nio have been implemented. Direct and indirect
   7561        buffers work, as do fundamental file and socket operations.
   7562      * java.awt has been improved, though it is still not ready for
   7563        general use.
   7564      * The HTTP protocol handler now uses HTTP/1.1 and can handle the POST
   7565        method.
   7566      * The MinGW port has matured. Enhancements include socket timeout
   7567        support, thread interruption, improved Runtime.exec() handling and
   7568        support for accented characters in filenames.
   7569 
   7570   Fortran
   7571 
   7572      * Fortran improvements are listed in the [18]Fortran documentation.
   7573 
   7574 New Targets and Target Specific Improvements
   7575 
   7576   Alpha
   7577 
   7578      * Several [19]built-in functions have been added such as
   7579        __builtin_alpha_zap to allow utilizing the more obscure
   7580        instructions of the CPU.
   7581      * Parameter passing of complex arguments has changed to match the
   7582        [20]ABI. This change is incompatible with previous GCC versions,
   7583        but does fix compatibility with the Tru64 compiler and several
   7584        corner cases where GCC was incompatible with itself.
   7585 
   7586   ARM
   7587 
   7588      * Nicolas Pitre has contributed his hand-coded floating-point support
   7589        code for ARM. It is both significantly smaller and faster than the
   7590        existing C-based implementation, even when building applications
   7591        for Thumb. The arm-elf configuration has been converted to use the
   7592        new code.
   7593      * Support for the Intel's iWMMXt architecture, a second generation
   7594        XScale processor, has been added. Enabled at run time with the
   7595        -mcpu=iwmmxt command line switch.
   7596      * A new ARM target has been added: arm-wince-pe. This is similar to
   7597        the arm-pe target, but it defaults to using the APCS32 ABI.
   7598      * The existing ARM pipeline description has been converted to the use
   7599        the [21]DFA processor pipeline model. There is not much change in
   7600        code performance, but the description is now [22]easier to
   7601        understand.
   7602      * Support for the Cirrus EP9312 Maverick floating point co-processor
   7603        added. Enabled at run time with the -mcpu=ep9312 command line
   7604        switch. Note however that the multilibs to support this chip are
   7605        currently disabled in gcc/config/arm/t-arm-elf, so if you want to
   7606        enable their production you will have to uncomment the entries in
   7607        that file.
   7608 
   7609   H8/300
   7610 
   7611      * Support for long long has been added.
   7612      * Support for saveall attribute has been added.
   7613      * Pavel Pisa contributed hand-written 32-bit-by-32-bit division code
   7614        for H8/300H and H8S, which is much faster than the previous
   7615        implementation.
   7616      * A lot of small performance improvements.
   7617 
   7618   IA-32/AMD64 (x86-64)
   7619 
   7620      * Tuning for K8 (AMD Opteron/Athlon64) core is available via
   7621        -march=k8 and -mcpu=k8.
   7622      * Scalar SSE code generation carefully avoids reformatting penalties,
   7623        hidden dependencies and minimizes the number of uops generated on
   7624        both Intel and AMD CPUs.
   7625      * Vector MMX and SSE operands are now passed in registers to improve
   7626        performance and match the argument passing convention used by the
   7627        Intel C++ Compiler. As a result it is not possible to call
   7628        functions accepting vector arguments compiled by older GCC version.
   7629      * Conditional jump elimination is now more aggressive on modern CPUs.
   7630      * The Athlon ports has been converted to use the DFA processor
   7631        pipeline description.
   7632      * Optimization of indirect tail calls is now possible in a similar
   7633        fashion as direct sibcall optimization.
   7634      * Further small performance improvements.
   7635      * -m128bit-long-double is now less buggy.
   7636      * __float128 support in 64-bit compilation.
   7637      * Support for data structures exceeding 2GB in 64-bit mode.
   7638      * -mcpu has been renamed to -mtune.
   7639 
   7640   IA-64
   7641 
   7642      * Tuning code for the Itanium 2 processor has been added. The
   7643        generation of code tuned for Itanium 2 (option -mtune=itanium2) is
   7644        enabled by default now. To generate code tuned for Itanium 1 the
   7645        option -mtune=itanium1 should be used.
   7646      * [23]DFA processor pipeline descriptions for the IA-64 processors
   7647        have been added. This resulted in about 3% improvement on the
   7648        SPECInt2000 benchmark for Itanium 2.
   7649      * Instruction bundling for the IA-64 processors has been rewritten
   7650        using the DFA pipeline hazard recognizer. It resulted in about 60%
   7651        compiler speedup on the SPECInt2000 C programs.
   7652 
   7653   M32R
   7654 
   7655      * Support for the M32R/2 processor has been added by Renesas.
   7656      * Support for an M32R GNU/Linux target and PIC code generation has
   7657        been added by Renesas.
   7658 
   7659   M68000
   7660 
   7661      * Bernardo Innocenti (Develer S.r.l.) has contributed the
   7662        m68k-uclinux target, based on former work done by Paul Dale
   7663        (SnapGear Inc.). Code generation for the ColdFire processors family
   7664        has been enhanced and extended to support the MCF 53xx and MCF 54xx
   7665        cores, integrating former work done by Peter Barada (Motorola).
   7666 
   7667   MIPS
   7668 
   7669     Processor-specific changes
   7670 
   7671      * Support for the RM7000 and RM9000 processors has been added. It can
   7672        be selected using the -march compiler option and should work with
   7673        any MIPS I (mips-*) or MIPS III (mips64-*) configuration.
   7674      * Support for revision 2 of the MIPS32 ISA has been added. It can be
   7675        selected with the command-line option -march=mips32r2.
   7676      * There is a new option, -mfix-sb1, to work around certain SB-1
   7677        errata.
   7678 
   7679     Configuration
   7680 
   7681      * It is possible to customize GCC using the following configure-time
   7682        options:
   7683           + --with-arch, which specifies the default value of the -march
   7684             option.
   7685           + --with-tune, which specifies the default value of the -mtune
   7686             option.
   7687           + --with-abi, which specifies the default ABI.
   7688           + --with-float=soft, which tells GCC to use software floating
   7689             point by default.
   7690           + --with-float=hard, which tells GCC to use hardware floating
   7691             point by default.
   7692      * A 64-bit GNU/Linux port has been added. The associated
   7693        configurations are mips64-linux-gnu and mips64el-linux-gnu.
   7694      * The 32-bit GNU/Linux port now supports Java.
   7695      * The IRIX 6 configuration now supports the o32 ABI and will build
   7696        o32 multilibs by default. This support is compatible with both
   7697        binutils and the SGI tools, but note that several features,
   7698        including debugging information and DWARF2 exception handling, are
   7699        only available when using the GNU assembler. Use of the GNU
   7700        assembler and linker (version 2.15 or above) is strongly
   7701        recommended.
   7702      * The IRIX 6 configuration now supports 128-bit long doubles.
   7703      * There are two new RTEMS-specific configurations, mips-rtems and
   7704        mipsel-rtems.
   7705      * There are two new *-elf configurations, mipsisa32r2-elf and
   7706        mipsisa32r2el-elf.
   7707 
   7708     General
   7709 
   7710      * Several [24]ABI bugs have been fixed. Unfortunately, these changes
   7711        will break binary compatibility with earlier releases.
   7712      * GCC can now use explicit relocation operators when generating
   7713        -mabicalls code. This behavior is controlled by -mexplicit-relocs
   7714        and can have several performance benefits. For example:
   7715           + It allows for more optimization of GOT accesses, including
   7716             better scheduling and redundancy elimination.
   7717           + It allows sibling calls to be implemented as jumps.
   7718           + n32 and n64 leaf functions can use a call-clobbered global
   7719             pointer instead of $28.
   7720           + The code to set up $gp can be removed from functions that
   7721             don't need it.
   7722      * A new option, -mxgot, allows the GOT to be bigger than 64k. This
   7723        option is equivalent to the assembler's -xgot option and should be
   7724        used instead of -Wa,-xgot.
   7725      * Frame pointer elimination is now supported when generating 64-bit
   7726        MIPS16 code.
   7727      * Inline block moves have been optimized to take more account of
   7728        alignment information.
   7729      * Many internal changes have been made to the MIPS port, mostly aimed
   7730        at reducing the reliance on assembler macros.
   7731 
   7732   PowerPC
   7733 
   7734      * GCC 3.4 releases have a number of fixes for PowerPC and PowerPC64
   7735        [25]ABI incompatibilities regarding the way parameters are passed
   7736        during functions calls. These changes may result in incompatibility
   7737        between code compiled with GCC 3.3 and GCC 3.4.
   7738 
   7739     PowerPC Darwin
   7740 
   7741      * Support for shared/dylib gcc libraries has been added. It is
   7742        enabled by default on powerpc-apple-darwin7.0.0 and up.
   7743      * Libgcj is enabled by default. On systems older than
   7744        powerpc-apple-darwin7.0.0 you need to install dlcompat.
   7745      * 128-bit IBM extended precision format support added for long
   7746        double.
   7747 
   7748     PowerPC64 GNU/Linux
   7749 
   7750      * By default, PowerPC64 GNU/Linux now uses natural alignment of
   7751        structure elements. The old four byte alignment for double, with
   7752        special rules for a struct starting with a double, can be chosen
   7753        with -malign-power. This change may result in incompatibility
   7754        between code compiled with GCC 3.3 and GCC 3.4.
   7755      * -mabi=altivec is now the default rather than -mabi=no-altivec.
   7756      * 128-bit IBM extended precision format support added for long
   7757        double.
   7758 
   7759   S/390 and zSeries
   7760 
   7761      * New command-line options allow to specify the intended execution
   7762        environment for generated code:
   7763           + -mesa/-mzarch allows to specify whether to generate code
   7764             running in ESA/390 mode or in z/Architecture mode (this is
   7765             applicable to 31-bit code only).
   7766           + -march allows to specify a minimum processor architecture
   7767             level (g5, g6, z900, or z990).
   7768           + -mtune allows to specify which processor to tune for.
   7769      * It is possible to customize GCC using the following configure-time
   7770        options:
   7771           + --with-mode, which specifies whether to default to assuming
   7772             ESA/390 or z/Architecture mode.
   7773           + --with-arch, which specifies the default value of the -march
   7774             option.
   7775           + --with-tune, which specifies the default value of the -mtune
   7776             option.
   7777      * Support for the z990 processor has been added, and can be selected
   7778        using -march=z990 or -mtune=z990. This includes instruction
   7779        scheduling tuned for the superscalar instruction pipeline of the
   7780        z990 processor as well as support for all new instructions provided
   7781        by the long-displacement facility.
   7782      * Support to generate 31-bit code optimized for zSeries processors
   7783        (running in ESA/390 or in z/Architecture mode) has been added. This
   7784        can be selected using -march=z900 and -mzarch respectively.
   7785      * Instruction scheduling for the z900 and z990 processors now uses
   7786        the DFA pipeline hazard recognizer.
   7787      * GCC no longer generates code to maintain a stack backchain,
   7788        previously used to generate stack backtraces for debugging
   7789        purposes. As replacement that does not incur runtime overhead,
   7790        DWARF-2 call frame information is provided by GCC; this is
   7791        supported by GDB 6.1. The old behavior can be restored using the
   7792        -mbackchain option.
   7793      * The stack frame size of functions may now exceed 2 GB in 64-bit
   7794        code.
   7795      * A port for the 64-bit IBM TPF operating system has been added; the
   7796        configuration is s390x-ibm-tpf. This configuration is supported as
   7797        cross-compilation target only.
   7798      * Various changes to improve the generated code have been
   7799        implemented, including:
   7800           + GCC now uses the MULTIPLY AND ADD and MULTIPLY AND SUBTRACT
   7801             instructions to significantly speed up many floating-point
   7802             applications.
   7803           + GCC now uses the ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL
   7804             WITH BORROW instructions to speed up long long arithmetic.
   7805           + GCC now uses the SEARCH STRING instruction to implement
   7806             strlen().
   7807           + In many cases, function call overhead for 31-bit code has been
   7808             reduced by placing the literal pool after the function code
   7809             instead of after the function prolog.
   7810           + Register 14 is no longer reserved in 64-bit code.
   7811           + Handling of global register variables has been improved.
   7812 
   7813   SPARC
   7814 
   7815      * The option -mflat is deprecated.
   7816      * Support for large (> 2GB) frames has been added to the 64-bit port.
   7817      * Several [26]ABI bugs have been fixed. Unfortunately, these changes
   7818        will break binary compatibility with earlier releases.
   7819      * The default debugging format has been switched from STABS to
   7820        DWARF-2 for 32-bit code on Solaris 7 and later. DWARF-2 is already
   7821        the default debugging format for 64-bit code on Solaris.
   7822 
   7823   SuperH
   7824 
   7825      * Support for the SH2E processor has been added. Enabled at run time
   7826        with the -m2e command line switch, or at configure time by
   7827        specifying sh2e as the machine part of the target triple.
   7828 
   7829   V850
   7830 
   7831      * Support for the Mitsubishi V850E1 processor has been added. This is
   7832        a variant of the V850E processor with some additional debugging
   7833        instructions.
   7834 
   7835   Xtensa
   7836 
   7837      * Several ABI bugs have been fixed. Unfortunately, these changes
   7838        break binary compatibility with earlier releases.
   7839           + For big-endian processors, the padding of aggregate return
   7840             values larger than a word has changed. If the size of an
   7841             aggregate return value is not a multiple of 32 bits, previous
   7842             versions of GCC inserted padding in the most-significant bytes
   7843             of the first return value register. Aggregates larger than a
   7844             word are now padded in the least-significant bytes of the last
   7845             return value register used. Aggregates smaller than a word are
   7846             still padded in the most-significant bytes. The return value
   7847             padding has not changed for little-endian processors.
   7848           + Function arguments with 16-byte alignment are now properly
   7849             aligned.
   7850           + The implementation of the va_list type has changed. A va_list
   7851             value created by va_start from a previous release cannot be
   7852             used with va_arg from this release, or vice versa.
   7853      * More processor configuration options for Xtensa processors are
   7854        supported:
   7855           + the ABS instruction is now optional;
   7856           + the ADDX* and SUBX* instructions are now optional;
   7857           + an experimental CONST16 instruction can be used to synthesize
   7858             constants instead of loading them from constant pools.
   7859        These and other Xtensa processor configuration options can no
   7860        longer be enabled or disabled by command-line options; the
   7861        processor configuration must be specified by the xtensa-config.h
   7862        header file when building GCC. Additionally, the
   7863        -mno-serialize-volatile option is no longer supported.
   7864 
   7865 Obsolete Systems
   7866 
   7867    Support for a number of older systems has been declared obsolete in GCC
   7868    3.4. Unless there is activity to revive them, the next release of GCC
   7869    will have their sources permanently removed.
   7870 
   7871    All configurations of the following processor architectures have been
   7872    declared obsolete:
   7873      * Mitsubishi D30V, d30v-*
   7874      * AT&T DSP1600 and DSP1610, dsp16xx-*
   7875      * Intel 80960, i960
   7876 
   7877    Also, some individual systems have been obsoleted:
   7878      * ARM Family
   7879           + Support for generating code for operation in APCS/26 mode
   7880             (-mapcs-26).
   7881      * IBM ESA/390
   7882           + "Bigfoot" port, i370-*. (The other port, s390-*, is actively
   7883             maintained and supported.)
   7884      * Intel 386 family
   7885           + MOSS, i?86-moss-msdos and i?86-*-moss*
   7886           + NCR 3000 running System V r.4, i?86-ncr-sysv4*
   7887           + FreeBSD with a.out object format, i?86-*-freebsd*aout* and
   7888             i?86-*-freebsd2*
   7889           + GNU/Linux with a.out object format, i?86-linux*aout*
   7890           + GNU/Linux with libc5, a.k.a. glibc1, i?86-linux*libc1*
   7891           + Interix versions before Interix 3, i?86-*-interix
   7892           + Mach microkernel, i?86-mach*
   7893           + SCO UnixWare with UDK, i?86-*-udk*
   7894           + Generic System V releases 1, 2, and 3, i?86-*-sysv[123]*
   7895           + VSTa microkernel, i386-*-vsta
   7896      * Motorola M68000 family
   7897           + HPUX, m68k-hp-hpux* and m68000-hp-hpux*
   7898           + NetBSD with a.out object format (before NetBSD 1.4),
   7899             m68k-*-*-netbsd* except m68k-*-*-netbsdelf*
   7900           + Generic System V r.4, m68k-*-sysv4*
   7901      * VAX
   7902           + Generic VAX, vax-*-* (This is generic VAX only; we have not
   7903             obsoleted any VAX triples for specific operating systems.)
   7904 
   7905 Documentation improvements
   7906 
   7907 Other significant improvements
   7908 
   7909      * The build system has undergone several significant cleanups.
   7910        Subdirectories will only be configured if they are being built, and
   7911        all subdirectory configures are run from the make command. The top
   7912        level has been autoconfiscated.
   7913      * Building GCC no longer writes to its source directory. This should
   7914        help those wishing to share a read-only source directory over NFS
   7915        or build from a CD. The exceptions to this feature are if you
   7916        configure with either --enable-maintainer-mode or
   7917        --enable-generated-files-in-srcdir.
   7918      * The -W warning option has been renamed to -Wextra, which is more
   7919        easily understood. The older spelling will be retained for
   7920        backwards compatibility.
   7921      * Substantial improvements in compile time have been made,
   7922        particularly for non-optimizing compilations.
   7923      __________________________________________________________________
   7924 
   7925 GCC 3.4.0
   7926 
   7927   Bug Fixes
   7928 
   7929    A vast number of bugs have been fixed in 3.4.0, too many to publish a
   7930    complete list here. [27]Follow this link to query the Bugzilla database
   7931    for the list of over 900 bugs fixed in 3.4.0. This is the list of all
   7932    bugs marked as resolved and fixed in 3.4.0 that are not flagged as 3.4
   7933    regressions.
   7934      __________________________________________________________________
   7935 
   7936 GCC 3.4.1
   7937 
   7938   Bug Fixes
   7939 
   7940    This section lists the problem reports (PRs) from GCC's bug tracking
   7941    system that are known to be fixed in the 3.4.1 release. This list might
   7942    not be complete (that is, it is possible that some PRs that have been
   7943    fixed are not listed here).
   7944 
   7945     Bootstrap failures
   7946 
   7947      * [28]10129 Ada bootstrap fails on PPC-Darwin - invalid assembler
   7948        emitted - PIC related
   7949      * [29]14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf
   7950      * [30]14760 A bug in configure.in prevents using both
   7951        --program-suffix and --program-prefix
   7952      * [31]14671 [hppa64] bootstrap fails: ICE in
   7953        save_call_clobbered_regs, in caller_save.c
   7954      * [32]15093 [alpha][Java] make bootstrap fails to configure libffi on
   7955        Alpha
   7956      * [33]15178 Solaris 9/x86 fails linking after stage 3
   7957 
   7958     Multi-platform internal compiler errors (ICEs)
   7959 
   7960      * [34]12753 (preprocessor) Memory corruption in preprocessor on bad
   7961        input
   7962      * [35]13985 ICE in gcc.c-torture/compile/930621-1.c
   7963      * [36]14810 (c++) tree check failures with invalid code involving
   7964        templates
   7965      * [37]14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in
   7966        cp/parser.c
   7967      * [38]15044 (c++) ICE on syntax error, template header
   7968      * [39]15057 (c++) Compiling of conditional value throw constructs
   7969        cause a segmentation violation
   7970      * [40]15064 (c++) typeid of template parameter gives ICE
   7971      * [41]15142 (c++) ICE when passing a string where a char* is expected
   7972        in a throw statement
   7973      * [42]15159 ICE in rtl_verify_flow_info_1
   7974      * [43]15165 (c++) ICE in instantiate_template
   7975      * [44]15193 Unary minus using pointer to V4SF vector causes
   7976        -fforce-mem to exhaust all memory
   7977      * [45]15209 (c++) Runs out of memory with packed structs
   7978      * [46]15227 (c++) Trouble with invalid function definition
   7979      * [47]15285 (c++) instantiate_type ICE when forming pointer to
   7980        template function
   7981      * [48]15299 (c++) ICE in resolve_overloaded_unification
   7982      * [49]15329 (c++) ICE on constructor of member template
   7983      * [50]15550 ICE in extract_insn, in recog.c
   7984      * [51]15554 (c++) ICE in tsubst_copy, in cp/pt.c
   7985      * [52]15640 (c++) ICE on invalid code in arg_assoc, in
   7986        cp/name-lookup.c
   7987      * [53]15666 [unit-at-a-time] Gcc abort on valid code
   7988      * [54]15696 (c++) ICE with bad pointer-to-member code
   7989      * [55]15701 (c++) ICE with friends and template template parameter
   7990      * [56]15761 ICE in do_SUBST, in combine.c
   7991      * [57]15829 (c++) ICE on Botan-1.3.13 due to -funroll-loops
   7992 
   7993     Ada
   7994 
   7995      * [58]14538 All RTEMS targets broken for gnat
   7996 
   7997     C front end
   7998 
   7999      * [59]12391 missing warning about assigning to an incomplete type
   8000      * [60]14649 atan(1.0) should not be a constant expression
   8001      * [61]15004 [unit-at-a-time] no warning for unused paramater in
   8002        static function
   8003      * [62]15749 --pedantic-errors behaves differently from --pedantic
   8004        with C-compiler on GNU/Linux
   8005 
   8006     C++ compiler and library
   8007 
   8008      * [63]10646 non-const reference is incorrectly matched in a "const T"
   8009        partial specialization
   8010      * [64]12077 wcin.rdbuf()->in_avail() return value too high
   8011      * [65]13598 enc_filebuf doesn't work
   8012      * [66]14211 const_cast returns lvalue but should be rvalue
   8013      * [67]14220 num_put::do_put() undesired float/double behavior
   8014      * [68]14245 problem with user-defined allocators in std::basic_string
   8015      * [69]14340 libstdc++ Debug mode: failure to convert iterator to
   8016        const_iterator
   8017      * [70]14600 __gnu_cxx::stdio_sync_filebuf should expose internal
   8018        FILE*
   8019      * [71]14668 no warning anymore for reevaluation of declaration
   8020      * [72]14775 LFS (large file support) tests missing
   8021      * [73]14821 Duplicate namespace alias declaration should not conflict
   8022      * [74]14930 Friend declaration ignored
   8023      * [75]14932 cannot use offsetof to get offsets of array elements in
   8024        g++ 3.4.0
   8025      * [76]14950 [non unit-at-a-time] always_inline does not mix with
   8026        templates and -O0
   8027      * [77]14962 g++ ignores #pragma redefine_extname
   8028      * [78]14975 Segfault on low-level write error during imbue
   8029      * [79]15002 Linewise stream input is unusably slow (std::string slow)
   8030      * [80]15025 compiler accepts redeclaration of template as
   8031        non-template
   8032      * [81]15046 [arm] Math functions misdetected by cross configuration
   8033      * [82]15069 a bit test on a variable of enum type is miscompiled
   8034      * [83]15074 g++ -lsupc++ still links against libstdc++
   8035      * [84]15083 spurious "statement has no effect" warning
   8036      * [85]15096 parse error with templates and pointer to const member
   8037      * [86]15287 combination of operator[] and operator .* fails in
   8038        templates
   8039      * [87]15317 __attribute__ unused in first parameter of constructor
   8040        gives error
   8041      * [88]15337 sizeof on incomplete type diagnostic
   8042      * [89]15361 bitset<>::_Find_next fails
   8043      * [90]15412 _GLIBCXX_ symbols symbols defined and used in different
   8044        namespaces
   8045      * [91]15427 valid code results in incomplete type error
   8046      * [92]15471 Incorrect member pointer offsets in anonymous
   8047        structs/unions
   8048      * [93]15503 nested template problem
   8049      * [94]15507 compiler hangs while laying out union
   8050      * [95]15542 operator & and template definitions
   8051      * [96]15565 SLES9: leading + sign for unsigned int with showpos
   8052      * [97]15625 friend defined inside a template fails to find static
   8053        function
   8054      * [98]15629 Function templates, overloads, and friend name injection
   8055      * [99]15742 'noreturn' attribute ignored in method of template
   8056        functions.
   8057      * [100]15775 Allocator::pointer consistently ignored
   8058      * [101]15821 Duplicate namespace alias within namespace rejected
   8059      * [102]15862 'enum yn' fails (confict with undeclared builtin)
   8060      * [103]15875 rejects pointer to member in template
   8061      * [104]15877 valid code using templates and anonymous enums is
   8062        rejected
   8063      * [105]15947 Puzzling error message for wrong destructor declaration
   8064        in template class
   8065      * [106]16020 cannot copy __gnu_debug::bitset
   8066      * [107]16154 input iterator concept too restrictive
   8067      * [108]16174 deducing top-level consts
   8068 
   8069     Java
   8070 
   8071      * [109]14315 Java compiler is not parallel make safe
   8072 
   8073     Fortran
   8074 
   8075      * [110]15151 [g77] incorrect logical i/o in 64-bit mode
   8076 
   8077     Objective-C
   8078 
   8079      * [111]7993 private variables cannot be shadowed in subclasses
   8080 
   8081     Optimization bugs
   8082 
   8083      * [112]15228 useless copies of floating point operands
   8084      * [113]15345 [non-unit-at-a-time] unreferenced nested inline
   8085        functions not optimized away
   8086      * [114]15945 Incorrect floating point optimization
   8087      * [115]15526 ftrapv aborts on 0 * (-1)
   8088      * [116]14690 Miscompiled POOMA tests
   8089      * [117]15112 GCC generates code to write to unchanging memory
   8090 
   8091     Preprocessor
   8092 
   8093      * [118]15067 Minor glitch in the source of cpp
   8094 
   8095     Main driver program bugs
   8096 
   8097      * [119]1963 collect2 interprets -oldstyle_liblookup as -o
   8098        ldstyle_liblookup
   8099 
   8100     x86-specific (Intel/AMD)
   8101 
   8102      * [120]15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND*
   8103        section}
   8104 
   8105     HPPA-specific
   8106 
   8107      * [121]14782 GCC produces an unaligned data access at -O2
   8108      * [122]14828 FAIL: gcc.c-torture/execute/20030408-1.c execution, -O2
   8109      * [123]15202 ICE in reload_cse_simplify_operands, in postreload.c
   8110 
   8111     IA64-specific
   8112 
   8113      * [124]14610 __float80 constants incorrectly emitted
   8114      * [125]14813 init_array sections are initialized in the wrong order
   8115      * [126]14857 GCC segfault on duplicated asm statement
   8116      * [127]15598 Gcc 3.4 ICE on valid code
   8117      * [128]15653 Gcc 3.4 ICE on valid code
   8118 
   8119     MIPS-specific
   8120 
   8121      * [129]15189 wrong filling of delay slot with -march=mips1 -G0
   8122        -mno-split-addresses -mno-explicit-relocs
   8123      * [130]15331 Assembler error building gnatlib on IRIX 6.5 with GNU as
   8124        2.14.91
   8125      * [131]16144 Bogus reference to __divdf3 when -O1
   8126      * [132]16176 Miscompilation of unaligned data in MIPS backend
   8127 
   8128     PowerPC-specific
   8129 
   8130      * [133]11591 ICE in gcc.dg/altivec-5.c
   8131      * [134]12028 powerpc-eabispe produces bad sCOND operation
   8132      * [135]14478 rs6000 geu/ltu patterns generate incorrect code
   8133      * [136]14567 long double and va_arg complex args
   8134      * [137]14715 Altivec stack layout may overlap gpr save with stack
   8135        temps
   8136      * [138]14902 (libstdc++) Stream checking functions fail when -pthread
   8137        option is used.
   8138      * [139]14924 Compiler ICE on valid code
   8139      * [140]14960 -maltivec affects vector return with -mabi=no-altivec
   8140      * [141]15106 vector varargs failure passing from altivec to
   8141        non-altivec code for -m32
   8142      * [142]16026 ICE in function.c:4804, assign_parms, when -mpowerpc64 &
   8143        half-word operation
   8144      * [143]15191 -maltivec -mabi=no-altivec results in mis-aligned lvx
   8145        and stvx
   8146      * [144]15662 Segmentation fault when an exception is thrown - even if
   8147        try and catch are specified
   8148 
   8149     s390-specific
   8150 
   8151      * [145]15054 Bad code due to overlapping stack temporaries
   8152 
   8153     SPARC-specific
   8154 
   8155      * [146]15783 ICE with union assignment in 64-bit mode
   8156      * [147]15626 GCC 3.4 emits "ld: warning: relocation error:
   8157        R_SPARC_UA32"
   8158 
   8159     x86-64-specific
   8160 
   8161      * [148]14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64
   8162      * [149]14723 Backported -march=nocona from mainline
   8163      * [150]15290 __float128 failed to pass to function properly
   8164 
   8165     Cygwin/Mingw32-specific
   8166 
   8167      * [151]15250 Option -mms-bitfields support on GCC 3.4 is not
   8168        conformant to MS layout
   8169      * [152]15551 -mtune=pentium4 -O2 with sjlj EH breaks stack probe
   8170        worker on windows32 targets
   8171 
   8172     Bugs specific to embedded processors
   8173 
   8174      * [153]8309 [m68k] -m5200 produces erroneous SImode set of short
   8175        varaible on stack
   8176      * [154]13250 [SH] Gcc code for rotation clobbers the register, but
   8177        gcc continues to use the register as if it was not clobbered
   8178      * [155]13803 [coldfire] movqi operand constraints too restrictivefor
   8179        TARGET_COLDFIRE
   8180      * [156]14093 [SH] ICE for code when using -mhitachi option in SH
   8181      * [157]14457 [m6811hc] ICE with simple c++ source
   8182      * [158]14542 [m6811hc] ICE on simple source
   8183      * [159]15100 [SH] cc1plus got hang-up on
   8184        libstdc++-v3/testsuite/abi_check.cc
   8185      * [160]15296 [CRIS] Delayed branch scheduling causing invalid code on
   8186        cris-*
   8187      * [161]15396 [SH] ICE with -O2 -fPIC
   8188      * [162]15782 [coldfire] m68k_output_mi_thunk emits wrong code for
   8189        ColdFire
   8190 
   8191     Testsuite problems (compiler not affected)
   8192 
   8193      * [163]11610 libstdc++ testcases 27_io/* don't work properly remotely
   8194      * [164]15488 (libstdc++) possibly insufficient file permissions for
   8195        executing test suite
   8196      * [165]15489 (libstdc++) testsuite_files determined incorrectly
   8197 
   8198     Documentation bugs
   8199 
   8200      * [166]13928 (libstdc++) no whatis info in some man pages generated
   8201        by doxygen
   8202      * [167]14150 Ada documentation out of date
   8203      * [168]14949 (c++) Need to document method visibility changes
   8204      * [169]15123 libstdc++-doc: Allocators.3 manpage is empty
   8205      __________________________________________________________________
   8206 
   8207 GCC 3.4.2
   8208 
   8209   Bug Fixes
   8210 
   8211    This section lists the problem reports (PRs) from GCC's bug tracking
   8212    system that are known to be fixed in the 3.4.2 release. This list might
   8213    not be complete (that is, it is possible that some PRs that have been
   8214    fixed are not listed here).
   8215 
   8216     Bootstrap failures and issues
   8217 
   8218      * [170]16469 [mips-sgi-irix5.3] bootstrap fails in
   8219        libstdc++-v3/testsuite
   8220      * [171]16344 [hppa-linux-gnu] libstdc++'s PCH built by
   8221        profiledbootstrap does not work with the built compiler
   8222      * [172]16842 [Solaris/x86] mkheaders can not find mkheaders.conf
   8223 
   8224     Multi-platform internal compiler errors (ICEs)
   8225 
   8226      * [173]12608 (c++) ICE: expected class 't', have 'x' (error_mark) in
   8227        cp_parser_class_specifier, in cp/parser.c
   8228      * [174]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
   8229      * [175]15461 (c++) ICE due to NRV and inlining
   8230      * [176]15890 (c++) ICE in c_expand_expr, in c-common.c
   8231      * [177]16180 ICE: segmentation fault in RTL optimization
   8232      * [178]16224 (c++) ICE in write_unscoped_name (template/namespace)
   8233      * [179]16408 ICE: in delete_insn, in cfgrtl.c
   8234      * [180]16529 (c++) ICE for: namespace-alias shall not be declared as
   8235        the name of any other entity
   8236      * [181]16698 (c++) ICE with exceptions and declaration of __cxa_throw
   8237      * [182]16706 (c++) ICE in finish_member_declaration, in
   8238        cp/semantics.c
   8239      * [183]16810 (c++) Legal C++ program with cast gives ICE in
   8240        build_ptrmemfunc
   8241      * [184]16851 (c++) ICE when throwing a comma expression
   8242      * [185]16870 (c++) Boost.Spirit causes ICE in tsubst, in cp/pt.c
   8243      * [186]16904 (c++) ICE in finish_class_member_access_expr, in
   8244        cp/typeck.c
   8245      * [187]16905 (c++) ICE (segfault) with exceptions
   8246      * [188]16964 (c++) ICE in cp_parser_class_specifier due to
   8247        redefinition
   8248      * [189]17068 (c++) ICE: tree check: expected class 'd', have 'x'
   8249        (identifier_node) in dependent_template_p, in cp/pt.c
   8250 
   8251     Preprocessor bugs
   8252 
   8253      * [190]16366 Preprocessor option -remap causes memory corruption
   8254 
   8255     Optimization
   8256 
   8257      * [191]15345 unreferenced nested inline functions not optimized away
   8258      * [192]16590 Incorrect execution when compiling with -O2
   8259      * [193]16693 Bitwise AND is lost when used within a cast to an enum
   8260        of the same precision
   8261      * [194]17078 Jump into if(0) substatement fails
   8262 
   8263     Problems in generated debug information
   8264 
   8265      * [195]13956 incorrect stabs for nested local variables
   8266 
   8267     C front end bugs
   8268 
   8269      * [196]16684 GCC should not warn about redundant redeclarations of
   8270        built-ins
   8271 
   8272     C++ compiler and library
   8273 
   8274      * [197]12658 Thread safety problems in locale::global() and
   8275        locale::locale()
   8276      * [198]13092 g++ accepts invalid pointer-to-member conversion
   8277      * [199]15320 Excessive memory consumption
   8278      * [200]16246 Incorrect template argument deduction
   8279      * [201]16273 Memory exhausted when using nested classes and virtual
   8280        functions
   8281      * [202]16401 ostringstream in gcc 3.4.x very slow for big data
   8282      * [203]16411 undefined reference to
   8283        __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char>
   8284        >::file()
   8285      * [204]16489 G++ incorrectly rejects use of a null constant integral
   8286        expression as a null constant pointer
   8287      * [205]16618 offsetof fails with constant member
   8288      * [206]16637 syntax error reported for valid input code
   8289      * [207]16717 __attribute__((constructor)) broken in C++
   8290      * [208]16813 compiler error in DEBUG version of range insertion
   8291        std::map::insert
   8292      * [209]16853 pointer-to-member initialization from incompatible one
   8293        accepted
   8294      * [210]16889 ambiguity is not detected
   8295      * [211]16959 Segmentation fault in ios_base::sync_with_stdio
   8296 
   8297     Java compiler and library
   8298 
   8299      * [212]7587 direct threaded interpreter not thread-safe
   8300      * [213]16473 ServerSocket accept() leaks file descriptors
   8301      * [214]16478 Hash synchronization deadlock with finalizers
   8302 
   8303     Alpha-specific
   8304 
   8305      * [215]10695 ICE in dwarf2out_frame_debug_expr, in dwarf2out.c
   8306      * [216]16974 could not split insn (ice in final_scan_insn, in
   8307        final.c)
   8308 
   8309     x86-specific
   8310 
   8311      * [217]16298 ICE in output_operand
   8312      * [218]17113 ICE with SSE2 intrinsics
   8313 
   8314     x86-64 specific
   8315 
   8316      * [219]14697 libstdc++ couldn't find 32bit libgcc_s
   8317 
   8318     MIPS-specific
   8319 
   8320      * [220]15869 [mips64] No NOP after LW (with -mips1 -O0)
   8321      * [221]16325 [mips64] value profiling clobbers gp on mips
   8322      * [222]16357 [mipsisa64-elf] ICE copying 7 bytes between extern
   8323        char[]s
   8324      * [223]16380 [mips64] Use of uninitialised register after dbra
   8325        conversion
   8326      * [224]16407 [mips64] Unaligned access to local variables
   8327      * [225]16643 [mips64] verify_local_live_at_start ICE after
   8328        crossjumping & cfgcleanup
   8329 
   8330     ARM-specific
   8331 
   8332      * [226]15927 THUMB -O2: strength-reduced iteration variable ends up
   8333        off by 1
   8334      * [227]15948 THUMB: ICE with non-commutative cbranch
   8335      * [228]17019 THUMB: bad switch statement in md code for
   8336        addsi3_cbranch_scratch
   8337 
   8338     IA64-specific
   8339 
   8340      * [229]16130 ICE on valid code: in bundling, in config/ia64/ia64.c
   8341        (-mtune=merced)
   8342      * [230]16142 ICE on valid code: in bundling, in config/ia64/ia64.c
   8343        (-mtune=itanium)
   8344      * [231]16278 Gcc failed to build Linux kernel with -mtune=merced
   8345      * [232]16414 ICE on valid code: typo in comparison of asm_noperands
   8346        result
   8347      * [233]16445 ICE on valid code: don't count ignored insns
   8348      * [234]16490 ICE (segfault) while compiling with -fprofile-use
   8349      * [235]16683 ia64 does not honor SUBTARGET_EXTRA_SPECS
   8350 
   8351     PowerPC-specific
   8352 
   8353      * [236]16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x
   8354      * [237]16239 ICE on ppc64 (mozilla 1.7 compile, -O1 -fno-exceptions
   8355        issue)
   8356 
   8357     SPARC-specific
   8358 
   8359      * [238]16199 ICE while compiling apache 2.0.49
   8360      * [239]16416 -m64 doesn't imply -mcpu=v9 anymore
   8361      * [240]16430 ICE when returning non-C aggregates larger than 16 bytes
   8362 
   8363     Bugs specific to embedded processors
   8364 
   8365      * [241]16379 [m32r] can't output large model function call of memcpy
   8366      * [242]17093 [m32r] ICE with -msdata=use -O0
   8367      * [243]17119 [m32r] ICE at switch case 0x8000
   8368 
   8369     DJGPP-specific
   8370 
   8371      * [244]15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp
   8372 
   8373     Alpha Tru64-specific
   8374 
   8375      * [245]16210 libstdc++ gratuitously omits "long long" I/O
   8376 
   8377     Testsuite, documentation issues (compiler is not affected):
   8378 
   8379      * [246]15488 (libstdc++) possibly insufficient file permissions for
   8380        executing test suite
   8381      * [247]16250 ada/doctools runs makeinfo even in release tarball
   8382      __________________________________________________________________
   8383 
   8384 GCC 3.4.3
   8385 
   8386    This is the [248]list of problem reports (PRs) from GCC's bug tracking
   8387    system that are known to be fixed in the 3.4.3 release. This list might
   8388    not be complete (that is, it is possible that some PRs that have been
   8389    fixed are not listed here).
   8390 
   8391     Bootstrap failures
   8392 
   8393      * [249]17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1
   8394      * [250]17850 [arm-elf] bootstrap failure - libstdc++ uses strtold
   8395        when undeclared
   8396 
   8397     Internal compiler errors (ICEs) affecting multiple platforms
   8398 
   8399      * [251]13948 (java) GCJ segmentation fault while compiling GL4Java
   8400        .class files
   8401      * [252]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
   8402      * [253]16301 (c++) ICE when "strong" attribute is attached to a using
   8403        directive
   8404      * [254]16566 ICE with flexible arrays
   8405      * [255]17023 ICE with nested functions in parameter declaration
   8406      * [256]17027 ICE with noreturn function in loop at -O2
   8407      * [257]17524 ICE in grokdeclarator, in cp/decl.c
   8408      * [258]17826 (c++) ICE in cp_tree_equal
   8409 
   8410     C and optimization bugs
   8411 
   8412      * [259]15526 -ftrapv aborts on 0 * (-1)
   8413      * [260]16999 #ident stopped working
   8414      * [261]17503 quadratic behaviour in invalid_mode_change_p
   8415      * [262]17581 Long long arithmetic fails inside a switch/case
   8416        statement when compiled with -O2
   8417      * [263]18129 -fwritable-strings doesn't work
   8418 
   8419     C++ compiler and library bugs
   8420 
   8421      * [264]10975 incorrect initial ostringstream::tellp()
   8422      * [265]11722 Unbuffered filebuf::sgetn is slow
   8423      * [266]14534 Unrecognizing static function as a template parameter
   8424        when its return value is also templated
   8425      * [267]15172 Copy constructor optimization in aggregate
   8426        initialization
   8427      * [268]15786 Bad error message for frequently occuring error.
   8428      * [269]16162 Rejects valid member-template-definition
   8429      * [270]16612 empty basic_strings can't live in shared memory
   8430      * [271]16715 std::basic_iostream is instantiated when used, even
   8431        though instantiations are already contained in libstdc++
   8432      * [272]16848 code in /ext/demangle.h appears broken
   8433      * [273]17132 GCC fails to eliminate function template specialization
   8434        when argument deduction fails
   8435      * [274]17259 One more _S_leaf incorrectly qualified with _RopeRep::
   8436        in ropeimpl.h
   8437      * [275]17327 use of `enumeral_type' in template type unification
   8438      * [276]17393 "unused variable '._0'" warning with -Wall
   8439      * [277]17501 Confusion with member templates
   8440      * [278]17537 g++ not passing -lstdc++ to linker when all command line
   8441        arguments are libraries
   8442      * [279]17585 usage of unqualified name of static member from within
   8443        class not allowed
   8444      * [280]17821 Poor diagnostic for using "." instead of "->"
   8445      * [281]17829 wrong error: call of overloaded function is ambiguous
   8446      * [282]17851 Misleading diagnostic for invalid function declarations
   8447        with undeclared types
   8448      * [283]17976 Destructor is called twice
   8449      * [284]18020 rejects valid definition of enum value in template
   8450      * [285]18093 bogus conflict in namespace aliasing
   8451      * [286]18140 C++ parser bug when using >> in templates
   8452 
   8453     Fortran
   8454 
   8455      * [287]17541 data statements with double precision constants fail
   8456 
   8457     x86-specific
   8458 
   8459      * [288]17853 -O2 ICE for MMX testcase
   8460 
   8461     SPARC-specific
   8462 
   8463      * [289]17245 ICE compiling gsl-1.5 statistics/lag1.c
   8464 
   8465     Darwin-specific
   8466 
   8467      * [290]17167 FATAL:Symbol L_foo$stub already defined.
   8468 
   8469     AIX-specific
   8470 
   8471      * [291]17277 could not catch an exception when specified -maix64
   8472 
   8473     Solaris-specific
   8474 
   8475      * [292]17505 <cmath> calls acosf(), ceilf(), and other functions
   8476        missing from system libraries
   8477 
   8478     HP/UX specific:
   8479 
   8480      * [293]17684 /usr/ccs/bin/ld: Can't create libgcc_s.sl
   8481 
   8482     ARM-specific
   8483 
   8484      * [294]17384 ICE with mode attribute on structures
   8485 
   8486     MIPS-specific
   8487 
   8488      * [295]17770 No NOP after LWL with -mips1
   8489 
   8490     Other embedded target specific
   8491 
   8492      * [296]11476 [arc-elf] gcc ICE on newlib's vfprintf.c
   8493      * [297]14064 [avr-elf] -fdata-sections triggers ICE
   8494      * [298]14678 [m68hc11-elf] gcc ICE
   8495      * [299]15583 [powerpc-rtems] powerpc-rtems lacks __USE_INIT_FINI__
   8496      * [300]15790 [i686-coff] Alignment error building gcc with i686-coff
   8497        target
   8498      * [301]15886 [SH] Miscompilation with -O2 -fPIC
   8499      * [302]16884 [avr-elf] [fweb related] bug while initializing
   8500        variables
   8501 
   8502     Bugs relating to debugger support
   8503 
   8504      * [303]13841 missing debug info for _Complex function arguments
   8505      * [304]15860 [big-endian targets] No DW_AT_location debug info is
   8506        emitted for formal arguments to a function that uses "register"
   8507        qualifiers
   8508 
   8509     Testsuite issues (compiler not affected)
   8510 
   8511      * [305]17465 Testsuite in libffi overrides LD_LIBRARY_PATH
   8512      * [306]17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH
   8513      * [307]18138 [mips-sgi-irix6.5] libgcc_s.so.1 not found by 64-bit
   8514        testsuite
   8515 
   8516     Documentation
   8517 
   8518      * [308]15498 typo in gcc manual: non-existing locale example en_UK,
   8519        should be en_GB
   8520      * [309]15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap:
   8521        document broken shell
   8522      * [310]16406 USE_LD_AS_NEEDED undocumented
   8523      __________________________________________________________________
   8524 
   8525 GCC 3.4.4
   8526 
   8527    This is the [311]list of problem reports (PRs) from GCC's bug tracking
   8528    system that are known to be fixed in the 3.4.4 release. This list might
   8529    not be complete (that is, it is possible that some PRs that have been
   8530    fixed are not listed here).
   8531      __________________________________________________________________
   8532 
   8533 GCC 3.4.5
   8534 
   8535    This is the [312]list of problem reports (PRs) from GCC's bug tracking
   8536    system that are known to be fixed in the 3.4.5 release. This list might
   8537    not be complete (that is, it is possible that some PRs that have been
   8538    fixed are not listed here).
   8539 
   8540     Bootstrap issues
   8541 
   8542      * [313]24688 sco_math fixincl breaks math.h
   8543 
   8544     C compiler bugs
   8545 
   8546      * [314]17188 struct Foo { } redefinition
   8547      * [315]20187 wrong code for ((unsigned char)(unsigned long
   8548        long)((a?a:1)&(a*b)))?0:1)
   8549      * [316]21873 infinite warning loop on bad array initializer
   8550      * [317]21899 enum definition accepts values to be overriden
   8551      * [318]22061 ICE in find_function_data, in function.c
   8552      * [319]22308 Failure to diagnose violation of constraint 6.516p2
   8553      * [320]22458 ICE on missing brace
   8554      * [321]22589 ICE casting to long long
   8555      * [322]24101 Segfault with preprocessed source
   8556 
   8557     C++ compiler and library bugs
   8558 
   8559      * [323]10611 operations on vector mode not recognized in C++
   8560      * [324]13377 unexpected behavior of namespace usage directive
   8561      * [325]16002 Strange error message with new parser
   8562      * [326]17413 local classes as template argument
   8563      * [327]17609 spurious error message after using keyword
   8564      * [328]17618 ICE in cp_convert_to_pointer, in cp/cvt.c
   8565      * [329]18124 ICE with invalid template template parameter
   8566      * [330]18155 typedef in template declaration not rejected
   8567      * [331]18177 ICE with const_cast for undeclared variable
   8568      * [332]18368 C++ error message regression
   8569      * [333]16378 ICE when returning a copy of a packed member
   8570      * [334]18466 int ::i; accepted
   8571      * [335]18512 ICE on invalid usage of template base class
   8572      * [336]18454 ICE when returning undefined type
   8573      * [337]18738 typename not allowed with non-dependent qualified name
   8574      * [338]18803 rejects access to operator() in template
   8575      * [339]19004 ICE in uses_template_parms, in cp/pt.c
   8576      * [340]19208 Spurious error about variably modified type
   8577      * [341]18253 bad error message / ICE for invalid template parameter
   8578      * [342]19608 ICE after friend function definition in local class
   8579      * [343]19884 ICE on explicit instantiation of a non-template
   8580        constructor
   8581      * [344]20153 ICE when C++ template function contains anonymous union
   8582      * [345]20563 Infinite loop in diagnostic (and ice after error
   8583        message)
   8584      * [346]20789 ICE with incomplete type in template
   8585      * [347]21336 Internal compiler error when using custom new operators
   8586      * [348]21768 ICE in error message due to violation of coding
   8587        conventions
   8588      * [349]21853 constness of pointer to data member ignored
   8589      * [350]21903 Default argument of template function causes a
   8590        compile-time error
   8591      * [351]21983 multiple diagnostics
   8592      * [352]21987 New testsuite failure
   8593        g++.dg/warn/conversion-function-1.C
   8594      * [353]22153 ICE on invalid template specialization
   8595      * [354]22172 Internal compiler error, seg fault.
   8596      * [355]21286 filebuf::xsgetn vs pipes
   8597      * [356]22233 ICE with wrong number of template parameters
   8598      * [357]22508 ICE after invalid operator new
   8599      * [358]22545 ICE with pointer to class member & user defined
   8600        conversion operator
   8601      * [359]23528 Wrong default allocator in ext/hash_map
   8602      * [360]23550 char_traits requirements/1.cc test bad math
   8603      * [361]23586 Bad diagnostic for invalid namespace-name
   8604      * [362]23624 ICE in invert_truthvalue, in fold-const.c
   8605      * [363]23639 Bad error message: not a member of '<declaration error>'
   8606      * [364]23797 ICE on typename outside template
   8607      * [365]23965 Bogus error message: no matching function for call to
   8608        'foo(<type error>)'
   8609      * [366]24052 &#`label_decl' not supported by dump_expr#<expression
   8610        error>
   8611      * [367]24580 virtual base class cause exception not to be caught
   8612 
   8613     Problems in generated debug information
   8614 
   8615      * [368]24267 Bad DWARF for altivec vectors
   8616 
   8617     Optimizations issues
   8618 
   8619      * [369]17810 ICE in verify_local_live_at_start
   8620      * [370]17860 Wrong generated code for loop with varying bound
   8621      * [371]21709 ICE on compile-time complex NaN
   8622      * [372]21964 broken tail call at -O2 or more
   8623      * [373]22167 Strange optimization bug when using -Os
   8624      * [374]22619 Compilation failure for real_const_1.f and
   8625        real_const_2.f90
   8626      * [375]23241 Invalid code generated for comparison of uchar to 255
   8627      * [376]23478 Miscompilation due to reloading of a var that is also
   8628        used in EH pad
   8629      * [377]24470 segmentation fault in cc1plus when compiling with -O
   8630      * [378]24950 ICE in operand_subword_force
   8631 
   8632     Precompiled headers problems
   8633 
   8634      * [379]14400 Cannot compile qt-x11-free-3.3.0
   8635      * [380]14940 PCH largefile test fails on various platforms
   8636 
   8637     Preprocessor bugs
   8638 
   8639      * [381]20239 ICE on empty preprocessed input
   8640      * [382]15220 "gcc -E -MM -MG" reports missing system headers in
   8641        source directory
   8642 
   8643     Testsuite issues
   8644 
   8645      * [383]19275 gcc.dg/20020919-1.c fails with -fpic/-fPIC on
   8646        i686-pc-linux-gnu
   8647 
   8648     Alpha specific
   8649 
   8650      * [384]21888 bootstrap failure with linker relaxation enabled
   8651 
   8652     ARM specific
   8653 
   8654      * [385]15342 [arm-linux]: ICE in verify_local_live_at_start
   8655      * [386]23985 Memory aliasing information incorrect in inlined memcpy
   8656 
   8657     ColdFile specific
   8658 
   8659      * [387]16719 Illegal move of byte into address register causes
   8660        compiler to ICE
   8661 
   8662     HPPA specific
   8663 
   8664      * [388]21723 ICE while building libgfortran
   8665      * [389]21841 -mhp-ld/-mgnu-ld documentation
   8666 
   8667     IA-64 specific
   8668 
   8669      * [390]23644 IA-64 hardware models and configuration options
   8670        documentation error
   8671      * [391]24718 Shared libgcc not used for linking by default
   8672 
   8673     M68000 specific
   8674 
   8675      * [392]18421 ICE in reload_cse_simplify_operands, in postreload.c
   8676 
   8677     MIPS specific
   8678 
   8679      * [393]20621 ICE in change_address_1, in emit-rtl.c
   8680 
   8681     PowerPC and PowerPC64 specific
   8682 
   8683      * [394]18583 error on valid code: const
   8684        __attribute__((altivec(vector__))) doesn't work in arrays
   8685      * [395]20191 ICE in reload_cse_simplify_operands
   8686      * [396]22083 AIX: TARGET_C99_FUNCTIONS is wrongly defined
   8687      * [397]23070 CALL_V4_CLEAR_FP_ARGS flag not properly set
   8688      * [398]23404 gij trashes args of functions with more than 8 fp args
   8689      * [399]23539 C & C++ compiler generating misaligned references
   8690        regardless of compiler flags
   8691      * [400]24102 floatdisf2_internal2 broken
   8692      * [401]24465 -mminimal-toc miscompilation of __thread vars
   8693 
   8694     Solaris specific
   8695 
   8696      * [402]19933 Problem with define of HUGE_VAL in math_c99
   8697      * [403]21889 Native Solaris assembler cannot grok DTP-relative debug
   8698        symbols
   8699 
   8700     SPARC specific
   8701 
   8702      * [404]19300 PCH failures on sparc-linux
   8703      * [405]20301 Assembler labels have a leading "-"
   8704      * [406]20673 C PCH testsuite assembly comparison failure
   8705 
   8706     x86 and x86_64 specific
   8707 
   8708      * [407]18582 ICE with arrays of type V2DF
   8709      * [408]19340 Compilation SEGFAULTs with -O1 -fschedule-insns2
   8710        -fsched2-use-traces
   8711      * [409]21716 ICE in reg-stack.c's swap_rtx_condition
   8712      * [410]24315 amd64 fails -fpeephole2
   8713      __________________________________________________________________
   8714 
   8715 GCC 3.4.6
   8716 
   8717    This is the [411]list of problem reports (PRs) from GCC's bug tracking
   8718    system that are known to be fixed in the 3.4.6 release. This list might
   8719    not be complete (that is, it is possible that some PRs that have been
   8720    fixed are not listed here).
   8721 
   8722 
   8723     For questions related to the use of GCC, please consult these web
   8724     pages and the [412]GCC manuals. If that fails, the
   8725     [413]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   8726     web pages and the development of GCC are welcome on our developer
   8727     list at [414]gcc (a] gcc.gnu.org. All of [415]our lists have public
   8728     archives.
   8729 
   8730    Copyright (C) [416]Free Software Foundation, Inc. Verbatim copying and
   8731    distribution of this entire article is permitted in any medium,
   8732    provided this notice is preserved.
   8733 
   8734    These pages are [417]maintained by the GCC team. Last modified
   8735    2012-11-02[418].
   8736 
   8737 References
   8738 
   8739    1. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
   8740    2. http://gcc.gnu.org/gcc-3.4/changes.html#cplusplus
   8741    3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
   8742    4. http://gcc.gnu.org/gcc-3.4/changes.html#obsolete_systems
   8743    5. http://gcc.gnu.org/gcc-3.4/mips-abi.html
   8744    6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
   8745    7. http://www.boost.org/
   8746    8. http://gcc.gnu.org/PR11953
   8747    9. http://gcc.gnu.org/PR8361
   8748   10. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins
   8749   11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
   8750   12. http://gcc.gnu.org/bugs/#cxx_rvalbind
   8751   13. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
   8752   14. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
   8753   15. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
   8754   16. http://www.gnu.org/software/classpath/
   8755   17. http://www.eclipse.org/
   8756   18. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html
   8757   19. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html
   8758   20. http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51A_HTML/ARH9MBTE/DTMNPLTN.HTM#normal-argument-list-structure
   8759   21. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
   8760   22. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Comparison-of-the-two-descriptions.html
   8761   23. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
   8762   24. http://gcc.gnu.org/gcc-3.4/mips-abi.html
   8763   25. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
   8764   26. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
   8765   27. http://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=%5C%5B3%5C.4.*%5BRr%5Degression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED
   8766   28. http://gcc.gnu.org/PR10129
   8767   29. http://gcc.gnu.org/PR14576
   8768   30. http://gcc.gnu.org/PR14760
   8769   31. http://gcc.gnu.org/PR14671
   8770   32. http://gcc.gnu.org/PR15093
   8771   33. http://gcc.gnu.org/PR15178
   8772   34. http://gcc.gnu.org/PR12753
   8773   35. http://gcc.gnu.org/PR13985
   8774   36. http://gcc.gnu.org/PR14810
   8775   37. http://gcc.gnu.org/PR14883
   8776   38. http://gcc.gnu.org/PR15044
   8777   39. http://gcc.gnu.org/PR15057
   8778   40. http://gcc.gnu.org/PR15064
   8779   41. http://gcc.gnu.org/PR15142
   8780   42. http://gcc.gnu.org/PR15159
   8781   43. http://gcc.gnu.org/PR15165
   8782   44. http://gcc.gnu.org/PR15193
   8783   45. http://gcc.gnu.org/PR15209
   8784   46. http://gcc.gnu.org/PR15227
   8785   47. http://gcc.gnu.org/PR15285
   8786   48. http://gcc.gnu.org/PR15299
   8787   49. http://gcc.gnu.org/PR15329
   8788   50. http://gcc.gnu.org/PR15550
   8789   51. http://gcc.gnu.org/PR15554
   8790   52. http://gcc.gnu.org/PR15640
   8791   53. http://gcc.gnu.org/PR15666
   8792   54. http://gcc.gnu.org/PR15696
   8793   55. http://gcc.gnu.org/PR15701
   8794   56. http://gcc.gnu.org/PR15761
   8795   57. http://gcc.gnu.org/PR15829
   8796   58. http://gcc.gnu.org/PR14538
   8797   59. http://gcc.gnu.org/PR12391
   8798   60. http://gcc.gnu.org/PR14649
   8799   61. http://gcc.gnu.org/PR15004
   8800   62. http://gcc.gnu.org/PR15749
   8801   63. http://gcc.gnu.org/PR10646
   8802   64. http://gcc.gnu.org/PR12077
   8803   65. http://gcc.gnu.org/PR13598
   8804   66. http://gcc.gnu.org/PR14211
   8805   67. http://gcc.gnu.org/PR14220
   8806   68. http://gcc.gnu.org/PR14245
   8807   69. http://gcc.gnu.org/PR14340
   8808   70. http://gcc.gnu.org/PR14600
   8809   71. http://gcc.gnu.org/PR14668
   8810   72. http://gcc.gnu.org/PR14775
   8811   73. http://gcc.gnu.org/PR14821
   8812   74. http://gcc.gnu.org/PR14930
   8813   75. http://gcc.gnu.org/PR14932
   8814   76. http://gcc.gnu.org/PR14950
   8815   77. http://gcc.gnu.org/PR14962
   8816   78. http://gcc.gnu.org/PR14975
   8817   79. http://gcc.gnu.org/PR15002
   8818   80. http://gcc.gnu.org/PR15025
   8819   81. http://gcc.gnu.org/PR15046
   8820   82. http://gcc.gnu.org/PR15069
   8821   83. http://gcc.gnu.org/PR15074
   8822   84. http://gcc.gnu.org/PR15083
   8823   85. http://gcc.gnu.org/PR15096
   8824   86. http://gcc.gnu.org/PR15287
   8825   87. http://gcc.gnu.org/PR15317
   8826   88. http://gcc.gnu.org/PR15337
   8827   89. http://gcc.gnu.org/PR15361
   8828   90. http://gcc.gnu.org/PR15412
   8829   91. http://gcc.gnu.org/PR15427
   8830   92. http://gcc.gnu.org/PR15471
   8831   93. http://gcc.gnu.org/PR15503
   8832   94. http://gcc.gnu.org/PR15507
   8833   95. http://gcc.gnu.org/PR15542
   8834   96. http://gcc.gnu.org/PR15565
   8835   97. http://gcc.gnu.org/PR15625
   8836   98. http://gcc.gnu.org/PR15629
   8837   99. http://gcc.gnu.org/PR15742
   8838  100. http://gcc.gnu.org/PR15775
   8839  101. http://gcc.gnu.org/PR15821
   8840  102. http://gcc.gnu.org/PR15862
   8841  103. http://gcc.gnu.org/PR15875
   8842  104. http://gcc.gnu.org/PR15877
   8843  105. http://gcc.gnu.org/PR15947
   8844  106. http://gcc.gnu.org/PR16020
   8845  107. http://gcc.gnu.org/PR16154
   8846  108. http://gcc.gnu.org/PR16174
   8847  109. http://gcc.gnu.org/PR14315
   8848  110. http://gcc.gnu.org/PR15151
   8849  111. http://gcc.gnu.org/PR7993
   8850  112. http://gcc.gnu.org/PR15228
   8851  113. http://gcc.gnu.org/PR15345
   8852  114. http://gcc.gnu.org/PR15945
   8853  115. http://gcc.gnu.org/PR15526
   8854  116. http://gcc.gnu.org/PR14690
   8855  117. http://gcc.gnu.org/PR15112
   8856  118. http://gcc.gnu.org/PR15067
   8857  119. http://gcc.gnu.org/PR1963
   8858  120. http://gcc.gnu.org/PR15717
   8859  121. http://gcc.gnu.org/PR14782
   8860  122. http://gcc.gnu.org/PR14828
   8861  123. http://gcc.gnu.org/PR15202
   8862  124. http://gcc.gnu.org/PR14610
   8863  125. http://gcc.gnu.org/PR14813
   8864  126. http://gcc.gnu.org/PR14857
   8865  127. http://gcc.gnu.org/PR15598
   8866  128. http://gcc.gnu.org/PR15653
   8867  129. http://gcc.gnu.org/PR15189
   8868  130. http://gcc.gnu.org/PR15331
   8869  131. http://gcc.gnu.org/PR16144
   8870  132. http://gcc.gnu.org/PR16176
   8871  133. http://gcc.gnu.org/PR11591
   8872  134. http://gcc.gnu.org/PR12028
   8873  135. http://gcc.gnu.org/PR14478
   8874  136. http://gcc.gnu.org/PR14567
   8875  137. http://gcc.gnu.org/PR14715
   8876  138. http://gcc.gnu.org/PR14902
   8877  139. http://gcc.gnu.org/PR14924
   8878  140. http://gcc.gnu.org/PR14960
   8879  141. http://gcc.gnu.org/PR15106
   8880  142. http://gcc.gnu.org/PR16026
   8881  143. http://gcc.gnu.org/PR15191
   8882  144. http://gcc.gnu.org/PR15662
   8883  145. http://gcc.gnu.org/PR15054
   8884  146. http://gcc.gnu.org/PR15783
   8885  147. http://gcc.gnu.org/PR15626
   8886  148. http://gcc.gnu.org/PR14326
   8887  149. http://gcc.gnu.org/PR14723
   8888  150. http://gcc.gnu.org/PR15290
   8889  151. http://gcc.gnu.org/PR15250
   8890  152. http://gcc.gnu.org/PR15551
   8891  153. http://gcc.gnu.org/PR8309
   8892  154. http://gcc.gnu.org/PR13250
   8893  155. http://gcc.gnu.org/PR13803
   8894  156. http://gcc.gnu.org/PR14093
   8895  157. http://gcc.gnu.org/PR14457
   8896  158. http://gcc.gnu.org/PR14542
   8897  159. http://gcc.gnu.org/PR15100
   8898  160. http://gcc.gnu.org/PR15296
   8899  161. http://gcc.gnu.org/PR15396
   8900  162. http://gcc.gnu.org/PR15782
   8901  163. http://gcc.gnu.org/PR11610
   8902  164. http://gcc.gnu.org/PR15488
   8903  165. http://gcc.gnu.org/PR15489
   8904  166. http://gcc.gnu.org/PR13928
   8905  167. http://gcc.gnu.org/PR14150
   8906  168. http://gcc.gnu.org/PR14949
   8907  169. http://gcc.gnu.org/PR15123
   8908  170. http://gcc.gnu.org/PR16469
   8909  171. http://gcc.gnu.org/PR16344
   8910  172. http://gcc.gnu.org/PR16842
   8911  173. http://gcc.gnu.org/PR12608
   8912  174. http://gcc.gnu.org/PR14492
   8913  175. http://gcc.gnu.org/PR15461
   8914  176. http://gcc.gnu.org/PR15890
   8915  177. http://gcc.gnu.org/PR16180
   8916  178. http://gcc.gnu.org/PR16224
   8917  179. http://gcc.gnu.org/PR16408
   8918  180. http://gcc.gnu.org/PR16529
   8919  181. http://gcc.gnu.org/PR16698
   8920  182. http://gcc.gnu.org/PR16706
   8921  183. http://gcc.gnu.org/PR16810
   8922  184. http://gcc.gnu.org/PR16851
   8923  185. http://gcc.gnu.org/PR16870
   8924  186. http://gcc.gnu.org/PR16904
   8925  187. http://gcc.gnu.org/PR16905
   8926  188. http://gcc.gnu.org/PR16964
   8927  189. http://gcc.gnu.org/PR17068
   8928  190. http://gcc.gnu.org/PR16366
   8929  191. http://gcc.gnu.org/PR15345
   8930  192. http://gcc.gnu.org/PR16590
   8931  193. http://gcc.gnu.org/PR16693
   8932  194. http://gcc.gnu.org/PR17078
   8933  195. http://gcc.gnu.org/PR13956
   8934  196. http://gcc.gnu.org/PR16684
   8935  197. http://gcc.gnu.org/PR12658
   8936  198. http://gcc.gnu.org/PR13092
   8937  199. http://gcc.gnu.org/PR15320
   8938  200. http://gcc.gnu.org/PR16246
   8939  201. http://gcc.gnu.org/PR16273
   8940  202. http://gcc.gnu.org/PR16401
   8941  203. http://gcc.gnu.org/PR16411
   8942  204. http://gcc.gnu.org/PR16489
   8943  205. http://gcc.gnu.org/PR16618
   8944  206. http://gcc.gnu.org/PR16637
   8945  207. http://gcc.gnu.org/PR16717
   8946  208. http://gcc.gnu.org/PR16813
   8947  209. http://gcc.gnu.org/PR16853
   8948  210. http://gcc.gnu.org/PR16889
   8949  211. http://gcc.gnu.org/PR16959
   8950  212. http://gcc.gnu.org/PR7587
   8951  213. http://gcc.gnu.org/PR16473
   8952  214. http://gcc.gnu.org/PR16478
   8953  215. http://gcc.gnu.org/PR10695
   8954  216. http://gcc.gnu.org/PR16974
   8955  217. http://gcc.gnu.org/PR16298
   8956  218. http://gcc.gnu.org/PR17113
   8957  219. http://gcc.gnu.org/PR14697
   8958  220. http://gcc.gnu.org/PR15869
   8959  221. http://gcc.gnu.org/PR16325
   8960  222. http://gcc.gnu.org/PR16357
   8961  223. http://gcc.gnu.org/PR16380
   8962  224. http://gcc.gnu.org/PR16407
   8963  225. http://gcc.gnu.org/PR16643
   8964  226. http://gcc.gnu.org/PR15927
   8965  227. http://gcc.gnu.org/PR15948
   8966  228. http://gcc.gnu.org/PR17019
   8967  229. http://gcc.gnu.org/PR16130
   8968  230. http://gcc.gnu.org/PR16142
   8969  231. http://gcc.gnu.org/PR16278
   8970  232. http://gcc.gnu.org/PR16414
   8971  233. http://gcc.gnu.org/PR16445
   8972  234. http://gcc.gnu.org/PR16490
   8973  235. http://gcc.gnu.org/PR16683
   8974  236. http://gcc.gnu.org/PR16195
   8975  237. http://gcc.gnu.org/PR16239
   8976  238. http://gcc.gnu.org/PR16199
   8977  239. http://gcc.gnu.org/PR16416
   8978  240. http://gcc.gnu.org/PR16430
   8979  241. http://gcc.gnu.org/PR16379
   8980  242. http://gcc.gnu.org/PR17093
   8981  243. http://gcc.gnu.org/PR17119
   8982  244. http://gcc.gnu.org/PR15928
   8983  245. http://gcc.gnu.org/PR16210
   8984  246. http://gcc.gnu.org/PR15488
   8985  247. http://gcc.gnu.org/PR16250
   8986  248. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.3
   8987  249. http://gcc.gnu.org/PR17369
   8988  250. http://gcc.gnu.org/PR17850
   8989  251. http://gcc.gnu.org/PR13948
   8990  252. http://gcc.gnu.org/PR14492
   8991  253. http://gcc.gnu.org/PR16301
   8992  254. http://gcc.gnu.org/PR16566
   8993  255. http://gcc.gnu.org/PR17023
   8994  256. http://gcc.gnu.org/PR17027
   8995  257. http://gcc.gnu.org/PR17524
   8996  258. http://gcc.gnu.org/PR17826
   8997  259. http://gcc.gnu.org/PR15526
   8998  260. http://gcc.gnu.org/PR16999
   8999  261. http://gcc.gnu.org/PR17503
   9000  262. http://gcc.gnu.org/PR17581
   9001  263. http://gcc.gnu.org/PR18129
   9002  264. http://gcc.gnu.org/PR10975
   9003  265. http://gcc.gnu.org/PR11722
   9004  266. http://gcc.gnu.org/PR14534
   9005  267. http://gcc.gnu.org/PR15172
   9006  268. http://gcc.gnu.org/PR15786
   9007  269. http://gcc.gnu.org/PR16162
   9008  270. http://gcc.gnu.org/PR16612
   9009  271. http://gcc.gnu.org/PR16715
   9010  272. http://gcc.gnu.org/PR16848
   9011  273. http://gcc.gnu.org/PR17132
   9012  274. http://gcc.gnu.org/PR17259
   9013  275. http://gcc.gnu.org/PR17327
   9014  276. http://gcc.gnu.org/PR17393
   9015  277. http://gcc.gnu.org/PR17501
   9016  278. http://gcc.gnu.org/PR17537
   9017  279. http://gcc.gnu.org/PR17585
   9018  280. http://gcc.gnu.org/PR17821
   9019  281. http://gcc.gnu.org/PR17829
   9020  282. http://gcc.gnu.org/PR17851
   9021  283. http://gcc.gnu.org/PR17976
   9022  284. http://gcc.gnu.org/PR18020
   9023  285. http://gcc.gnu.org/PR18093
   9024  286. http://gcc.gnu.org/PR18140
   9025  287. http://gcc.gnu.org/PR17541
   9026  288. http://gcc.gnu.org/PR17853
   9027  289. http://gcc.gnu.org/PR17245
   9028  290. http://gcc.gnu.org/PR17167
   9029  291. http://gcc.gnu.org/PR17277
   9030  292. http://gcc.gnu.org/PR17505
   9031  293. http://gcc.gnu.org/PR17684
   9032  294. http://gcc.gnu.org/PR17384
   9033  295. http://gcc.gnu.org/PR17770
   9034  296. http://gcc.gnu.org/PR11476
   9035  297. http://gcc.gnu.org/PR14064
   9036  298. http://gcc.gnu.org/PR14678
   9037  299. http://gcc.gnu.org/PR15583
   9038  300. http://gcc.gnu.org/PR15790
   9039  301. http://gcc.gnu.org/PR15886
   9040  302. http://gcc.gnu.org/PR16884
   9041  303. http://gcc.gnu.org/PR13841
   9042  304. http://gcc.gnu.org/PR15860
   9043  305. http://gcc.gnu.org/PR17465
   9044  306. http://gcc.gnu.org/PR17469
   9045  307. http://gcc.gnu.org/PR18138
   9046  308. http://gcc.gnu.org/PR15498
   9047  309. http://gcc.gnu.org/PR15747
   9048  310. http://gcc.gnu.org/PR16406
   9049  311. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.4
   9050  312. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.5
   9051  313. http://gcc.gnu.org/PR24688
   9052  314. http://gcc.gnu.org/PR17188
   9053  315. http://gcc.gnu.org/PR20187
   9054  316. http://gcc.gnu.org/PR21873
   9055  317. http://gcc.gnu.org/PR21899
   9056  318. http://gcc.gnu.org/PR22061
   9057  319. http://gcc.gnu.org/PR22208
   9058  320. http://gcc.gnu.org/PR22458
   9059  321. http://gcc.gnu.org/PR22589
   9060  322. http://gcc.gnu.org/PR24101
   9061  323. http://gcc.gnu.org/PR10611
   9062  324. http://gcc.gnu.org/PR13377
   9063  325. http://gcc.gnu.org/PR16002
   9064  326. http://gcc.gnu.org/PR17413
   9065  327. http://gcc.gnu.org/PR17609
   9066  328. http://gcc.gnu.org/PR17618
   9067  329. http://gcc.gnu.org/PR18124
   9068  330. http://gcc.gnu.org/PR18155
   9069  331. http://gcc.gnu.org/PR18177
   9070  332. http://gcc.gnu.org/PR18368
   9071  333. http://gcc.gnu.org/PR18378
   9072  334. http://gcc.gnu.org/PR18466
   9073  335. http://gcc.gnu.org/PR18512
   9074  336. http://gcc.gnu.org/PR18545
   9075  337. http://gcc.gnu.org/PR18738
   9076  338. http://gcc.gnu.org/PR18803
   9077  339. http://gcc.gnu.org/PR19004
   9078  340. http://gcc.gnu.org/PR19208
   9079  341. http://gcc.gnu.org/PR19253
   9080  342. http://gcc.gnu.org/PR19608
   9081  343. http://gcc.gnu.org/PR19884
   9082  344. http://gcc.gnu.org/PR20153
   9083  345. http://gcc.gnu.org/PR20563
   9084  346. http://gcc.gnu.org/PR20789
   9085  347. http://gcc.gnu.org/PR21336
   9086  348. http://gcc.gnu.org/PR21768
   9087  349. http://gcc.gnu.org/PR21853
   9088  350. http://gcc.gnu.org/PR21903
   9089  351. http://gcc.gnu.org/PR21983
   9090  352. http://gcc.gnu.org/PR21987
   9091  353. http://gcc.gnu.org/PR22153
   9092  354. http://gcc.gnu.org/PR22172
   9093  355. http://gcc.gnu.org/PR21286
   9094  356. http://gcc.gnu.org/PR22233
   9095  357. http://gcc.gnu.org/PR22508
   9096  358. http://gcc.gnu.org/PR22545
   9097  359. http://gcc.gnu.org/PR23528
   9098  360. http://gcc.gnu.org/PR23550
   9099  361. http://gcc.gnu.org/PR23586
   9100  362. http://gcc.gnu.org/PR23624
   9101  363. http://gcc.gnu.org/PR23639
   9102  364. http://gcc.gnu.org/PR23797
   9103  365. http://gcc.gnu.org/PR23965
   9104  366. http://gcc.gnu.org/PR24052
   9105  367. http://gcc.gnu.org/PR24580
   9106  368. http://gcc.gnu.org/PR24267
   9107  369. http://gcc.gnu.org/PR17810
   9108  370. http://gcc.gnu.org/PR17860
   9109  371. http://gcc/gnu.org/PR21709
   9110  372. http://gcc.gnu.org/PR21964
   9111  373. http://gcc.gnu.org/PR22167
   9112  374. http://gcc.gnu.org/PR22619
   9113  375. http://gcc.gnu.org/PR23241
   9114  376. http://gcc.gnu.org/PR23478
   9115  377. http://gcc.gnu.org/PR24470
   9116  378. http://gcc.gnu.org/PR24950
   9117  379. http://gcc.gnu.org/PR14400
   9118  380. http://gcc.gnu.org/PR14940
   9119  381. http://gcc.gnu.org/PR20239
   9120  382. http://gcc.gnu.org/PR15220
   9121  383. http://gcc.gnu.org/PR19275
   9122  384. http://gcc.gnu.org/PR21888
   9123  385. http://gcc.gnu.org/PR15342
   9124  386. http://gcc.gnu.org/PR23985
   9125  387. http://gcc.gnu.org/PR16719
   9126  388. http://gcc.gnu.org/PR21723
   9127  389. http://gcc.gnu.org/PR21841
   9128  390. http://gcc.gnu.org/PR23644
   9129  391. http://gcc.gnu.org/PR24718
   9130  392. http://gcc.gnu.org/PR18421
   9131  393. http://gcc.gnu.org/PR20621
   9132  394. http://gcc.gnu.org/PR18583
   9133  395. http://gcc.gnu.org/PR20191
   9134  396. http://gcc.gnu.org/PR22083
   9135  397. http://gcc.gnu.org/PR23070
   9136  398. http://gcc.gnu.org/PR23404
   9137  399. http://gcc.gnu.org/PR23539
   9138  400. http://gcc.gnu.org/PR24102
   9139  401. http://gcc.gnu.org/PR24465
   9140  402. http://gcc.gnu.org/PR19933
   9141  403. http://gcc.gnu.org/PR21889
   9142  404. http://gcc.gnu.org/PR19300
   9143  405. http://gcc.gnu.org/PR20301
   9144  406. http://gcc.gnu.org/PR20673
   9145  407. http://gcc.gnu.org/PR18582
   9146  408. http://gcc.gnu.org/PR19340
   9147  409. http://gcc.gnu.org/PR21716
   9148  410. http://gcc.gnu.org/PR24315
   9149  411. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6
   9150  412. http://gcc.gnu.org/onlinedocs/
   9151  413. mailto:gcc-help (a] gcc.gnu.org
   9152  414. mailto:gcc (a] gcc.gnu.org
   9153  415. http://gcc.gnu.org/lists.html
   9154  416. http://www.fsf.org/
   9155  417. http://gcc.gnu.org/about.html
   9156  418. http://validator.w3.org/check/referer
   9157 ======================================================================
   9158 http://gcc.gnu.org/gcc-3.3/index.html
   9159 
   9160                              GCC 3.3 Release Series
   9161 
   9162    May 03, 2005
   9163 
   9164    The [1]GNU project and the GCC developers are pleased to announce the
   9165    release of GCC 3.3.6.
   9166 
   9167    This release is a bug-fix release, containing fixes for regressions in
   9168    GCC 3.3.5 relative to previous releases of GCC.
   9169 
   9170    This release is the last of the series 3.3.x.
   9171 
   9172    The GCC 3.3 release series includes numerous [2]new features,
   9173    improvements, bug fixes, and other changes, thanks to an [3]amazing
   9174    group of volunteers.
   9175 
   9176 Release History
   9177 
   9178    GCC 3.3.6
   9179           May 3, 2005 ([4]changes)
   9180 
   9181    GCC 3.3.5
   9182           September 30, 2004 ([5]changes)
   9183 
   9184    GCC 3.3.4
   9185           May 31, 2004 ([6]changes)
   9186 
   9187    GCC 3.3.3
   9188           February 14, 2004 ([7]changes)
   9189 
   9190    GCC 3.3.2
   9191           October 16, 2003 ([8]changes)
   9192 
   9193    GCC 3.3.1
   9194           August 8, 2003 ([9]changes)
   9195 
   9196    GCC 3.3
   9197           May 14, 2003 ([10]changes)
   9198 
   9199 References and Acknowledgements
   9200 
   9201    GCC used to stand for the GNU C Compiler, but since the compiler
   9202    supports several other languages aside from C, it now stands for the
   9203    GNU Compiler Collection.
   9204 
   9205    A list of [11]successful builds is updated as new information becomes
   9206    available.
   9207 
   9208    The GCC developers would like to thank the numerous people that have
   9209    contributed new features, improvements, bug fixes, and other changes as
   9210    well as test results to GCC. This [12]amazing group of volunteers is
   9211    what makes GCC successful.
   9212 
   9213    For additional information about GCC please refer to the [13]GCC
   9214    project web site or contact the [14]GCC development mailing list.
   9215 
   9216    To obtain GCC please use [15]our mirror sites, or our CVS server.
   9217 
   9218 
   9219     For questions related to the use of GCC, please consult these web
   9220     pages and the [16]GCC manuals. If that fails, the
   9221     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   9222     web pages and the development of GCC are welcome on our developer
   9223     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
   9224     archives.
   9225 
   9226    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
   9227    distribution of this entire article is permitted in any medium,
   9228    provided this notice is preserved.
   9229 
   9230    These pages are [21]maintained by the GCC team. Last modified
   9231    2012-11-02[22].
   9232 
   9233 References
   9234 
   9235    1. http://www.gnu.org/
   9236    2. http://gcc.gnu.org/gcc-3.3/changes.html
   9237    3. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   9238    4. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
   9239    5. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.5
   9240    6. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.4
   9241    7. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.3
   9242    8. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.2
   9243    9. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.1
   9244   10. http://gcc.gnu.org/gcc-3.3/changes.html
   9245   11. http://gcc.gnu.org/gcc-3.3/buildstat.html
   9246   12. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   9247   13. http://gcc.gnu.org/index.html
   9248   14. mailto:gcc (a] gcc.gnu.org
   9249   15. http://gcc.gnu.org/mirrors.html
   9250   16. http://gcc.gnu.org/onlinedocs/
   9251   17. mailto:gcc-help (a] gcc.gnu.org
   9252   18. mailto:gcc (a] gcc.gnu.org
   9253   19. http://gcc.gnu.org/lists.html
   9254   20. http://www.fsf.org/
   9255   21. http://gcc.gnu.org/about.html
   9256   22. http://validator.w3.org/check/referer
   9257 ======================================================================
   9258 http://gcc.gnu.org/gcc-3.3/changes.html
   9259 
   9260                              GCC 3.3 Release Series
   9261                         Changes, New Features, and Fixes
   9262 
   9263    The latest release in the 3.3 release series is [1]GCC 3.3.6.
   9264 
   9265 Caveats
   9266 
   9267      * The preprocessor no longer accepts multi-line string literals. They
   9268        were deprecated in 3.0, 3.1, and 3.2.
   9269      * The preprocessor no longer supports the -A- switch when appearing
   9270        alone. -A- followed by an assertion is still supported.
   9271      * Support for all the systems [2]obsoleted in GCC 3.1 has been
   9272        removed from GCC 3.3. See below for a [3]list of systems which are
   9273        obsoleted in this release.
   9274      * Checking for null format arguments has been decoupled from the rest
   9275        of the format checking mechanism. Programs which use the format
   9276        attribute may regain this functionality by using the new [4]nonnull
   9277        function attribute. Note that all functions for which GCC has a
   9278        built-in format attribute, an appropriate built-in nonnull
   9279        attribute is also applied.
   9280      * The DWARF (version 1) debugging format has been deprecated and will
   9281        be removed in a future version of GCC. Version 2 of the DWARF
   9282        debugging format will continue to be supported for the foreseeable
   9283        future.
   9284      * The C and Objective-C compilers no longer accept the "Naming Types"
   9285        extension (typedef foo = bar); it was already unavailable in C++.
   9286        Code which uses it will need to be changed to use the "typeof"
   9287        extension instead: typedef typeof(bar) foo. (We have removed this
   9288        extension without a period of deprecation because it has caused the
   9289        compiler to crash since version 3.0 and no one noticed until very
   9290        recently. Thus we conclude it is not in widespread use.)
   9291      * The -traditional C compiler option has been removed. It was
   9292        deprecated in 3.1 and 3.2. (Traditional preprocessing remains
   9293        available.) The <varargs.h> header, used for writing variadic
   9294        functions in traditional C, still exists but will produce an error
   9295        message if used.
   9296      * GCC 3.3.1 automatically places zero-initialized variables in the
   9297        .bss section on some operating systems. Versions of GNU Emacs up to
   9298        (and including) 21.3 will not work correctly when using this
   9299        optimization; you can use -fno-zero-initialized-in-bss to disable
   9300        it.
   9301 
   9302 General Optimizer Improvements
   9303 
   9304      * A new scheme for accurately describing processor pipelines, the
   9305        [5]DFA scheduler, has been added.
   9306      * Pavel Nejedly, Charles University Prague, has contributed new file
   9307        format used by the edge coverage profiler (-fprofile-arcs).
   9308        The new format is robust and diagnoses common mistakes where
   9309        profiles from different versions (or compilations) of the program
   9310        are combined resulting in nonsensical profiles and slow code to
   9311        produced with profile feedback. Additionally this format allows
   9312        extra data to be gathered. Currently, overall statistics are
   9313        produced helping optimizers to identify hot spots of a program
   9314        globally replacing the old intra-procedural scheme and resulting in
   9315        better code. Note that the gcov tool from older GCC versions will
   9316        not be able to parse the profiles generated by GCC 3.3 and vice
   9317        versa.
   9318      * Jan Hubicka, SuSE Labs, has contributed a new superblock formation
   9319        pass enabled using -ftracer. This pass simplifies the control flow
   9320        of functions allowing other optimizations to do better job.
   9321        He also contributed the function reordering pass
   9322        (-freorder-functions) to optimize function placement using profile
   9323        feedback.
   9324 
   9325 New Languages and Language specific improvements
   9326 
   9327   C/ObjC/C++
   9328 
   9329      * The preprocessor now accepts directives within macro arguments. It
   9330        processes them just as if they had not been within macro arguments.
   9331      * The separate ISO and traditional preprocessors have been completely
   9332        removed. The front end handles either type of preprocessed output
   9333        if necessary.
   9334      * In C99 mode preprocessor arithmetic is done in the precision of the
   9335        target's intmax_t, as required by that standard.
   9336      * The preprocessor can now copy comments inside macros to the output
   9337        file when the macro is expanded. This feature, enabled using the
   9338        -CC option, is intended for use by applications which place
   9339        metadata or directives inside comments, such as lint.
   9340      * The method of constructing the list of directories to be searched
   9341        for header files has been revised. If a directory named by a -I
   9342        option is a standard system include directory, the option is
   9343        ignored to ensure that the default search order for system
   9344        directories and the special treatment of system header files are
   9345        not defeated.
   9346      * A few more [6]ISO C99 features now work correctly.
   9347      * A new function attribute, nonnull, has been added which allows
   9348        pointer arguments to functions to be specified as requiring a
   9349        non-null value. The compiler currently uses this information to
   9350        issue a warning when it detects a null value passed in such an
   9351        argument slot.
   9352      * A new type attribute, may_alias, has been added. Accesses to
   9353        objects with types with this attribute are not subjected to
   9354        type-based alias analysis, but are instead assumed to be able to
   9355        alias any other type of objects, just like the char type.
   9356 
   9357   C++
   9358 
   9359      * Type based alias analysis has been implemented for C++ aggregate
   9360        types.
   9361 
   9362   Objective-C
   9363 
   9364      * Generate an error if Objective-C objects are passed by value in
   9365        function and method calls.
   9366      * When -Wselector is used, check the whole list of selectors at the
   9367        end of compilation, and emit a warning if a @selector() is not
   9368        known.
   9369      * Define __NEXT_RUNTIME__ when compiling for the NeXT runtime.
   9370      * No longer need to include objc/objc-class.h to compile self calls
   9371        in class methods (NeXT runtime only).
   9372      * New -Wundeclared-selector option.
   9373      * Removed selector bloating which was causing object files to be 10%
   9374        bigger on average (GNU runtime only).
   9375      * Using at run time @protocol() objects has been fixed in certain
   9376        situations (GNU runtime only).
   9377      * Type checking has been fixed and improved in many situations
   9378        involving protocols.
   9379 
   9380   Java
   9381 
   9382      * The java.sql and javax.sql packages now implement the JDBC 3.0 (JDK
   9383        1.4) API.
   9384      * The JDK 1.4 assert facility has been implemented.
   9385      * The bytecode interpreter is now direct threaded and thus faster.
   9386 
   9387   Fortran
   9388 
   9389      * Fortran improvements are listed in [7]the Fortran documentation.
   9390 
   9391   Ada
   9392 
   9393      * Ada tasking now works with glibc 2.3.x threading libraries.
   9394 
   9395 New Targets and Target Specific Improvements
   9396 
   9397      * The following changes have been made to the HP-PA port:
   9398           + The port now defaults to scheduling for the PA8000 series of
   9399             processors.
   9400           + Scheduling support for the PA7300 processor has been added.
   9401           + The 32-bit port now supports weak symbols under HP-UX 11.
   9402           + The handling of initializers and finalizers has been improved
   9403             under HP-UX 11. The 64-bit port no longer uses collect2.
   9404           + Dwarf2 EH support has been added to the 32-bit GNU/Linux port.
   9405           + ABI fixes to correct the passing of small structures by value.
   9406      * The SPARC, HP-PA, SH4, and x86/pentium ports have been converted to
   9407        use the DFA processor pipeline description.
   9408      * The following NetBSD configurations for the SuperH processor family
   9409        have been added:
   9410           + SH3, big-endian, sh-*-netbsdelf*
   9411           + SH3, little-endian, shle-*-netbsdelf*
   9412           + SH5, SHmedia, big-endian, 32-bit default, sh5-*-netbsd*
   9413           + SH5, SHmedia, little-endian, 32-bit default, sh5le-*-netbsd*
   9414           + SH5, SHmedia, big-endian, 64-bit default, sh64-*-netbsd*
   9415           + SH5, SHmedia, little-endian, 64-bit default, sh64le-*-netbsd*
   9416      * The following changes have been made to the IA-32/x86-64 port:
   9417           + SSE2 and 3dNOW! intrinsics are now supported.
   9418           + Support for thread local storage has been added to the IA-32
   9419             and x86-64 ports.
   9420           + The x86-64 port has been significantly improved.
   9421      * The following changes have been made to the MIPS port:
   9422           + All configurations now accept the -mabi switch. Note that you
   9423             will need appropriate multilibs for this option to work
   9424             properly.
   9425           + ELF configurations will always pass an ABI flag to the
   9426             assembler, except when the MIPS EABI is selected.
   9427           + -mabi=64 no longer selects MIPS IV code.
   9428           + The -mcpu option, which was deprecated in 3.1 and 3.2, has
   9429             been removed from this release.
   9430           + -march now changes the core ISA level. In previous releases,
   9431             it would change the use of processor-specific extensions, but
   9432             would leave the core ISA unchanged. For example, mips64-elf
   9433             -march=r8000 will now generate MIPS IV code.
   9434           + Under most configurations, -mipsN now acts as a synonym for
   9435             -march.
   9436           + There are some new preprocessor macros to describe the -march
   9437             and -mtune settings. See the documentation of those options
   9438             for details.
   9439           + Support for the NEC VR-Series processors has been added. This
   9440             includes the 54xx, 5500, and 41xx series.
   9441           + Support for the Sandcraft sr71k processor has been added.
   9442      * The following changes have been made to the S/390 port:
   9443           + Support to build the Java runtime libraries has been added.
   9444             Java is now enabled by default on s390-*-linux* and
   9445             s390x-*-linux* targets.
   9446           + Multilib support for the s390x-*-linux* target has been added;
   9447             this allows to build 31-bit binaries using the -m31 option.
   9448           + Support for thread local storage has been added.
   9449           + Inline assembler code may now use the 'Q' constraint to
   9450             specify memory operands without index register.
   9451           + Various platform-specific performance improvements have been
   9452             implemented; in particular, the compiler now uses the BRANCH
   9453             ON COUNT family of instructions and makes more frequent use of
   9454             the TEST UNDER MASK family of instructions.
   9455      * The following changes have been made to the PowerPC port:
   9456           + Support for IBM Power4 processor added.
   9457           + Support for Motorola e500 SPE added.
   9458           + Support for AIX 5.2 added.
   9459           + Function and Data sections now supported on AIX.
   9460           + Sibcall optimizations added.
   9461      * The support for H8 Tiny is added to the H8/300 port with -mn.
   9462 
   9463 Obsolete Systems
   9464 
   9465    Support for a number of older systems has been declared obsolete in GCC
   9466    3.3. Unless there is activity to revive them, the next release of GCC
   9467    will have their sources permanently removed.
   9468 
   9469    All configurations of the following processor architectures have been
   9470    declared obsolete:
   9471      * Matsushita MN10200, mn10200-*-*
   9472      * Motorola 88000, m88k-*-*
   9473      * IBM ROMP, romp-*-*
   9474 
   9475    Also, some individual systems have been obsoleted:
   9476      * Alpha
   9477           + Interix, alpha*-*-interix*
   9478           + Linux libc1, alpha*-*-linux*libc1*
   9479           + Linux ECOFF, alpha*-*-linux*ecoff*
   9480      * ARM
   9481           + Generic a.out, arm*-*-aout*
   9482           + Conix, arm*-*-conix*
   9483           + "Old ABI," arm*-*-oabi
   9484           + StrongARM/COFF, strongarm-*-coff*
   9485      * HPPA (PA-RISC)
   9486           + Generic OSF, hppa1.0-*-osf*
   9487           + Generic BSD, hppa1.0-*-bsd*
   9488           + HP/UX versions 7, 8, and 9, hppa1.[01]-*-hpux[789]*
   9489           + HiUX, hppa*-*-hiux*
   9490           + Mach Lites, hppa*-*-lites*
   9491      * Intel 386 family
   9492           + Windows NT 3.x, i?86-*-win32
   9493      * MC68000 family
   9494           + HP systems, m68000-hp-bsd* and m68k-hp-bsd*
   9495           + Sun systems, m68000-sun-sunos*, m68k-sun-sunos*, and
   9496             m68k-sun-mach*
   9497           + AT&T systems, m68000-att-sysv*
   9498           + Atari systems, m68k-atari-sysv*
   9499           + Motorola systems, m68k-motorola-sysv*
   9500           + NCR systems, m68k-ncr-sysv*
   9501           + Plexus systems, m68k-plexus-sysv*
   9502           + Commodore systems, m68k-cbm-sysv*
   9503           + Citicorp TTI, m68k-tti-*
   9504           + Unos, m68k-crds-unos*
   9505           + Concurrent RTU, m68k-ccur-rtu*
   9506           + Linux a.out, m68k-*-linux*aout*
   9507           + Linux libc1, m68k-*-linux*libc1*
   9508           + pSOS, m68k-*-psos*
   9509      * MIPS
   9510           + Generic ECOFF, mips*-*-ecoff*
   9511           + SINIX, mips-sni-sysv4
   9512           + Orion RTEMS, mips64orion-*-rtems*
   9513      * National Semiconductor 32000
   9514           + OpenBSD, ns32k-*-openbsd*
   9515      * POWER (aka RS/6000) and PowerPC
   9516           + AIX versions 1, 2, and 3, rs6000-ibm-aix[123]*
   9517           + Bull BOSX, rs6000-bull-bosx
   9518           + Generic Mach, rs6000-*-mach*
   9519           + Generic SysV, powerpc*-*-sysv*
   9520           + Linux libc1, powerpc*-*-linux*libc1*
   9521      * Sun SPARC
   9522           + Generic a.out, sparc-*-aout*, sparclet-*-aout*,
   9523             sparclite-*-aout*, and sparc86x-*-aout*
   9524           + NetBSD a.out, sparc-*-netbsd*aout*
   9525           + Generic BSD, sparc-*-bsd*
   9526           + ChorusOS, sparc-*-chorusos*
   9527           + Linux a.out, sparc-*-linux*aout*
   9528           + Linux libc1, sparc-*-linux*libc1*
   9529           + LynxOS, sparc-*-lynxos*
   9530           + Solaris on HAL hardware, sparc-hal-solaris2*
   9531           + SunOS versions 3 and 4, sparc-*-sunos[34]*
   9532      * NEC V850
   9533           + RTEMS, v850-*-rtems*
   9534      * VAX
   9535           + VMS, vax-*-vms*
   9536 
   9537 Documentation improvements
   9538 
   9539 Other significant improvements
   9540 
   9541      * Almost all front-end dependencies in the compiler have been
   9542        separated out into a set of language hooks. This should make adding
   9543        a new front end clearer and easier.
   9544      * One effect of removing the separate preprocessor is a small
   9545        increase in the robustness of the compiler in general, and the
   9546        maintainability of target descriptions. Previously target-specific
   9547        built-in macros and others, such as __FAST_MATH__, had to be
   9548        handled with so-called specs that were hard to maintain. Often they
   9549        would fail to behave properly when conflicting options were
   9550        supplied on the command line, and define macros in the user's
   9551        namespace even when strict ISO compliance was requested.
   9552        Integrating the preprocessor has cleanly solved these issues.
   9553      * The Makefile suite now supports redirection of make install by
   9554        means of the variable DESTDIR.
   9555      __________________________________________________________________
   9556 
   9557 GCC 3.3
   9558 
   9559    Detailed release notes for the GCC 3.3 release follow.
   9560 
   9561   Bug Fixes
   9562 
   9563     bootstrap failures
   9564 
   9565      * [8]10140 cross compiler build failures: missing __mempcpy (DUP:
   9566        [9]10198,[10]10338)
   9567 
   9568     Internal compiler errors (multi-platform)
   9569 
   9570      * [11]3581 large string causes segmentation fault in cc1
   9571      * [12]4382 __builtin_{set,long}jmp with -O3 can crash the compiler
   9572      * [13]5533 (c++) ICE when processing std::accumulate(begin, end,
   9573        init, invalid_op)
   9574      * [14]6387 -fpic -gdwarf-2 -g1 combination gives ICE in dwarf2out
   9575      * [15]6412 (c++) ICE in retrieve_specialization
   9576      * [16]6620 (c++) partial template specialization causes an ICE
   9577        (segmentation fault)
   9578      * [17]6663 (c++) ICE with attribute aligned
   9579      * [18]7068 ICE with incomplete types
   9580      * [19]7083 (c++) ICE using -gstabs with dodgy class derivation
   9581      * [20]7647 (c++) ICE when data member has the name of the enclosing
   9582        class
   9583      * [21]7675 ICE in fixup_var_refs_1
   9584      * [22]7718 'complex' template instantiation causes ICE
   9585      * [23]8116 (c++) ICE in member template function
   9586      * [24]8358 (ada) Ada compiler accesses freed memory, crashes
   9587      * [25]8511 (c++) ICE: (hopefully) reproducible cc1plus segmentation
   9588        fault
   9589      * [26]8564 (c++) ICE in find_function_data, in function.c
   9590      * [27]8660 (c++) template overloading ICE in tsubst_expr, in cp/pt.c
   9591      * [28]8766 (c++) ICE after failed initialization of static template
   9592        variable
   9593      * [29]8803 ICE in instantiate_virtual_regs_1, in function.c
   9594      * [30]8846 (c++) ICE after diagnostic if fr_FR@euro locale is set
   9595      * [31]8906 (c++) ICE (Segmentation fault) when parsing nested-class
   9596        definition
   9597      * [32]9216 (c++) ICE on missing template parameter
   9598      * [33]9261 (c++) ICE in arg_assoc, in cp/decl2.c
   9599      * [34]9263 (fortran) ICE caused by invalid PARAMETER in implied DO
   9600        loop
   9601      * [35]9429 (c++) ICE in template instantiation with a pointered new
   9602        operator
   9603      * [36]9516 Internal error when using a big array
   9604      * [37]9600 (c++) ICE with typedefs in template class
   9605      * [38]9629 (c++) virtual inheritance segfault
   9606      * [39]9672 (c++) ICE: Error reporting routines re-entered
   9607      * [40]9749 (c++) ICE in write_expression on invalid function
   9608        prototype
   9609      * [41]9794 (fortran) ICE: floating point exception during constant
   9610        folding
   9611      * [42]9829 (c++) Missing colon in nested namespace usage causes ICE
   9612      * [43]9916 (c++) ICE with noreturn function in ?: statement
   9613      * [44]9936 ICE with local function and variable-length 2d array
   9614      * [45]10262 (c++) cc1plus crashes with large generated code
   9615      * [46]10278 (c++) ICE in parser for invalid code
   9616      * [47]10446 (c++) ICE on definition of nonexistent member function of
   9617        nested class in a class template
   9618      * [48]10451 (c++) ICE in grokdeclarator on spurious mutable
   9619        declaration
   9620      * [49]10506 (c++) ICE in build_new at cp/init.c with
   9621        -fkeep-inline-functions and multiple inheritance
   9622      * [50]10549 (c++) ICE in store_bit_field on bitfields that exceed the
   9623        precision of the declared type
   9624 
   9625     Optimization bugs
   9626 
   9627      * [51]2001 Inordinately long compile times in reload CSE regs
   9628      * [52]2391 Exponential compilation time explosion in combine
   9629      * [53]2960 Duplicate loop conditions even with -Os
   9630      * [54]4046 redundant conditional branch
   9631      * [55]6405 Loop-unrolling related performance regressions
   9632      * [56]6798 very long compile time with large case-statement
   9633      * [57]6871 const objects shouldn't be moved to .bss
   9634      * [58]6909 problem w/ -Os on modified loop-2c.c test case
   9635      * [59]7189 gcc -O2 -Wall does not print ``control reaches end of
   9636        non-void function'' warning
   9637      * [60]7642 optimization problem with signbit()
   9638      * [61]8634 incorrect code for inlining of memcpy under -O2
   9639      * [62]8750 Cygwin prolog generation erroneously emitting __alloca as
   9640        regular function call
   9641 
   9642     C front end
   9643 
   9644      * [63]2161 long if-else cascade overflows parser stack
   9645      * [64]4319 short accepted on typedef'd char
   9646      * [65]8602 incorrect line numbers in warning messages when using
   9647        inline functions
   9648      * [66]9177 -fdump-translation-unit: C front end deletes function_decl
   9649        AST nodes and breaks debugging dumps
   9650      * [67]9853 miscompilation of non-constant structure initializer
   9651 
   9652     c++ compiler and library
   9653 
   9654      * [68]45 legal template specialization code is rejected (DUP:
   9655        [69]3784)
   9656      * [70]764 lookup failure: friend operator and dereferencing a pointer
   9657        and templates (DUP: [71]5116)
   9658      * [72]2862 gcc accepts invalid explicit instantiation syntax (DUP:
   9659        2863)
   9660      * [73]3663 G++ doesn't check access control during template
   9661        instantiation
   9662      * [74]3797 gcc fails to emit explicit specialization of a template
   9663        member
   9664      * [75]3948 Two destructors are called when no copy destructor is
   9665        defined (ABI change)
   9666      * [76]4137 Conversion operator within template is not accepted
   9667      * [77]4361 bogus ambiguity taking the address of a member template
   9668      * [78]4802 g++ accepts illegal template code (access to private
   9669        member; DUP: [79]5837)
   9670      * [80]4803 inline function is used but never defined, and g++ does
   9671        not object
   9672      * [81]5094 Partial specialization cannot be friend?
   9673      * [82]5730 complex<double>::norm() -- huge slowdown from egcs-2.91.66
   9674      * [83]6713 Regression wrt 3.0.4: g++ -O2 leads to seg fault at run
   9675        time
   9676      * [84]7015 certain __asm__ constructs rejected
   9677      * [85]7086 compile time regression (quadratic behavior in
   9678        fixup_var_refs)
   9679      * [86]7099 G++ doesn't set the noreturn attribute on std::exit and
   9680        std::abort
   9681      * [87]7247 copy constructor missing when inlining enabled (invalid
   9682        optimization?)
   9683      * [88]7441 string array initialization compilation time regression
   9684        from seconds to minutes
   9685      * [89]7768 __PRETTY_FUNCTION__ for template destructor is wrong
   9686      * [90]7804 bad printing of floating point constant in warning message
   9687      * [91]8099 Friend classes and template specializations
   9688      * [92]8117 member function pointers and multiple inheritance
   9689      * [93]8205 using declaration and multiple inheritance
   9690      * [94]8645 unnecessary non-zero checks in stl_tree.h
   9691      * [95]8724 explicit destructor call for incomplete class allowed
   9692      * [96]8805 compile time regression with many member variables
   9693      * [97]8691 -O3 and -fno-implicit-templates are incompatible
   9694      * [98]8700 unhelpful error message for binding temp to reference
   9695      * [99]8724 explicit destructor call for incomplete class allowed
   9696      * [100]8949 numeric_limits<>::denorm_min() and is_iec559 problems
   9697      * [101]9016 Failure to consistently constant fold "constant" C++
   9698        objects
   9699      * [102]9053 g++ confused about ambiguity of overloaded function
   9700        templates
   9701      * [103]9152 undefined virtual thunks
   9702      * [104]9182 basic_filebuf<> does not report errors in codecvt<>::out
   9703      * [105]9297 data corruption due to codegen bug (when copying.)
   9704      * [106]9318 i/ostream::operator>>/<<(streambuf*) broken
   9705      * [107]9320 Incorrect usage of traits_type::int_type in stdio_filebuf
   9706      * [108]9400 bogus -Wshadow warning: shadowed declaration of this in
   9707        local classes
   9708      * [109]9424 i/ostream::operator>>/<<(streambuf*) drops characters
   9709      * [110]9425 filebuf::pbackfail broken (DUP: [111]9439)
   9710      * [112]9474 GCC freezes in compiling a weird code mixing <iostream>
   9711        and <iostream.h>
   9712      * [113]9548 Incorrect results from setf(ios::fixed) and precision(-1)
   9713        [114][DR 231]
   9714      * [115]9555 ostream inserters fail to set badbit on exception
   9715      * [116]9561 ostream inserters rethrow exception of wrong type
   9716      * [117]9563 ostream::sentry returns true after a failed preparation
   9717      * [118]9582 one-definition rule violation in std::allocator
   9718      * [119]9622 __PRETTY_FUNCTION__ incorrect in template destructors
   9719      * [120]9683 bug in initialization chains for static const variables
   9720        from template classes
   9721      * [121]9791 -Woverloaded-virtual reports hiding of destructor
   9722      * [122]9817 collate::compare doesn't handle nul characters
   9723      * [123]9825 filebuf::sputbackc breaks sbumpc
   9724      * [124]9826 operator>>(basic_istream, basic_string) fails to compile
   9725        with custom traits
   9726      * [125]9924 Multiple using statements for builtin functions not
   9727        allowed
   9728      * [126]9946 destructor is not called for temporary object
   9729      * [127]9964 filebuf::close() sometimes fails to close file
   9730      * [128]9988 filebuf::overflow writes EOF to file
   9731      * [129]10033 optimization breaks polymorphic references w/ typeid
   9732        operator
   9733      * [130]10097 filebuf::underflow drops characters
   9734      * [131]10132 filebuf destructor can throw exceptions
   9735      * [132]10180 gcc fails to warn about non-inlined function
   9736      * [133]10199 method parametrized by template does not work everywhere
   9737      * [134]10300 use of array-new (nothrow) in segfaults on NULL return
   9738      * [135]10427 Stack corruption with variable-length automatic arrays
   9739        and virtual destructors
   9740      * [136]10503 Compilation never stops in fixed_type_or_null
   9741 
   9742     Objective-C
   9743 
   9744      * [137]5956 selectors aren't matched properly when added to the
   9745        selector table
   9746 
   9747     Fortran compiler and library
   9748 
   9749      * [138]1832 list directed i/o overflow hangs, -fbounds-check doesn't
   9750        detect
   9751      * [139]3924 g77 generates code that is rejected by GAS if COFF debug
   9752        info requested
   9753      * [140]5634 doc: explain that configure --prefix=~/... does not work
   9754      * [141]6367 multiple repeat counts confuse namelist read into array
   9755      * [142]6491 Logical operations error on logicals when using
   9756        -fugly-logint
   9757      * [143]6742 Generation of C++ Prototype for FORTRAN and extern "C"
   9758      * [144]7113 Failure of g77.f-torture/execute/f90-intrinsic-bit.f -Os
   9759        on irix6.5
   9760      * [145]7236 OPEN(...,RECL=nnn,...) without ACCESS='DIRECT' should
   9761        assume a direct access file
   9762      * [146]7278 g77 "bug"; the executable misbehaves (with -O2
   9763        -fno-automatic)
   9764      * [147]7384 DATE_AND_TIME milliseconds field inactive on Windows
   9765      * [148]7388 Incorrect output with 0-based array of characters
   9766      * [149]8587 Double complex zero ** double precision number -> NaN
   9767        instead of zero
   9768      * [150]9038 -ffixed-line-length-none -x f77-cpp-input gives: Warning:
   9769        unknown register name line-length-none
   9770      * [151]10197 Direct access files not unformatted by default
   9771 
   9772     Java compiler and library
   9773 
   9774      * [152]6005 gcj fails to build rhug on alpha
   9775      * [153]6389 System.getProperty("") should always throw an
   9776        IllegalArgumentException
   9777      * [154]6576 java.util.ResourceBundle.getResource ignores locale
   9778      * [155]6652 new java.io.File("").getCanonicalFile() throws exception
   9779      * [156]7060 getMethod() doesn't search super interface
   9780      * [157]7073 bytecode interpreter gives wrong answer for interface
   9781        getSuperclass()
   9782      * [158]7180 possible bug in
   9783        javax.naming.spi.NamingManager.getPlusPath()
   9784      * [159]7416 java.security startup refs "GNU libgcj.security"
   9785      * [160]7570 Runtime.exec with null envp: child doesn't inherit parent
   9786        env (DUP: [161]7578)
   9787      * [162]7611 Internal error while compiling libjava with -O
   9788      * [163]7709 NullPointerException in _Jv_ResolvePoolEntry
   9789      * [164]7766 ZipInputStream.available returns 0 immediately after
   9790        construction
   9791      * [165]7785 Calendar.getTimeInMillis/setTimeInMillis should be public
   9792      * [166]7786 TimeZone.getDSTSavings() from JDK1.4 not implemented
   9793      * [167]8142 '$' in class names vs. dlopen 'dynamic string tokens'
   9794      * [168]8234 ZipInputStream chokes when InputStream.read() returns
   9795        small chunks
   9796      * [169]8415 reflection bug: exception info for Method
   9797      * [170]8481 java.Random.nextInt(int) may return negative
   9798      * [171]8593 Error reading GZIPped files with BufferedReader
   9799      * [172]8759 java.beans.Introspector has no flushCaches() or
   9800        flushFromCaches() methods
   9801      * [173]8997 spin() calls Thread.sleep
   9802      * [174]9253 on win32, java.io.File.listFiles("C:\\") returns pwd
   9803        instead of the root content of C:
   9804      * [175]9254 java::lang::Object::wait(), threads-win32.cc returns
   9805        wrong return codes
   9806      * [176]9271 Severe bias in java.security.SecureRandom
   9807 
   9808     Ada compiler and library
   9809 
   9810      * [177]6767 make gnatlib-shared fails on -laddr2line
   9811      * [178]9911 gnatmake fails to link when GCC configured with
   9812        --with-sjlj-exceptions=yes
   9813      * [179]10020 Can't bootstrap gcc on AIX with Ada enabled
   9814      * [180]10546 Ada tasking not working on Red Hat 9
   9815 
   9816     preprocessor
   9817 
   9818      * [181]7029 preprocessor should ignore #warning with -M
   9819 
   9820     ARM-specific
   9821 
   9822      * [182]2903 [arm] Optimization bug with long long arithmetic
   9823      * [183]7873 arm-linux-gcc fails when assigning address to a bit field
   9824 
   9825     FreeBSD-specific
   9826 
   9827      * [184]7680 float functions undefined in math.h/cmath with #define
   9828        _XOPEN_SOURCE
   9829 
   9830     HP-UX or HP-PA-specific
   9831 
   9832      * [185]8705 [HP-PA] ICE in emit_move_insn_1, in expr.c
   9833      * [186]9986 [HP-UX] Incorrect transformation of fputs_unlocked to
   9834        fputc_unlocked
   9835      * [187]10056 [HP-PA] ICE at -O2 when building c++ code from doxygen
   9836 
   9837     m68hc11-specific
   9838 
   9839      * [188]6744 Bad assembler code generated: reference to pseudo
   9840        register z
   9841      * [189]7361 Internal compiler error in reload_cse_simplify_operands,
   9842        in reload1.c
   9843 
   9844     MIPS-specific
   9845 
   9846      * [190]9496 [mips-linux] bug in optimizer?
   9847 
   9848     PowerPC-specific
   9849 
   9850      * [191]7067 -Os with -mcpu=powerpc optimizes for speed (?) instead of
   9851        space
   9852      * [192]8480 reload ICEs for LAPACK code on powerpc64-linux
   9853      * [193]8784 [AIX] Internal compiler error in simplify_gen_subreg
   9854      * [194]10315 [powerpc] ICE: in extract_insn, in recog.c
   9855 
   9856     SPARC-specific
   9857 
   9858      * [195]10267 (documentation) Wrong build instructions for
   9859        *-*-solaris2*
   9860 
   9861     x86-specific (Intel/AMD)
   9862 
   9863      * [196]7916 ICE in instantiate_virtual_register_1
   9864      * [197]7926 (c++) i486 instructions in header files make c++ programs
   9865        crash on i386
   9866      * [198]8555 ICE in gen_split_1231
   9867      * [199]8994 ICE with -O -march=pentium4
   9868      * [200]9426 ICE with -fssa -funroll-loops -fprofile-arcs
   9869      * [201]9806 ICE in inline assembly with -fPIC flag
   9870      * [202]10077 gcc -msse2 generates movd to move dwords between xmm
   9871        regs
   9872      * [203]10233 64-bit comparison only comparing bottom 32-bits
   9873      * [204]10286 type-punning doesn't work with __m64 and -O
   9874      * [205]10308 [x86] ICE with -O -fgcse or -O2
   9875      __________________________________________________________________
   9876 
   9877 GCC 3.3.1
   9878 
   9879   Bug Fixes
   9880 
   9881    This section lists the problem reports (PRs) from GCC's bug tracking
   9882    system that are known to be fixed in the 3.3.1 release. This list might
   9883    not be complete (that is, it is possible that some PRs that have been
   9884    fixed are not listed here).
   9885 
   9886     Bootstrap failures
   9887 
   9888      * [206]11272 [Solaris] make bootstrap fails while building libstdc++
   9889 
   9890     Internal compiler errors (multi-platform)
   9891 
   9892      * [207]5754 ICE on invalid nested template class
   9893      * [208]6597 ICE in set_mem_alias_set compiling Qt with -O2 on ia64
   9894        and --enable-checking
   9895      * [209]6949 (c++) ICE in tsubst_decl, in cp/pt.c
   9896      * [210]7053 (c++) ICE when declaring a function already defined as a
   9897        friend method of a template class
   9898      * [211]8164 (c++) ICE when using different const expressions as
   9899        template parameter
   9900      * [212]8384 (c++) ICE in is_base_type, in dwarf2out.c
   9901      * [213]9559 (c++) ICE with invalid initialization of a static const
   9902      * [214]9649 (c++) ICE in finish_member_declaration, in cp/semantics.c
   9903        when redeclaring a static member variable
   9904      * [215]9864 (fortran) ICE in add_abstract_origin_attribute, in
   9905        dwarfout.c with -g -O -finline-functions
   9906      * [216]10432 (c++) ICE in poplevel, in cp/decl.c
   9907      * [217]10475 ICE in subreg_highpart_offset for code with long long
   9908      * [218]10635 (c++) ICE when dereferencing an incomplete type casted
   9909        from a void pointer
   9910      * [219]10661 (c++) ICE in instantiate_decl, in cp/pt.c while
   9911        instantiating static member variables
   9912      * [220]10700 ICE in copy_to_mode_reg on 64-bit targets
   9913      * [221]10712 (c++) ICE in constructor_name_full, in cp/decl2.c
   9914      * [222]10796 (c++) ICE when defining an enum with two values: -1 and
   9915        MAX_INT_64BIT
   9916      * [223]10890 ICE in merge_assigned_reloads building Linux 2.4.2x
   9917        sched.c
   9918      * [224]10939 (c++) ICE with template code
   9919      * [225]10956 (c++) ICE when specializing a template member function
   9920        of a template class, in tsubst, in cp/pt.c
   9921      * [226]11041 (c++) ICE: const myclass &x = *x; (when operator*()
   9922        defined)
   9923      * [227]11059 (c++) ICE with empty union
   9924      * [228]11083 (c++) ICE in commit_one_edge_insertion, in cfgrtl.c with
   9925        -O2 -fnon-call-exceptions
   9926      * [229]11105 (c++) ICE in mangle_conv_op_name_for_type
   9927      * [230]11149 (c++) ICE on error when instantiation with call function
   9928        of a base type
   9929      * [231]11228 (c++) ICE on new-expression using array operator new and
   9930        default-initialization
   9931      * [232]11282 (c++) Infinite memory usage after syntax error
   9932      * [233]11301 (fortran) ICE with -fno-globals
   9933      * [234]11308 (c++) ICE when using an enum type name as if it were a
   9934        class or namespace
   9935      * [235]11473 (c++) ICE with -gstabs when empty struct inherits from
   9936        an empty struct
   9937      * [236]11503 (c++) ICE when instantiating template with ADDR_EXPR
   9938      * [237]11513 (c++) ICE in push_template_decl_real, in cp/pt.c:
   9939        template member functions
   9940 
   9941     Optimization bugs
   9942 
   9943      * [238]11198 -O2 -frename-registers generates wrong code (aliasing
   9944        problem)
   9945      * [239]11304 Wrong code production with -fomit-frame-pointer
   9946      * [240]11381 volatile memory access optimized away
   9947      * [241]11536 [strength-reduce] -O2 optimization produces wrong code
   9948      * [242]11557 constant folding bug generates wrong code
   9949 
   9950     C front end
   9951 
   9952      * [243]5897 No warning for statement after return
   9953      * [244]11279 DWARF-2 output mishandles large enums
   9954 
   9955     Preprocessor bugs
   9956 
   9957      * [245]11022 no warning for non-compatible macro redefinition
   9958 
   9959     C++ compiler and library
   9960 
   9961      * [246]2330 static_cast<>() to a private base is allowed
   9962      * [247]5388 Incorrect message "operands to ?: have different types"
   9963      * [248]5390 Libiberty fails to demangle multi-digit template
   9964        parameters
   9965      * [249]7877 Incorrect parameter passing to specializations of member
   9966        function templates
   9967      * [250]9393 Anonymous namespaces and compiling the same file twice
   9968      * [251]10032 -pedantic converts some errors to warnings
   9969      * [252]10468 const typeof(x) is non-const, but only in templates
   9970      * [253]10527 confused error message with "new int()" parameter
   9971        initializer
   9972      * [254]10679 parameter MIN_INLINE_INSNS is not honored
   9973      * [255]10682 gcc chokes on a typedef for an enum inside a class
   9974        template
   9975      * [256]10689 pow(std::complex(0),1/3) returns (nan, nan) instead of
   9976        0.
   9977      * [257]10845 template member function (with nested template as
   9978        parameter) cannot be called anymore if another unrelated template
   9979        member function is defined
   9980      * [258]10849 Cannot define an out-of-class specialization of a
   9981        private nested template class
   9982      * [259]10888 Suppress -Winline warnings for system headers
   9983      * [260]10929 -Winline warns about functions for which no definition
   9984        is visible
   9985      * [261]10931 valid conversion static_cast<const unsigned
   9986        int&>(lvalue-of-type-int) is rejected
   9987      * [262]10940 Bad code with explicit specialization
   9988      * [263]10968 If member function implicitly instantiated, explicit
   9989        instantiation of class fails to instantiate it
   9990      * [264]10990 Cannot convert with dynamic_cast<> to a private base
   9991        class from within a member function
   9992      * [265]11039 Bad interaction between implicit typename deprecation
   9993        and friendship
   9994      * [266]11062 (libstdc++) avoid __attribute__ ((unused)); say
   9995        "__unused__" instead
   9996      * [267]11095 C++ iostream manipulator causes segfault when called
   9997        with negative argument
   9998      * [268]11098 g++ doesn't emit complete debugging information for
   9999        local variables in destructors
   10000      * [269]11137 GNU/Linux shared library constructors not called unless
   10001        there's one global object
   10002      * [270]11154 spurious ambiguity report for template class
   10003        specialization
   10004      * [271]11329 Compiler cannot find user defined implicit typecast
   10005      * [272]11332 Spurious error with casts in ?: expression
   10006      * [273]11431 static_cast behavior with subclasses when default
   10007        constructor available
   10008      * [274]11528 money_get facet does not accept "$.00" as valid
   10009      * [275]11546 Type lookup problems in out-of-line definition of a
   10010        class doubly nested from a template class
   10011      * [276]11567 C++ code containing templated member function with same
   10012        name as pure virtual member function results in linking failure
   10013      * [277]11645 Failure to deal with using and private inheritance
   10014 
   10015     Java compiler and library
   10016 
   10017      * [278]5179 Qualified static field access doesn't initialize its
   10018        class
   10019      * [279]8204 gcj -O2 to native reorders certain instructions
   10020        improperly
   10021      * [280]10838 java.io.ObjectInputStream syntax error
   10022      * [281]10886 The RMI registry that comes with GCJ does not work
   10023        correctly
   10024      * [282]11349 JNDI URL context factories not located correctly
   10025 
   10026     x86-specific (Intel/AMD)
   10027 
   10028      * [283]4823 ICE on inline assembly code
   10029      * [284]8878 miscompilation with -O and SSE
   10030      * [285]9815 (c++ library) atomicity.h - fails to compile with -O3
   10031        -masm=intel
   10032      * [286]10402 (inline assembly) [x86] ICE in merge_assigned_reloads,
   10033        in reload1.c
   10034      * [287]10504 ICE with SSE2 code and -O3 -mcpu=pentium4 -msse2
   10035      * [288]10673 ICE for x86-64 on freebsd libc vfprintf.c source
   10036      * [289]11044 [x86] out of range loop instructions for FP code on K6
   10037      * [290]11089 ICE: instantiate_virtual_regs_lossage while using SSE
   10038        built-ins
   10039      * [291]11420 [x86_64] gcc generates invalid asm code when "-O -fPIC"
   10040        is used
   10041 
   10042     SPARC- or Solaris- specific
   10043 
   10044      * [292]9362 solaris 'as' dies when fed .s and "-gstabs"
   10045      * [293]10142 [SPARC64] gcc produces wrong code when passing
   10046        structures by value
   10047      * [294]10663 New configure check aborts with Sun tools.
   10048      * [295]10835 combinatorial explosion in scheduler on HyperSPARC
   10049      * [296]10876 ICE in calculate_giv_inc when building KDE
   10050      * [297]10955 wrong code at -O3 for structure argument in context of
   10051        structure return
   10052      * [298]11018 -mcpu=ultrasparc busts tar-1.13.25
   10053      * [299]11556 [sparc64] ICE in gen_reg_rtx() while compiling 2.6.x
   10054        Linux kernel
   10055 
   10056     ia64 specific
   10057 
   10058      * [300]10907 gcc violates the ia64 ABI (GP must be preserved)
   10059      * [301]11320 scheduler bug (in machine depended reorganization pass)
   10060      * [302]11599 bug with conditional and __builtin_prefetch
   10061 
   10062     PowerPC specific
   10063 
   10064      * [303]9745 [powerpc] gcc mis-compiles libmcrypt (alias problem
   10065        during loop)
   10066      * [304]10871 error in rs6000_stack_info save_size computation
   10067      * [305]11440 gcc mis-compiles c++ code (libkhtml) with -O2, -fno-gcse
   10068        cures it
   10069 
   10070     m68k-specific
   10071 
   10072      * [306]7594 [m68k] ICE on legal code associated with simplify-rtx
   10073      * [307]10557 [m68k] ICE in subreg_offset_representable_p
   10074      * [308]11054 [m68k] ICE in reg_overlap_mentioned_p
   10075 
   10076     ARM-specific
   10077 
   10078      * [309]10834 [arm] GCC 3.3 still generates incorrect instructions for
   10079        functions with __attribute__ ((interrupt ("IRQ")))
   10080      * [310]10842 [arm] Clobbered link register is copied to pc under
   10081        certain circumstances
   10082      * [311]11052 [arm] noce_process_if_block() can lose REG_INC notes
   10083      * [312]11183 [arm] ICE in change_address_1 (3.3) / subreg_hard_regno
   10084        (3.4)
   10085 
   10086     MIPS-specific
   10087 
   10088      * [313]11084 ICE in propagate_one_insn, in flow.c
   10089 
   10090     SH-specific
   10091 
   10092      * [314]10331 can't compile c++ part of gcc cross compiler for sh-elf
   10093      * [315]10413 [SH] ICE in reload_cse_simplify_operands, in reload1.c
   10094      * [316]11096 i686-linux to sh-linux cross compiler fails to compile
   10095        C++ files
   10096 
   10097     GNU/Linux (or Hurd?) specific
   10098 
   10099      * [317]2873 Bogus fixinclude of stdio.h from glibc 2.2.3
   10100 
   10101     UnixWare specific
   10102 
   10103      * [318]3163 configure bug: gcc/aclocal.m4 mmap test fails on UnixWare
   10104        7.1.1
   10105 
   10106     Cygwin (or mingw) specific
   10107 
   10108      * [319]5287 ICE with dllimport attribute
   10109      * [320]10148 [MingW/CygWin] Compiler dumps core
   10110 
   10111     DJGPP specific
   10112 
   10113      * [321]8787 GCC fails to emit .intel_syntax when invoked with
   10114        -masm=intel on DJGPP
   10115 
   10116     Darwin (and MacOS X) specific
   10117 
   10118      * [322]10900 trampolines crash
   10119 
   10120     Documentation
   10121 
   10122      * [323]1607 (c++) Format attributes on methods undocumented
   10123      * [324]4252 Invalid option `-fdump-translation-unit'
   10124      * [325]4490 Clarify restrictions on -m96bit-long-double,
   10125        -m128bit-long-double
   10126      * [326]10355 document an issue with regparm attribute on some systems
   10127        (e.g. Solaris)
   10128      * [327]10726 (fortran) Documentation for function "IDate Intrinsic
   10129        (Unix)" is wrong
   10130      * [328]10805 document bug in old version of Sun assembler
   10131      * [329]10815 warn against GNU binutils on AIX
   10132      * [330]10877 document need for newer binutils on i?86-*-linux-gnu
   10133      * [331]11280 Manual incorrect with respect to -freorder-blocks
   10134      * [332]11466 Document -mlittle-endian and its restrictions for the
   10135        sparc64 port
   10136 
   10137     Testsuite bugs (compiler itself is not affected)
   10138 
   10139      * [333]10737 newer bison causes g++.dg/parse/crash2.C to incorrectly
   10140        report failure
   10141      * [334]10810 gcc-3.3 fails make check: buffer overrun in
   10142        test_demangle.c
   10143      __________________________________________________________________
   10144 
   10145 GCC 3.3.2
   10146 
   10147   Bug Fixes
   10148 
   10149    This section lists the problem reports (PRs) from [335]GCC's bug
   10150    tracking system that are known to be fixed in the 3.3.2 release. This
   10151    list might not be complete (that is, it is possible that some PRs that
   10152    have been fixed are not listed here).
   10153 
   10154     Bootstrap failures and problems
   10155 
   10156      * [336]8336 [SCO5] bootstrap config still tries to use COFF options
   10157      * [337]9330 [alpha-osf] Bootstrap failure on Compaq Tru64 with
   10158        --enable-threads=posix
   10159      * [338]9631 [hppa64-linux] gcc-3.3 fails to bootstrap
   10160      * [339]9877 fixincludes makes a bad sys/byteorder.h on svr5 (UnixWare
   10161        7.1.1)
   10162      * [340]11687 xstormy16-elf build fails in libf2c
   10163      * [341]12263 [SGI IRIX] bootstrap fails during compile of
   10164        libf2c/libI77/backspace.c
   10165      * [342]12490 buffer overflow in scan-decls.c (during Solaris 9
   10166        fix-header processing)
   10167 
   10168     Internal compiler errors (multi-platform)
   10169 
   10170      * [343]7277 Casting integers to vector types causes ICE
   10171      * [344]7939 (c++) ICE on invalid function template specialization
   10172      * [345]11063 (c++) ICE on parsing initialization list of const array
   10173        member
   10174      * [346]11207 ICE with negative index in array element designator
   10175      * [347]11522 (fortran) g77 dwarf-2 ICE in
   10176        add_abstract_origin_attribute
   10177      * [348]11595 (c++) ICE on duplicate label definition
   10178      * [349]11646 (c++) ICE in commit_one_edge_insertion with
   10179        -fnon-call-exceptions -fgcse -O
   10180      * [350]11665 ICE in struct initializer when taking address
   10181      * [351]11852 (c++) ICE with bad struct initializer.
   10182      * [352]11878 (c++) ICE in cp_expr_size
   10183      * [353]11883 ICE with any -O on mercury-generated C code
   10184      * [354]11991 (c++) ICE in cxx_incomplete_type_diagnostic, in
   10185        cp/typeck2.c when applying typeid operator to template template
   10186        parameter
   10187      * [355]12146 ICE in lookup_template_function, in cp/pt.c
   10188      * [356]12215 ICE in make_label_edge with -fnon-call-exceptions
   10189        -fno-gcse -O2
   10190      * [357]12369 (c++) ICE with templates and friends
   10191      * [358]12446 ICE in emit_move_insn on complicated array reference
   10192      * [359]12510 ICE in final_scan_insn
   10193      * [360]12544 ICE with large parameters used in nested functions
   10194 
   10195     C and optimization bugs
   10196 
   10197      * [361]9862 spurious warnings with -W -finline-functions
   10198      * [362]10962 lookup_field is a linear search on a linked list (can be
   10199        slow if large struct)
   10200      * [363]11370 -Wunreachable-code gives false complaints
   10201      * [364]11637 invalid assembly with -fnon-call-exceptions
   10202      * [365]11885 Problem with bitfields in packed structs
   10203      * [366]12082 Inappropriate unreachable code warnings
   10204      * [367]12180 Inline optimization fails for variadic function
   10205      * [368]12340 loop unroller + gcse produces wrong code
   10206 
   10207     C++ compiler and library
   10208 
   10209      * [369]3907 nested template parameter collides with member name
   10210      * [370]5293 confusing message when binding a temporary to a reference
   10211      * [371]5296 [DR115] Pointers to functions and to template functions
   10212        behave differently in deduction
   10213      * [372]7939 ICE on function template specialization
   10214      * [373]8656 Unable to assign function with __attribute__ and pointer
   10215        return type to an appropriate variable
   10216      * [374]10147 Confusing error message for invalid template function
   10217        argument
   10218      * [375]11400 std::search_n() makes assumptions about Size parameter
   10219      * [376]11409 issues with using declarations, overloading, and
   10220        built-in functions
   10221      * [377]11740 ctype<wchar_t>::do_is(mask, wchar_t) doesn't handle
   10222        multiple bits in mask
   10223      * [378]11786 operator() call on variable in other namespace not
   10224        recognized
   10225      * [379]11867 static_cast ignores ambiguity
   10226      * [380]11928 bug with conversion operators that are typedefs
   10227      * [381]12114 Uninitialized memory accessed in dtor
   10228      * [382]12163 static_cast + explicit constructor regression
   10229      * [383]12181 Wrong code with comma operator and c++
   10230      * [384]12236 regparm and fastcall messes up parameters
   10231      * [385]12266 incorrect instantiation of unneeded template during
   10232        overload resolution
   10233      * [386]12296 istream::peek() doesn't set eofbit
   10234      * [387]12298 [sjlj exceptions] Stack unwind destroys
   10235        not-yet-constructed object
   10236      * [388]12369 ICE with templates and friends
   10237      * [389]12337 apparently infinite loop in g++
   10238      * [390]12344 stdcall attribute ignored if function returns a pointer
   10239      * [391]12451 missing(late) class forward declaration in cxxabi.h
   10240      * [392]12486 g++ accepts invalid use of a qualified name
   10241 
   10242     x86 specific (Intel/AMD)
   10243 
   10244      * [393]8869 [x86 MMX] ICE with const variable optimization and MMX
   10245        builtins
   10246      * [394]9786 ICE in fixup_abnormal_edges with -fnon-call-exceptions
   10247        -O2
   10248      * [395]11689 g++3.3 emits un-assembleable code for k6 architecture
   10249      * [396]12116 [k6] Invalid assembly output values with X-MAME code
   10250      * [397]12070 ICE converting between double and long double with
   10251        -msoft-float
   10252 
   10253     ia64-specific
   10254 
   10255      * [398]11184 [ia64 hpux] ICE on __builtin_apply building libobjc
   10256      * [399]11535 __builtin_return_address may not work on ia64
   10257      * [400]11693 [ia64] ICE in gen_nop_type
   10258      * [401]12224 [ia64] Thread-local storage doesn't work
   10259 
   10260     PowerPC-specific
   10261 
   10262      * [402]11087 [powerpc64-linux] GCC miscompiles raid1.c from linux
   10263        kernel
   10264      * [403]11319 loop miscompiled on ppc32
   10265      * [404]11949 ICE Compiler segfault with ffmpeg -maltivec code
   10266 
   10267     SPARC-specific
   10268 
   10269      * [405]11662 wrong code for expr. with cast to long long and
   10270        exclusive or
   10271      * [406]11965 invalid assembler code for a shift < 32 operation
   10272      * [407]12301 (c++) stack corruption when a returned expression throws
   10273        an exception
   10274 
   10275     Alpha-specific
   10276 
   10277      * [408]11717 [alpha-linux] unrecognizable insn compiling for.c of
   10278        kernel 2.4.22-pre8
   10279 
   10280     HPUX-specific
   10281 
   10282      * [409]11313 problem with #pragma weak and static inline functions
   10283      * [410]11712 __STDC_EXT__ not defined for C++ by default anymore?
   10284 
   10285     Solaris specific
   10286 
   10287      * [411]12166 Profiled programs crash if PROFDIR is set
   10288 
   10289     Solaris-x86 specific
   10290 
   10291      * [412]12101 i386 Solaris no longer works with GNU as?
   10292 
   10293     Miscellaneous embedded target-specific bugs
   10294 
   10295      * [413]10988 [m32r-elf] wrong blockmove code with -O3
   10296      * [414]11805 [h8300-unknown-coff] [H8300] ICE for simple code with
   10297        -O2
   10298      * [415]11902 [sh4] spec file improperly inserts rpath even when none
   10299        needed
   10300      * [416]11903 [sh4] -pthread fails to link due to error in spec file
   10301        on sh4
   10302      __________________________________________________________________
   10303 
   10304 GCC 3.3.3
   10305 
   10306   Minor features
   10307 
   10308    In addition to the bug fixes documented below, this release contains
   10309    few minor features such as:
   10310      * Support for --with-sysroot
   10311      * Support for automatic detection of executable stacks
   10312      * Support for SSE3 instructions
   10313      * Support for thread local storage debugging under GDB on S390
   10314 
   10315   Bug Fixes
   10316 
   10317    This section lists the problem reports (PRs) from [417]GCC's bug
   10318    tracking system that are known to be fixed in the 3.3.3 release. This
   10319    list might not be complete (that is, it is possible that some PRs that
   10320    have been fixed are not listed here).
   10321 
   10322     Bootstrap failures and issues
   10323 
   10324      * [418]11890 Building cross gcc-3.3.1 for sparc-sun-solaris2.6 fails
   10325      * [419]12399 boehm-gc fails (when building a cross compiler): libtool
   10326        unable to infer tagged configuration
   10327      * [420]13068 mklibgcc.in doesn't handle multi-level multilib
   10328        subdirectories properly
   10329 
   10330     Internal compiler errors (multi-platform)
   10331 
   10332      * [421]10060 ICE (stack overflow) on huge file (300k lines) due to
   10333        recursive behaviour of copy_rtx_if_shared, in emit_rtl.c
   10334      * [422]10555 (c++) ICE on undefined template argument
   10335      * [423]10706 (c++) ICE in mangle_class_name_for_template
   10336      * [424]11496 (fortran) error in flow_loops_find when -funroll-loops
   10337        active
   10338      * [425]11741 ICE in pre_insert_copy_insn, in gcse.c
   10339      * [426]12440 GCC crashes during compilation of quicktime4linux 2.0.0
   10340      * [427]12632 (fortran) -fbounds-check ICE
   10341      * [428]12712 (c++) ICE on short legit C++ code fragment with gcc
   10342        3.3.2
   10343      * [429]12726 (c++) ICE (segfault) on trivial code
   10344      * [430]12890 (c++) ICE on compilation of class with throwing method
   10345      * [431]12900 (c++) ICE in rtl_verify_flow_info_1
   10346      * [432]13060 (fortran) ICE in fixup_var_refs_1, in function.c on
   10347        correct code with -O2 -fno-force-mem
   10348      * [433]13289 (c++) ICE in regenerate_decl_from_template on recursive
   10349        template
   10350      * [434]13318 ICE: floating point exception in the loop optimizer
   10351      * [435]13392 (c++) ICE in convert_from_eh_region_ranges_1, in
   10352        except.c
   10353      * [436]13574 (c++) invalid array default initializer in class lets
   10354        gcc consume all memory and die
   10355      * [437]13475 ICE on SIMD variables with partial value initialization
   10356      * [438]13797 (c++) ICE on invalid template parameter
   10357      * [439]13824 (java) gcj SEGV with simple .java program
   10358 
   10359     C and optimization bugs
   10360 
   10361      * [440]8776 loop invariants are not removed (most likely)
   10362      * [441]10339 [sparc,ppc,ppc64] Invalid optimization: replacing
   10363        strncmp by memcmp
   10364      * [442]11350 undefined labels with -Os -fPIC
   10365      * [443]12826 Optimizer removes reference through volatile pointer
   10366      * [444]12500 stabs debug info: void no longer a predefined / builtin
   10367        type
   10368      * [445]12941 builtin-bitops-1.c miscompilation (latent bug)
   10369      * [446]12953 tree inliner bug (in inline_forbidden_p) and fix
   10370      * [447]13041 linux-2.6/sound/core/oss/rate.c miscompiled
   10371      * [448]13507 spurious printf format warning
   10372      * [449]13382 Type information for const pointer disappears during
   10373        optimization.
   10374      * [450]13394 noreturn attribute ignored on recursive invokation
   10375      * [451]13400 Compiled code crashes storing to read-only location
   10376      * [452]13521 Endless loop in calculate_global_regs_live
   10377 
   10378     C++ compiler and library
   10379 
   10380    Some of the bug fixes in this list were made to implement decisions
   10381    that the ISO C++ standards committee has made concerning several defect
   10382    reports (DRs). Links in the list below point to detailed discussion of
   10383    the relevant defect report.
   10384      * [453]2094 unimplemented: use of `ptrmem_cst' in template type
   10385        unification
   10386      * [454]2294 using declaration confusion
   10387      * [455]5050 template instantiation depth exceeds limit: recursion
   10388        problem?
   10389      * [456]9371 Bad exception handling in
   10390        i/ostream::operator>>/<<(streambuf*)
   10391      * [457]9546 bad exception handling in ostream members
   10392      * [458]10081 basic_ios::_M_cache_locale leaves NULL members in the
   10393        face of unknown locales
   10394      * [459]10093 [460][DR 61] Setting failbit in exceptions doesn't work
   10395      * [461]10095 istream::operator>>(int&) sets ios::badbit when
   10396        ios::failbit is set.
   10397      * [462]11554 Warning about reordering of initializers doesn't mention
   10398        location of constructor
   10399      * [463]12297 istream::sentry::sentry() handles eof() incorrectly.
   10400      * [464]12352 Exception safety problems in src/localename.cc
   10401      * [465]12438 Memory leak in locale::combine()
   10402      * [466]12540 Memory leak in locale::locale(const char*)
   10403      * [467]12594 DRs [468]60 [TC] and [469]63 [TC] not implemented
   10404      * [470]12657 Resolution of [471]DR 292 (WP) still unimplemented
   10405      * [472]12696 memory eating infinite loop in diagnostics (error
   10406        recovery problem)
   10407      * [473]12815 Code compiled with optimization behaves unexpectedly
   10408      * [474]12862 Conflicts between typedefs/enums and namespace member
   10409        declarations
   10410      * [475]12926 Wrong value after assignment in initialize list using
   10411        bit-fields
   10412      * [476]12967 Resolution of [477]DR 300 [WP] still unimplemented
   10413      * [478]12971 Resolution of [479]DR 328 [WP] still unimplemented
   10414      * [480]13007 basic_streambuf::pubimbue, imbue wrong
   10415      * [481]13009 Implicitly-defined assignment operator writes to wrong
   10416        memory
   10417      * [482]13057 regparm attribute not applied to destructor
   10418      * [483]13070 -Wformat option ignored in g++
   10419      * [484]13081 forward template declarations in <complex> let inlining
   10420        fail
   10421      * [485]13239 Assertion does not seem to work correctly anymore
   10422      * [486]13262 "xxx is private within this context" when initializing a
   10423        self-contained template class
   10424      * [487]13290 simple typo in concept checking for std::generate_n
   10425      * [488]13323 Template code does not compile in presence of typedef
   10426      * [489]13369 __verify_grouping (and __add_grouping?) not correct
   10427      * [490]13371 infinite loop with packed struct and inlining
   10428      * [491]13445 Template argument replacement "dereferences" a typedef
   10429      * [492]13461 Fails to access protected-ctor from public constant
   10430      * [493]13462 Non-standard-conforming type set::pointer
   10431      * [494]13478 gcc uses wrong constructor to initialize a const
   10432        reference
   10433      * [495]13544 "conflicting types" for enums in different scopes
   10434      * [496]13650 string::compare should not (always) use
   10435        traits_type::length()
   10436      * [497]13683 bogus warning about passing non-PODs through ellipsis
   10437      * [498]13688 Derived class is denied access to protected base class
   10438        member class
   10439      * [499]13774 Member variable cleared in virtual multiple inheritance
   10440        class
   10441      * [500]13884 Protect sstream.tcc from extern template use
   10442 
   10443     Java compiler and library
   10444 
   10445      * [501]10746 [win32] garbage collection crash in GCJ
   10446 
   10447     Objective-C compiler and library
   10448 
   10449      * [502]11433 Crash due to dereferencing null pointer when querying
   10450        protocol
   10451 
   10452     Fortran compiler and library
   10453 
   10454      * [503]12633 logical expression gives incorrect result with
   10455        -fugly-logint option
   10456      * [504]13037 [gcse-lm] g77 generates incorrect code
   10457      * [505]13213 Hex constant problem when compiling with -fugly-logint
   10458        and -ftypeless-boz
   10459 
   10460     x86-specific (Intel/AMD)
   10461 
   10462      * [506]4490 ICE with -m128bit-long-double
   10463      * [507]12292 [x86_64] ICE: RTL check: expected code `const_int', have
   10464        `reg' in make_field_assignment, in combine.c
   10465      * [508]12441 ICE: can't find a register to spill
   10466      * [509]12943 array static-init failure under -fpic, -fPIC
   10467      * [510]13608 Incorrect code with -O3 -ffast-math
   10468 
   10469     PowerPC-specific
   10470 
   10471      * [511]11598 testcase gcc.dg/20020118-1.c fails runtime check of
   10472        __attribute__((aligned(16)))
   10473      * [512]11793 ICE in extract_insn, in recog.c (const_vector's)
   10474      * [513]12467 vmsumubm emitted when vmsummbm appropriate (typo in
   10475        altivec.md)
   10476      * [514]12537 g++ generates writeable text sections
   10477 
   10478     SPARC-specific
   10479 
   10480      * [515]12496 wrong result for __atomic_add(&value, -1) when using -O0
   10481        -m64
   10482      * [516]12865 mprotect call to make trampoline executable may fail
   10483      * [517]13354 ICE in sparc_emit_set_const32
   10484 
   10485     ARM-specific
   10486 
   10487      * [518]10467 [arm] ICE in pre_insert_copy_insn,
   10488 
   10489     ia64-specific
   10490 
   10491      * [519]11226 ICE passing struct arg with two floats
   10492      * [520]11227 ICE for _Complex float, _Complex long double args
   10493      * [521]12644 GCC 3.3.2 fails to compile glibc on ia64
   10494      * [522]13149 build gcc-3.3.2 1305 error:unrecognizable insn
   10495      * Various fixes for libunwind
   10496 
   10497     Alpha-specific
   10498 
   10499      * [523]12654 Incorrect comparison code generated for Alpha
   10500      * [524]12965 SEGV+ICE in cc1plus on alpha-linux with -O2
   10501      * [525]13031 ICE (unrecognizable insn) when building gnome-libs-1.4.2
   10502 
   10503     HPPA-specific
   10504 
   10505      * [526]11634 [hppa] ICE in verify_local_live_at_start, in flow.c
   10506      * [527]12158 [hppa] compilation does not terminate at -O1
   10507 
   10508     S390-specific
   10509 
   10510      * [528]11992 Wrong built-in code for memcmp with length 1<<24: only
   10511        (1<<24)-1 possible for CLCL-Instruction
   10512 
   10513     SH-specific
   10514 
   10515      * [529]9365 segfault in gen_far_branch (config/sh/sh.c)
   10516      * [530]10392 optimizer generates faulty array indexing
   10517      * [531]11322 SH profiler outputs multiple definitions of symbol
   10518      * [532]13069 gcc/config/sh/rtems.h broken
   10519      * [533]13302 Putting a va_list in a struct causes seg fault
   10520      * [534]13585 Incorrect optimization of call to sfunc
   10521      * Fix inappropriately exported libgcc functions from the shared
   10522        library
   10523 
   10524     Other embedded target specific
   10525 
   10526      * [535]8916 [mcore] unsigned char assign gets hosed.
   10527      * [536]11576 [h8300] ICE in change_address_1, in emit-rtl.c
   10528      * [537]13122 [h8300] local variable gets corrupted by function call
   10529        when -fomit-frame-pointer is given
   10530      * [538]13256 [cris] strict_low_part mistreated in delay slots
   10531      * [539]13373 [mcore] optimization with -frerun-cse-after-loop
   10532        -fexpensive-optimizations produces wrong code on mcore
   10533 
   10534     GNU HURD-specific
   10535 
   10536      * [540]12561 gcc/config/t-gnu needs updating to work with
   10537        --with-sysroot
   10538 
   10539     Tru64 Unix specific
   10540 
   10541      * [541]6243 testsuite fails almost all tests due to no libintl in
   10542        LD_LIBRARY_PATH during test.
   10543      * [542]11397 weak aliases broken on Tru64 UNIX
   10544 
   10545     AIX-specific
   10546 
   10547      * [543]12505 build failure due to defines of uchar in cpphash.h and
   10548        sys/types.h
   10549      * [544]13150 WEAK symbols not exported by collect2
   10550 
   10551     IRIX-specific
   10552 
   10553      * [545]12666 fixincludes problem on IRIX 6.5.19m
   10554 
   10555     Solaris-specific
   10556 
   10557      * [546]12969 Including sys/byteorder.h breaks configure checks
   10558 
   10559     Testsuite problems (compiler is not affected)
   10560 
   10561      * [547]10819 testsuite creates CR+LF on compiler version lines in
   10562        test summary files
   10563      * [548]11612 abi_check not finding correct libgcc_s.so.1
   10564 
   10565     Miscellaneous
   10566 
   10567      * [549]13211 using -###, incorrect warnings about unused linker file
   10568        are produced
   10569      __________________________________________________________________
   10570 
   10571 GCC 3.3.4
   10572 
   10573    This is the [550]list of problem reports (PRs) from GCC's bug tracking
   10574    system that are known to be fixed in the 3.3.4 release. This list might
   10575    not be complete (that is, it is possible that some PRs that have been
   10576    fixed are not listed here).
   10577      __________________________________________________________________
   10578 
   10579 GCC 3.3.5
   10580 
   10581    This is the [551]list of problem reports (PRs) from GCC's bug tracking
   10582    system that are known to be fixed in the 3.3.5 release. This list might
   10583    not be complete (that is, it is possible that some PRs that have been
   10584    fixed are not listed here).
   10585      __________________________________________________________________
   10586 
   10587 GCC 3.3.6
   10588 
   10589    This is the [552]list of problem reports (PRs) from GCC's bug tracking
   10590    system that are known to be fixed in the 3.3.6 release. This list might
   10591    not be complete (that is, it is possible that some PRs that have been
   10592    fixed are not listed here).
   10593 
   10594 
   10595     For questions related to the use of GCC, please consult these web
   10596     pages and the [553]GCC manuals. If that fails, the
   10597     [554]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10598     web pages and the development of GCC are welcome on our developer
   10599     list at [555]gcc (a] gcc.gnu.org. All of [556]our lists have public
   10600     archives.
   10601 
   10602    Copyright (C) [557]Free Software Foundation, Inc. Verbatim copying and
   10603    distribution of this entire article is permitted in any medium,
   10604    provided this notice is preserved.
   10605 
   10606    These pages are [558]maintained by the GCC team. Last modified
   10607    2013-10-31[559].
   10608 
   10609 References
   10610 
   10611    1. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
   10612    2. http://gcc.gnu.org/gcc-3.1/changes.html#obsolete_systems
   10613    3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
   10614    4. http://gcc.gnu.org/gcc-3.3/changes.html#nonnull_attribute
   10615    5. http://gcc.gnu.org/news/dfa.html
   10616    6. http://gcc.gnu.org/c99status.html
   10617    7. http://gcc.gnu.org/onlinedocs/gcc-3.3.6/g77/News.html
   10618    8. http://gcc.gnu.org/PR10140
   10619    9. http://gcc.gnu.org/PR10198
   10620   10. http://gcc.gnu.org/PR10338
   10621   11. http://gcc.gnu.org/PR3581
   10622   12. http://gcc.gnu.org/PR4382
   10623   13. http://gcc.gnu.org/PR5533
   10624   14. http://gcc.gnu.org/PR6387
   10625   15. http://gcc.gnu.org/PR6412
   10626   16. http://gcc.gnu.org/PR6620
   10627   17. http://gcc.gnu.org/PR6663
   10628   18. http://gcc.gnu.org/PR7068
   10629   19. http://gcc.gnu.org/PR7083
   10630   20. http://gcc.gnu.org/PR7647
   10631   21. http://gcc.gnu.org/PR7675
   10632   22. http://gcc.gnu.org/PR7718
   10633   23. http://gcc.gnu.org/PR8116
   10634   24. http://gcc.gnu.org/PR8358
   10635   25. http://gcc.gnu.org/PR8511
   10636   26. http://gcc.gnu.org/PR8564
   10637   27. http://gcc.gnu.org/PR8660
   10638   28. http://gcc.gnu.org/PR8766
   10639   29. http://gcc.gnu.org/PR8803
   10640   30. http://gcc.gnu.org/PR8846
   10641   31. http://gcc.gnu.org/PR8906
   10642   32. http://gcc.gnu.org/PR9216
   10643   33. http://gcc.gnu.org/PR9261
   10644   34. http://gcc.gnu.org/PR9263
   10645   35. http://gcc.gnu.org/PR9429
   10646   36. http://gcc.gnu.org/PR9516
   10647   37. http://gcc.gnu.org/PR9600
   10648   38. http://gcc.gnu.org/PR9629
   10649   39. http://gcc.gnu.org/PR9672
   10650   40. http://gcc.gnu.org/PR9749
   10651   41. http://gcc.gnu.org/PR9794
   10652   42. http://gcc.gnu.org/PR9829
   10653   43. http://gcc.gnu.org/PR9916
   10654   44. http://gcc.gnu.org/PR9936
   10655   45. http://gcc.gnu.org/PR10262
   10656   46. http://gcc.gnu.org/PR10278
   10657   47. http://gcc.gnu.org/PR10446
   10658   48. http://gcc.gnu.org/PR10451
   10659   49. http://gcc.gnu.org/PR10506
   10660   50. http://gcc.gnu.org/PR10549
   10661   51. http://gcc.gnu.org/PR2001
   10662   52. http://gcc.gnu.org/PR2391
   10663   53. http://gcc.gnu.org/PR2960
   10664   54. http://gcc.gnu.org/PR4046
   10665   55. http://gcc.gnu.org/PR6405
   10666   56. http://gcc.gnu.org/PR6798
   10667   57. http://gcc.gnu.org/PR6871
   10668   58. http://gcc.gnu.org/PR6909
   10669   59. http://gcc.gnu.org/PR7189
   10670   60. http://gcc.gnu.org/PR7642
   10671   61. http://gcc.gnu.org/PR8634
   10672   62. http://gcc.gnu.org/PR8750
   10673   63. http://gcc.gnu.org/PR2161
   10674   64. http://gcc.gnu.org/PR4319
   10675   65. http://gcc.gnu.org/PR8602
   10676   66. http://gcc.gnu.org/PR9177
   10677   67. http://gcc.gnu.org/PR9853
   10678   68. http://gcc.gnu.org/PR45
   10679   69. http://gcc.gnu.org/PR3784
   10680   70. http://gcc.gnu.org/PR764
   10681   71. http://gcc.gnu.org/PR5116
   10682   72. http://gcc.gnu.org/PR2862
   10683   73. http://gcc.gnu.org/PR3663
   10684   74. http://gcc.gnu.org/PR3797
   10685   75. http://gcc.gnu.org/PR3948
   10686   76. http://gcc.gnu.org/PR4137
   10687   77. http://gcc.gnu.org/PR4361
   10688   78. http://gcc.gnu.org/PR4802
   10689   79. http://gcc.gnu.org/PR5837
   10690   80. http://gcc.gnu.org/PR4803
   10691   81. http://gcc.gnu.org/PR5094
   10692   82. http://gcc.gnu.org/PR5730
   10693   83. http://gcc.gnu.org/PR6713
   10694   84. http://gcc.gnu.org/PR7015
   10695   85. http://gcc.gnu.org/PR7086
   10696   86. http://gcc.gnu.org/PR7099
   10697   87. http://gcc.gnu.org/PR7247
   10698   88. http://gcc.gnu.org/PR7441
   10699   89. http://gcc.gnu.org/PR7768
   10700   90. http://gcc.gnu.org/PR7804
   10701   91. http://gcc.gnu.org/PR8099
   10702   92. http://gcc.gnu.org/PR8117
   10703   93. http://gcc.gnu.org/PR8205
   10704   94. http://gcc.gnu.org/PR8645
   10705   95. http://gcc.gnu.org/PR8724
   10706   96. http://gcc.gnu.org/PR8805
   10707   97. http://gcc.gnu.org/PR8691
   10708   98. http://gcc.gnu.org/PR8700
   10709   99. http://gcc.gnu.org/PR8724
   10710  100. http://gcc.gnu.org/PR8949
   10711  101. http://gcc.gnu.org/PR9016
   10712  102. http://gcc.gnu.org/PR9053
   10713  103. http://gcc.gnu.org/PR9152
   10714  104. http://gcc.gnu.org/PR9182
   10715  105. http://gcc.gnu.org/PR9297
   10716  106. http://gcc.gnu.org/PR9318
   10717  107. http://gcc.gnu.org/PR9320
   10718  108. http://gcc.gnu.org/PR9400
   10719  109. http://gcc.gnu.org/PR9424
   10720  110. http://gcc.gnu.org/PR9425
   10721  111. http://gcc.gnu.org/PR9439
   10722  112. http://gcc.gnu.org/PR9474
   10723  113. http://gcc.gnu.org/PR9548
   10724  114. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#231
   10725  115. http://gcc.gnu.org/PR9555
   10726  116. http://gcc.gnu.org/PR9561
   10727  117. http://gcc.gnu.org/PR9563
   10728  118. http://gcc.gnu.org/PR9582
   10729  119. http://gcc.gnu.org/PR9622
   10730  120. http://gcc.gnu.org/PR9683
   10731  121. http://gcc.gnu.org/PR9791
   10732  122. http://gcc.gnu.org/PR9817
   10733  123. http://gcc.gnu.org/PR9825
   10734  124. http://gcc.gnu.org/PR9826
   10735  125. http://gcc.gnu.org/PR9924
   10736  126. http://gcc.gnu.org/PR9946
   10737  127. http://gcc.gnu.org/PR9964
   10738  128. http://gcc.gnu.org/PR9988
   10739  129. http://gcc.gnu.org/PR10033
   10740  130. http://gcc.gnu.org/PR10097
   10741  131. http://gcc.gnu.org/PR10132
   10742  132. http://gcc.gnu.org/PR10180
   10743  133. http://gcc.gnu.org/PR10199
   10744  134. http://gcc.gnu.org/PR10300
   10745  135. http://gcc.gnu.org/PR10427
   10746  136. http://gcc.gnu.org/PR10503
   10747  137. http://gcc.gnu.org/PR5956
   10748  138. http://gcc.gnu.org/PR1832
   10749  139. http://gcc.gnu.org/PR3924
   10750  140. http://gcc.gnu.org/PR5634
   10751  141. http://gcc.gnu.org/PR6367
   10752  142. http://gcc.gnu.org/PR6491
   10753  143. http://gcc.gnu.org/PR6742
   10754  144. http://gcc.gnu.org/PR7113
   10755  145. http://gcc.gnu.org/PR7236
   10756  146. http://gcc.gnu.org/PR7278
   10757  147. http://gcc.gnu.org/PR7384
   10758  148. http://gcc.gnu.org/PR7388
   10759  149. http://gcc.gnu.org/PR8587
   10760  150. http://gcc.gnu.org/PR9038
   10761  151. http://gcc.gnu.org/PR10197
   10762  152. http://gcc.gnu.org/PR6005
   10763  153. http://gcc.gnu.org/PR6389
   10764  154. http://gcc.gnu.org/PR6576
   10765  155. http://gcc.gnu.org/PR6652
   10766  156. http://gcc.gnu.org/PR7060
   10767  157. http://gcc.gnu.org/PR7073
   10768  158. http://gcc.gnu.org/PR7180
   10769  159. http://gcc.gnu.org/PR7416
   10770  160. http://gcc.gnu.org/PR7570
   10771  161. http://gcc.gnu.org/PR7578
   10772  162. http://gcc.gnu.org/PR7611
   10773  163. http://gcc.gnu.org/PR7709
   10774  164. http://gcc.gnu.org/PR7766
   10775  165. http://gcc.gnu.org/PR7785
   10776  166. http://gcc.gnu.org/PR7786
   10777  167. http://gcc.gnu.org/PR8142
   10778  168. http://gcc.gnu.org/PR8234
   10779  169. http://gcc.gnu.org/PR8415
   10780  170. http://gcc.gnu.org/PR8481
   10781  171. http://gcc.gnu.org/PR8593
   10782  172. http://gcc.gnu.org/PR8759
   10783  173. http://gcc.gnu.org/PR8997
   10784  174. http://gcc.gnu.org/PR9253
   10785  175. http://gcc.gnu.org/PR9254
   10786  176. http://gcc.gnu.org/PR9271
   10787  177. http://gcc.gnu.org/PR6767
   10788  178. http://gcc.gnu.org/PR9911
   10789  179. http://gcc.gnu.org/PR10020
   10790  180. http://gcc.gnu.org/PR10546
   10791  181. http://gcc.gnu.org/PR7029
   10792  182. http://gcc.gnu.org/PR2903
   10793  183. http://gcc.gnu.org/PR7873
   10794  184. http://gcc.gnu.org/PR7680
   10795  185. http://gcc.gnu.org/PR8705
   10796  186. http://gcc.gnu.org/PR9986
   10797  187. http://gcc.gnu.org/PR10056
   10798  188. http://gcc.gnu.org/PR6744
   10799  189. http://gcc.gnu.org/PR7361
   10800  190. http://gcc.gnu.org/PR9496
   10801  191. http://gcc.gnu.org/PR7067
   10802  192. http://gcc.gnu.org/PR8480
   10803  193. http://gcc.gnu.org/PR8784
   10804  194. http://gcc.gnu.org/PR10315
   10805  195. http://gcc.gnu.org/PR10267
   10806  196. http://gcc.gnu.org/PR7916
   10807  197. http://gcc.gnu.org/PR7926
   10808  198. http://gcc.gnu.org/PR8555
   10809  199. http://gcc.gnu.org/PR8994
   10810  200. http://gcc.gnu.org/PR9426
   10811  201. http://gcc.gnu.org/PR9806
   10812  202. http://gcc.gnu.org/PR10077
   10813  203. http://gcc.gnu.org/PR10233
   10814  204. http://gcc.gnu.org/PR10286
   10815  205. http://gcc.gnu.org/PR10308
   10816  206. http://gcc.gnu.org/PR11272
   10817  207. http://gcc.gnu.org/PR5754
   10818  208. http://gcc.gnu.org/PR6597
   10819  209. http://gcc.gnu.org/PR6949
   10820  210. http://gcc.gnu.org/PR7053
   10821  211. http://gcc.gnu.org/PR8164
   10822  212. http://gcc.gnu.org/PR8384
   10823  213. http://gcc.gnu.org/PR9559
   10824  214. http://gcc.gnu.org/PR9649
   10825  215. http://gcc.gnu.org/PR9864
   10826  216. http://gcc.gnu.org/PR10432
   10827  217. http://gcc.gnu.org/PR10475
   10828  218. http://gcc.gnu.org/PR10635
   10829  219. http://gcc.gnu.org/PR10661
   10830  220. http://gcc.gnu.org/PR10700
   10831  221. http://gcc.gnu.org/PR10712
   10832  222. http://gcc.gnu.org/PR10796
   10833  223. http://gcc.gnu.org/PR10890
   10834  224. http://gcc.gnu.org/PR10939
   10835  225. http://gcc.gnu.org/PR10956
   10836  226. http://gcc.gnu.org/PR11041
   10837  227. http://gcc.gnu.org/PR11059
   10838  228. http://gcc.gnu.org/PR11083
   10839  229. http://gcc.gnu.org/PR11105
   10840  230. http://gcc.gnu.org/PR11149
   10841  231. http://gcc.gnu.org/PR11228
   10842  232. http://gcc.gnu.org/PR11282
   10843  233. http://gcc.gnu.org/PR11301
   10844  234. http://gcc.gnu.org/PR11308
   10845  235. http://gcc.gnu.org/PR11473
   10846  236. http://gcc.gnu.org/PR11503
   10847  237. http://gcc.gnu.org/PR11513
   10848  238. http://gcc.gnu.org/PR11198
   10849  239. http://gcc.gnu.org/PR11304
   10850  240. http://gcc.gnu.org/PR11381
   10851  241. http://gcc.gnu.org/PR11536
   10852  242. http://gcc.gnu.org/PR11557
   10853  243. http://gcc.gnu.org/PR5897
   10854  244. http://gcc.gnu.org/PR11279
   10855  245. http://gcc.gnu.org/PR11022
   10856  246. http://gcc.gnu.org/PR2330
   10857  247. http://gcc.gnu.org/PR5388
   10858  248. http://gcc.gnu.org/PR5390
   10859  249. http://gcc.gnu.org/PR7877
   10860  250. http://gcc.gnu.org/PR9393
   10861  251. http://gcc.gnu.org/PR10032
   10862  252. http://gcc.gnu.org/PR10468
   10863  253. http://gcc.gnu.org/PR10527
   10864  254. http://gcc.gnu.org/PR10679
   10865  255. http://gcc.gnu.org/PR10682
   10866  256. http://gcc.gnu.org/PR10689
   10867  257. http://gcc.gnu.org/PR10845
   10868  258. http://gcc.gnu.org/PR10849
   10869  259. http://gcc.gnu.org/PR10888
   10870  260. http://gcc.gnu.org/PR10929
   10871  261. http://gcc.gnu.org/PR10931
   10872  262. http://gcc.gnu.org/PR10940
   10873  263. http://gcc.gnu.org/PR10968
   10874  264. http://gcc.gnu.org/PR10990
   10875  265. http://gcc.gnu.org/PR11039
   10876  266. http://gcc.gnu.org/PR11062
   10877  267. http://gcc.gnu.org/PR11095
   10878  268. http://gcc.gnu.org/PR11098
   10879  269. http://gcc.gnu.org/PR11137
   10880  270. http://gcc.gnu.org/PR11154
   10881  271. http://gcc.gnu.org/PR11329
   10882  272. http://gcc.gnu.org/PR11332
   10883  273. http://gcc.gnu.org/PR11431
   10884  274. http://gcc.gnu.org/PR11528
   10885  275. http://gcc.gnu.org/PR11546
   10886  276. http://gcc.gnu.org/PR11567
   10887  277. http://gcc.gnu.org/PR11645
   10888  278. http://gcc.gnu.org/PR5179
   10889  279. http://gcc.gnu.org/PR8204
   10890  280. http://gcc.gnu.org/PR10838
   10891  281. http://gcc.gnu.org/PR10886
   10892  282. http://gcc.gnu.org/PR11349
   10893  283. http://gcc.gnu.org/PR4823
   10894  284. http://gcc.gnu.org/PR8878
   10895  285. http://gcc.gnu.org/PR9815
   10896  286. http://gcc.gnu.org/PR10402
   10897  287. http://gcc.gnu.org/PR10504
   10898  288. http://gcc.gnu.org/PR10673
   10899  289. http://gcc.gnu.org/PR11044
   10900  290. http://gcc.gnu.org/PR11089
   10901  291. http://gcc.gnu.org/PR11420
   10902  292. http://gcc.gnu.org/PR9362
   10903  293. http://gcc.gnu.org/PR10142
   10904  294. http://gcc.gnu.org/PR10663
   10905  295. http://gcc.gnu.org/PR10835
   10906  296. http://gcc.gnu.org/PR10876
   10907  297. http://gcc.gnu.org/PR10955
   10908  298. http://gcc.gnu.org/PR11018
   10909  299. http://gcc.gnu.org/PR11556
   10910  300. http://gcc.gnu.org/PR10907
   10911  301. http://gcc.gnu.org/PR11320
   10912  302. http://gcc.gnu.org/PR11599
   10913  303. http://gcc.gnu.org/PR9745
   10914  304. http://gcc.gnu.org/PR10871
   10915  305. http://gcc.gnu.org/PR11440
   10916  306. http://gcc.gnu.org/PR7594
   10917  307. http://gcc.gnu.org/PR10557
   10918  308. http://gcc.gnu.org/PR11054
   10919  309. http://gcc.gnu.org/PR10834
   10920  310. http://gcc.gnu.org/PR10842
   10921  311. http://gcc.gnu.org/PR11052
   10922  312. http://gcc.gnu.org/PR11183
   10923  313. http://gcc.gnu.org/PR11084
   10924  314. http://gcc.gnu.org/PR10331
   10925  315. http://gcc.gnu.org/PR10413
   10926  316. http://gcc.gnu.org/PR11096
   10927  317. http://gcc.gnu.org/PR2873
   10928  318. http://gcc.gnu.org/PR3163
   10929  319. http://gcc.gnu.org/PR5287
   10930  320. http://gcc.gnu.org/PR10148
   10931  321. http://gcc.gnu.org/PR8787
   10932  322. http://gcc.gnu.org/PR10900
   10933  323. http://gcc.gnu.org/PR1607
   10934  324. http://gcc.gnu.org/PR4252
   10935  325. http://gcc.gnu.org/PR4490
   10936  326. http://gcc.gnu.org/PR10355
   10937  327. http://gcc.gnu.org/PR10726
   10938  328. http://gcc.gnu.org/PR10805
   10939  329. http://gcc.gnu.org/PR10815
   10940  330. http://gcc.gnu.org/PR10877
   10941  331. http://gcc.gnu.org/PR11280
   10942  332. http://gcc.gnu.org/PR11466
   10943  333. http://gcc.gnu.org/PR10737
   10944  334. http://gcc.gnu.org/PR10810
   10945  335. http://gcc.gnu.org/bugzilla/
   10946  336. http://gcc.gnu.org/PR8336
   10947  337. http://gcc.gnu.org/PR9330
   10948  338. http://gcc.gnu.org/PR9631
   10949  339. http://gcc.gnu.org/PR9877
   10950  340. http://gcc.gnu.org/PR11687
   10951  341. http://gcc.gnu.org/PR12263
   10952  342. http://gcc.gnu.org/PR12490
   10953  343. http://gcc.gnu.org/PR7277
   10954  344. http://gcc.gnu.org/PR7939
   10955  345. http://gcc.gnu.org/PR11063
   10956  346. http://gcc.gnu.org/PR11207
   10957  347. http://gcc.gnu.org/PR11522
   10958  348. http://gcc.gnu.org/PR11595
   10959  349. http://gcc.gnu.org/PR11646
   10960  350. http://gcc.gnu.org/PR11665
   10961  351. http://gcc.gnu.org/PR11852
   10962  352. http://gcc.gnu.org/PR11878
   10963  353. http://gcc.gnu.org/PR11883
   10964  354. http://gcc.gnu.org/PR11991
   10965  355. http://gcc.gnu.org/PR12146
   10966  356. http://gcc.gnu.org/PR12215
   10967  357. http://gcc.gnu.org/PR12369
   10968  358. http://gcc.gnu.org/PR12446
   10969  359. http://gcc.gnu.org/PR12510
   10970  360. http://gcc.gnu.org/PR12544
   10971  361. http://gcc.gnu.org/PR9862
   10972  362. http://gcc.gnu.org/PR10962
   10973  363. http://gcc.gnu.org/PR11370
   10974  364. http://gcc.gnu.org/PR11637
   10975  365. http://gcc.gnu.org/PR11885
   10976  366. http://gcc.gnu.org/PR12082
   10977  367. http://gcc.gnu.org/PR12180
   10978  368. http://gcc.gnu.org/PR12340
   10979  369. http://gcc.gnu.org/PR3907
   10980  370. http://gcc.gnu.org/PR5293
   10981  371. http://gcc.gnu.org/PR5296
   10982  372. http://gcc.gnu.org/PR7939
   10983  373. http://gcc.gnu.org/PR8656
   10984  374. http://gcc.gnu.org/PR10147
   10985  375. http://gcc.gnu.org/PR11400
   10986  376. http://gcc.gnu.org/PR11409
   10987  377. http://gcc.gnu.org/PR11740
   10988  378. http://gcc.gnu.org/PR11786
   10989  379. http://gcc.gnu.org/PR11867
   10990  380. http://gcc.gnu.org/PR11928
   10991  381. http://gcc.gnu.org/PR12114
   10992  382. http://gcc.gnu.org/PR12163
   10993  383. http://gcc.gnu.org/PR12181
   10994  384. http://gcc.gnu.org/PR12236
   10995  385. http://gcc.gnu.org/PR12266
   10996  386. http://gcc.gnu.org/PR12296
   10997  387. http://gcc.gnu.org/PR12298
   10998  388. http://gcc.gnu.org/PR12369
   10999  389. http://gcc.gnu.org/PR12337
   11000  390. http://gcc.gnu.org/PR12344
   11001  391. http://gcc.gnu.org/PR12451
   11002  392. http://gcc.gnu.org/PR12486
   11003  393. http://gcc.gnu.org/PR8869
   11004  394. http://gcc.gnu.org/PR9786
   11005  395. http://gcc.gnu.org/PR11689
   11006  396. http://gcc.gnu.org/PR12116
   11007  397. http://gcc.gnu.org/PR12070
   11008  398. http://gcc.gnu.org/PR11184
   11009  399. http://gcc.gnu.org/PR11535
   11010  400. http://gcc.gnu.org/PR11693
   11011  401. http://gcc.gnu.org/PR12224
   11012  402. http://gcc.gnu.org/PR11087
   11013  403. http://gcc.gnu.org/PR11319
   11014  404. http://gcc.gnu.org/PR11949
   11015  405. http://gcc.gnu.org/PR11662
   11016  406. http://gcc.gnu.org/PR11965
   11017  407. http://gcc.gnu.org/PR12301
   11018  408. http://gcc.gnu.org/PR11717
   11019  409. http://gcc.gnu.org/PR11313
   11020  410. http://gcc.gnu.org/PR11712
   11021  411. http://gcc.gnu.org/PR12166
   11022  412. http://gcc.gnu.org/PR12101
   11023  413. http://gcc.gnu.org/PR10988
   11024  414. http://gcc.gnu.org/PR11805
   11025  415. http://gcc.gnu.org/PR11902
   11026  416. http://gcc.gnu.org/PR11903
   11027  417. http://gcc.gnu.org/bugzilla/
   11028  418. http://gcc.gnu.org/PR11890
   11029  419. http://gcc.gnu.org/PR12399
   11030  420. http://gcc.gnu.org/PR13068
   11031  421. http://gcc.gnu.org/PR10060
   11032  422. http://gcc.gnu.org/PR10555
   11033  423. http://gcc.gnu.org/PR10706
   11034  424. http://gcc.gnu.org/PR11496
   11035  425. http://gcc.gnu.org/PR11741
   11036  426. http://gcc.gnu.org/PR12440
   11037  427. http://gcc.gnu.org/PR12632
   11038  428. http://gcc.gnu.org/PR12712
   11039  429. http://gcc.gnu.org/PR12726
   11040  430. http://gcc.gnu.org/PR12890
   11041  431. http://gcc.gnu.org/PR12900
   11042  432. http://gcc.gnu.org/PR13060
   11043  433. http://gcc.gnu.org/PR13289
   11044  434. http://gcc.gnu.org/PR13318
   11045  435. http://gcc.gnu.org/PR13392
   11046  436. http://gcc.gnu.org/PR13574
   11047  437. http://gcc.gnu.org/PR13475
   11048  438. http://gcc.gnu.org/PR13797
   11049  439. http://gcc.gnu.org/PR13824
   11050  440. http://gcc.gnu.org/PR8776
   11051  441. http://gcc.gnu.org/PR10339
   11052  442. http://gcc.gnu.org/PR11350
   11053  443. http://gcc.gnu.org/PR12826
   11054  444. http://gcc.gnu.org/PR12500
   11055  445. http://gcc.gnu.org/PR12941
   11056  446. http://gcc.gnu.org/PR12953
   11057  447. http://gcc.gnu.org/PR13041
   11058  448. http://gcc.gnu.org/PR13507
   11059  449. http://gcc.gnu.org/PR13382
   11060  450. http://gcc.gnu.org/PR13394
   11061  451. http://gcc.gnu.org/PR13400
   11062  452. http://gcc.gnu.org/PR13521
   11063  453. http://gcc.gnu.org/PR2094
   11064  454. http://gcc.gnu.org/PR2294
   11065  455. http://gcc.gnu.org/PR5050
   11066  456. http://gcc.gnu.org/PR9371
   11067  457. http://gcc.gnu.org/PR9546
   11068  458. http://gcc.gnu.org/PR10081
   11069  459. http://gcc.gnu.org/PR10093
   11070  460. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#61
   11071  461. http://gcc.gnu.org/PR10095
   11072  462. http://gcc.gnu.org/PR11554
   11073  463. http://gcc.gnu.org/PR12297
   11074  464. http://gcc.gnu.org/PR12352
   11075  465. http://gcc.gnu.org/PR12438
   11076  466. http://gcc.gnu.org/PR12540
   11077  467. http://gcc.gnu.org/PR12594
   11078  468. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#60
   11079  469. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#63
   11080  470. http://gcc.gnu.org/PR12657
   11081  471. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#292
   11082  472. http://gcc.gnu.org/PR12696
   11083  473. http://gcc.gnu.org/PR12815
   11084  474. http://gcc.gnu.org/PR12862
   11085  475. http://gcc.gnu.org/PR12926
   11086  476. http://gcc.gnu.org/PR12967
   11087  477. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html
   11088  478. http://gcc.gnu.org/PR12971
   11089  479. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#328
   11090  480. http://gcc.gnu.org/PR13007
   11091  481. http://gcc.gnu.org/PR13009
   11092  482. http://gcc.gnu.org/PR13057
   11093  483. http://gcc.gnu.org/PR13070
   11094  484. http://gcc.gnu.org/PR13081
   11095  485. http://gcc.gnu.org/PR13239
   11096  486. http://gcc.gnu.org/PR13262
   11097  487. http://gcc.gnu.org/PR13290
   11098  488. http://gcc.gnu.org/PR13323
   11099  489. http://gcc.gnu.org/PR13369
   11100  490. http://gcc.gnu.org/PR13371
   11101  491. http://gcc.gnu.org/PR13445
   11102  492. http://gcc.gnu.org/PR13461
   11103  493. http://gcc.gnu.org/PR13462
   11104  494. http://gcc.gnu.org/PR13478
   11105  495. http://gcc.gnu.org/PR13544
   11106  496. http://gcc.gnu.org/PR13650
   11107  497. http://gcc.gnu.org/PR13683
   11108  498. http://gcc.gnu.org/PR13688
   11109  499. http://gcc.gnu.org/PR13774
   11110  500. http://gcc.gnu.org/PR13884
   11111  501. http://gcc.gnu.org/PR10746
   11112  502. http://gcc.gnu.org/PR11433
   11113  503. http://gcc.gnu.org/PR12633
   11114  504. http://gcc.gnu.org/PR13037
   11115  505. http://gcc.gnu.org/PR13213
   11116  506. http://gcc.gnu.org/PR4490
   11117  507. http://gcc.gnu.org/PR12292
   11118  508. http://gcc.gnu.org/PR12441
   11119  509. http://gcc.gnu.org/PR12943
   11120  510. http://gcc.gnu.org/PR13608
   11121  511. http://gcc.gnu.org/PR11598
   11122  512. http://gcc.gnu.org/PR11793
   11123  513. http://gcc.gnu.org/PR12467
   11124  514. http://gcc.gnu.org/PR12537
   11125  515. http://gcc.gnu.org/PR12496
   11126  516. http://gcc.gnu.org/PR12865
   11127  517. http://gcc.gnu.org/PR13354
   11128  518. http://gcc.gnu.org/PR10467
   11129  519. http://gcc.gnu.org/PR11226
   11130  520. http://gcc.gnu.org/PR11227
   11131  521. http://gcc.gnu.org/PR12644
   11132  522. http://gcc.gnu.org/PR13149
   11133  523. http://gcc.gnu.org/PR12654
   11134  524. http://gcc.gnu.org/PR12965
   11135  525. http://gcc.gnu.org/PR13031
   11136  526. http://gcc.gnu.org/PR11634
   11137  527. http://gcc.gnu.org/PR12158
   11138  528. http://gcc.gnu.org/PR11992
   11139  529. http://gcc.gnu.org/PR9365
   11140  530. http://gcc.gnu.org/PR10392
   11141  531. http://gcc.gnu.org/PR11322
   11142  532. http://gcc.gnu.org/PR13069
   11143  533. http://gcc.gnu.org/PR13302
   11144  534. http://gcc.gnu.org/PR13585
   11145  535. http://gcc.gnu.org/PR8916
   11146  536. http://gcc.gnu.org/PR11576
   11147  537. http://gcc.gnu.org/PR13122
   11148  538. http://gcc.gnu.org/PR13256
   11149  539. http://gcc.gnu.org/PR13373
   11150  540. http://gcc.gnu.org/PR12561
   11151  541. http://gcc.gnu.org/PR6243
   11152  542. http://gcc.gnu.org/PR11397
   11153  543. http://gcc.gnu.org/PR12505
   11154  544. http://gcc.gnu.org/PR13150
   11155  545. http://gcc.gnu.org/PR12666
   11156  546. http://gcc.gnu.org/PR12969
   11157  547. http://gcc.gnu.org/PR10819
   11158  548. http://gcc.gnu.org/PR11612
   11159  549. http://gcc.gnu.org/PR13211
   11160  550. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.4
   11161  551. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.5
   11162  552. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.6
   11163  553. http://gcc.gnu.org/onlinedocs/
   11164  554. mailto:gcc-help (a] gcc.gnu.org
   11165  555. mailto:gcc (a] gcc.gnu.org
   11166  556. http://gcc.gnu.org/lists.html
   11167  557. http://www.fsf.org/
   11168  558. http://gcc.gnu.org/about.html
   11169  559. http://validator.w3.org/check/referer
   11170 ======================================================================
   11171 http://gcc.gnu.org/gcc-3.2/index.html
   11172 
   11173                              GCC 3.2 Release Series
   11174 
   11175    April 25, 2003
   11176 
   11177    The [1]GNU project and the GCC developers are pleased to announce the
   11178    release of GCC 3.2.3.
   11179 
   11180    The purpose of the GCC 3.2 release series is to provide a stable
   11181    platform for OS distributors to use building their next releases. A
   11182    primary objective was to stabilize the C++ ABI; we believe that the
   11183    interface to the compiler and the C++ standard library are now
   11184    relatively stable.
   11185 
   11186    Be aware that C++ code compiled by GCC 3.2.x will (in general) not
   11187    interoperate with code compiled by GCC 3.1.1 or earlier.
   11188 
   11189    Please refer to our [2]detailed list of news, caveats, and bug-fixes
   11190    for further information.
   11191 
   11192 Release History
   11193 
   11194    GCC 3.2.3
   11195           April 25, 2003 ([3]changes)
   11196 
   11197    GCC 3.2.2
   11198           February 5, 2003 ([4]changes)
   11199 
   11200    GCC 3.2.1
   11201           November 19, 2002 ([5]changes)
   11202 
   11203    GCC 3.2
   11204           August 14, 2002 ([6]changes)
   11205 
   11206 References and Acknowledgements
   11207 
   11208    GCC used to stand for the GNU C Compiler, but since the compiler
   11209    supports several other languages aside from C, it now stands for the
   11210    GNU Compiler Collection.
   11211 
   11212    A list of [7]successful builds is updated as new information becomes
   11213    available.
   11214 
   11215    The GCC developers would like to thank the numerous people that have
   11216    contributed new features, improvements, bug fixes, and other changes as
   11217    well as test results to GCC. This [8]amazing group of volunteers is
   11218    what makes GCC successful.
   11219 
   11220    For additional information about GCC please refer to the [9]GCC project
   11221    web site or contact the [10]GCC development mailing list.
   11222 
   11223    To obtain GCC please use [11]our mirror sites, or our CVS server.
   11224 
   11225 
   11226     For questions related to the use of GCC, please consult these web
   11227     pages and the [12]GCC manuals. If that fails, the
   11228     [13]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   11229     web pages and the development of GCC are welcome on our developer
   11230     list at [14]gcc (a] gcc.gnu.org. All of [15]our lists have public
   11231     archives.
   11232 
   11233    Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and
   11234    distribution of this entire article is permitted in any medium,
   11235    provided this notice is preserved.
   11236 
   11237    These pages are [17]maintained by the GCC team. Last modified
   11238    2012-11-02[18].
   11239 
   11240 References
   11241 
   11242    1. http://www.gnu.org/
   11243    2. http://gcc.gnu.org/gcc-3.2/changes.html
   11244    3. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
   11245    4. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.2
   11246    5. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.1
   11247    6. http://gcc.gnu.org/gcc-3.2/changes.html#3.2
   11248    7. http://gcc.gnu.org/gcc-3.2/buildstat.html
   11249    8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   11250    9. http://gcc.gnu.org/index.html
   11251   10. mailto:gcc (a] gcc.gnu.org
   11252   11. http://gcc.gnu.org/mirrors.html
   11253   12. http://gcc.gnu.org/onlinedocs/
   11254   13. mailto:gcc-help (a] gcc.gnu.org
   11255   14. mailto:gcc (a] gcc.gnu.org
   11256   15. http://gcc.gnu.org/lists.html
   11257   16. http://www.fsf.org/
   11258   17. http://gcc.gnu.org/about.html
   11259   18. http://validator.w3.org/check/referer
   11260 ======================================================================
   11261 http://gcc.gnu.org/gcc-3.2/changes.html
   11262 
   11263                              GCC 3.2 Release Series
   11264                         Changes, New Features, and Fixes
   11265 
   11266    The latest release in the 3.2 release series is [1]GCC 3.2.3.
   11267 
   11268 Caveats and New Features
   11269 
   11270   Caveats
   11271 
   11272      * The C++ compiler does not correctly zero-initialize
   11273        pointers-to-data members. You must explicitly initialize them. For
   11274        example: int S::*m(0); will work, but depending on
   11275        default-initialization to zero will not work. This bug cannot be
   11276        fixed in GCC 3.2 without inducing unacceptable risks. It will be
   11277        fixed in GCC 3.3.
   11278      * This GCC release is based on the GCC 3.1 sourcebase, and thus has
   11279        all the [2]changes in the GCC 3.1 series. In addition, GCC 3.2 has
   11280        a number of C++ ABI fixes which make its C++ compiler generate
   11281        binary code which is incompatible with the C++ compilers found in
   11282        earlier GCC releases, including GCC 3.1 and GCC 3.1.1.
   11283 
   11284   Frontend Enhancements
   11285 
   11286     C/C++/Objective-C
   11287 
   11288      * The method of constructing the list of directories to be searched
   11289        for header files has been revised. If a directory named by a -I
   11290        option is a standard system include directory, the option is
   11291        ignored to ensure that the default search order for system
   11292        directories and the special treatment of system header files are
   11293        not defeated.
   11294      * The C and Objective-C compilers no longer accept the "Naming Types"
   11295        extension (typedef foo = bar); it was already unavailable in C++.
   11296        Code which uses it will need to be changed to use the "typeof"
   11297        extension instead: typedef typeof(bar) foo. (We have removed this
   11298        extension without a period of deprecation because it has caused the
   11299        compiler to crash since version 3.0 and no one noticed until very
   11300        recently. Thus we conclude it is not in widespread use.)
   11301 
   11302     C++
   11303 
   11304      * GCC 3.2 fixed serveral differences between the C++ ABI implemented
   11305        in GCC and the multi-vendor standard, but more have been found
   11306        since the release. 3.2.1 adds a new warning, -Wabi, to warn about
   11307        code which is affected by these bugs. We will fix these bugs in
   11308        some future release, once we are confident that all have been
   11309        found; until then, it is our intention to make changes to the ABI
   11310        only if they are necessary for correct compilation of C++, as
   11311        opposed to conformance to the ABI documents.
   11312      * For details on how to build an ABI compliant compiler for GNU/Linux
   11313        systems, check the [3]common C++ ABI page.
   11314 
   11315   New Targets and Target Specific Improvements
   11316 
   11317     IA-32
   11318 
   11319      * Fixed a number of bugs in SSE and MMX intrinsics.
   11320      * Fixed common compiler crashes with SSE instruction set enabled
   11321        (implied by -march=pentium3, pentium4, athlon-xp)
   11322      * __m128 and __m128i is not 128bit aligned when used in structures.
   11323 
   11324     x86-64
   11325 
   11326      * A bug whereby the compiler could generate bad code for bzero has
   11327        been fixed.
   11328      * ABI fixes (implying ABI incompatibilities with previous version in
   11329        some corner cases)
   11330      * Fixed prefetch code generation
   11331      __________________________________________________________________
   11332 
   11333 GCC 3.2.3
   11334 
   11335    3.2.3 is a bug fix release only; there are no new features that were
   11336    not present in GCC 3.2.2.
   11337 
   11338   Bug Fixes
   11339 
   11340    This section lists the problem reports (PRs) from GCC's bug tracking
   11341    system that are known to be fixed in the 3.2.3 release. This list might
   11342    not be complete (that is, it is possible that some PRs that have been
   11343    fixed are not listed here), and some of the titles have been changed to
   11344    make them more clear.
   11345 
   11346     Internal Compiler Errors (multi-platform)
   11347 
   11348      * [4]3782: (c++) -quiet -fstats produces a segmentation fault in
   11349        cc1plus
   11350      * [5]6440: (c++) template specializations cause ICE
   11351      * [6]7050: (c++) ICE on: (i ? get_string() : throw)
   11352      * [7]7741: ICE on conflicting types (make_decl_rtl in varasm.c)
   11353      * [8]7982: (c++) ICE due to infinite recursion (using STL set)
   11354      * [9]8068: exceedingly high (infinite) memory usage
   11355      * [10]8178: ICE with __builtin_ffs
   11356      * [11]8396: ICE in copy_to_mode_reg, in explow.c
   11357      * [12]8674: (c++) ICE in cp_expr_size, in cp/cp-lang.c
   11358      * [13]9768: ICE when optimizing inline code at -O2
   11359      * [14]9798: (c++) Infinite recursion (segfault) in
   11360        cp/decl.c:push_using_directive with recursive using directives
   11361      * [15]9799: mismatching structure initializer with nested flexible
   11362        array member: ICE
   11363      * [16]9928: ICE on duplicate enum declaration
   11364      * [17]10114: ICE in mem_loc_descriptor, in dwarf2out.c (affects
   11365        sparc, alpha)
   11366      * [18]10352: ICE in find_reloads_toplev
   11367      * [19]10336: ICE with -Wunreachable-code
   11368 
   11369     C/optimizer bugs:
   11370 
   11371      * [20]8224: Incorrect joining of signed and unsigned division
   11372      * [21]8613: -O2 produces wrong code with builtin strlen and
   11373        postincrements
   11374      * [22]8828: gcc reports some code is unreachable when it is not
   11375      * [23]9226: GCSE breaking argument passing
   11376      * [24]9853: miscompilation of non-constant structure initializer
   11377      * [25]9797: C99-style struct initializers are miscompiled
   11378      * [26]9967: Some standard C function calls should not be replaced
   11379        when optimizing for size
   11380      * [27]10116: ce2: invalid merge of join_bb in the context of switch
   11381        statements
   11382      * [28]10171: wrong code for inlined function
   11383      * [29]10175: -Wunreachable-code doesn't work for single lines
   11384 
   11385     C++ compiler and library:
   11386 
   11387      * [30]8316: Confusing diagnostic for code that misuses conversion
   11388        operators
   11389      * [31]9169: filebuf output fails if codecvt<>::out returns noconv
   11390      * [32]9420: incomplete type incorrectly reported
   11391      * [33]9459: typeof in return type specification of template not
   11392        supported
   11393      * [34]9507: filebuf::open handles ios_base::ate incorrectly
   11394      * [35]9538: Out-of-bounds memory access in streambuf::sputbackc
   11395      * [36]9602: Total confusion about template/friend/virtual/abstract
   11396      * [37]9993: destructor not called for local object created within and
   11397        returned from infinite loop
   11398      * [38]10167: ieee_1003.1-2001 locale specialisations on a glibc-2.3.2
   11399        system
   11400 
   11401     Java compiler and library:
   11402 
   11403      * [39]9652: libgcj build fails on irix6.5.1[78]
   11404      * [40]10144: gas on solaris complains about bad .stabs lines for
   11405        java, native as unaffected
   11406 
   11407     x86-specific (Intel/AMD):
   11408 
   11409      * [41]8746: gcc miscompiles Linux kernel ppa driver on x86
   11410      * [42]9888: -mcpu=k6 -Os produces out of range loop instructions
   11411      * [43]9638: Cross-build for target i386-elf and i586-pc-linux-gnu
   11412        failed
   11413      * [44]9954: Cross-build for target i586-pc-linux-gnu (--with-newlib)
   11414        failed
   11415 
   11416     SPARC-specific:
   11417 
   11418      * [45]7784: [Sparc] ICE in extract_insn, in recog.c
   11419      * [46]7796: sparc extra failure with -m64 on execute/930921-1.c in
   11420        unroll.c
   11421      * [47]8281: ICE when compiling with -O2 -fPIC for Ultrasparc
   11422      * [48]8366: [Sparc] C testsuite failure with -m64 -fpic -O in
   11423        execute/loop-2d.c
   11424      * [49]8726: gcc -O2 miscompiles Samba 2.2.7 on 32-bit sparc
   11425      * [50]9414: Scheduling bug on Ultrasparc
   11426      * [51]10067: GCC-3.2.2 outputs invalid asm on sparc64
   11427 
   11428     m68k-specific:
   11429 
   11430      * [52]7248: broken "inclusive or" code
   11431      * [53]8343: m68k-elf/rtems ICE at instantiate_virtual_regs_1
   11432 
   11433     PowerPC-specific:
   11434 
   11435      * [54]9732: Wrong code with -O2 -fPIC
   11436      * [55]10073: ICE: powerpc cannot split insn
   11437 
   11438     Alpha-specific:
   11439 
   11440      * [56]7702: optimization problem on a DEC alpha under OSF1
   11441      * [57]9671: gcc.3.2.2 does not build on a HP Tru64 Unix v5.1B system
   11442 
   11443     HP-specific:
   11444 
   11445      * [58]8694: <string> breaks <ctype.h> on HP-UX 10.20 (DUP: 9275)
   11446      * [59]9953: (ada) gcc 3.2.x can't build 3.3-branch ada on HP-UX 10
   11447        (missing symbol)
   11448      * [60]10271: Floating point args don't get reloaded across function
   11449        calls with -O2
   11450 
   11451     MIPS specific:
   11452 
   11453      * [61]6362: mips-irix6 gcc-3.1 C testsuite failure with -mips4 in
   11454        compile/920501-4.c
   11455 
   11456     CRIS specific:
   11457 
   11458      * [62]10377: gcc-3.2.2 creates bad assembler code for cris
   11459 
   11460     Miscellaneous and minor bugs:
   11461 
   11462      * [63]6955: collect2 says "core dumped" when there is no core
   11463      __________________________________________________________________
   11464 
   11465 GCC 3.2.2
   11466 
   11467    Beginning with 3.2.2, GCC's Makefile suite supports redirection of make
   11468    install by means of the DESTDIR variable. Parts of the GCC tree have
   11469    featured that support long before, but now it is available even from
   11470    the top level.
   11471 
   11472    Other than that, GCC 3.2.2 is a bug fix release only; there are no new
   11473    features that were not present in GCC 3.2.1.
   11474 
   11475   Bug Fixes
   11476 
   11477    On the following i386-based systems GCC 3.2.1 broke the C ABI wrt.
   11478    functions returning structures: Cygwin, FreeBSD (GCC 3.2.1 as shipped
   11479    with FreeBSD 5.0 does not have this problem), Interix, a.out-based
   11480    GNU/Linux and NetBSD, OpenBSD, and Darwin. GCC 3.2.2 reverts this ABI
   11481    change, and thus restores ABI-compatibility with previous releases
   11482    (except GCC 3.2.1) on these platforms.
   11483 
   11484    This section lists the problem reports (PRs) from GCC's bug tracking
   11485    system that are known to be fixed in the 3.2.2 release. This list might
   11486    not be complete (that is, it is possible that some PRs that have been
   11487    fixed are not listed here) and some of the titles have been changed to
   11488    make them more clear.
   11489 
   11490     Internal Compiler Errors (multi-platform)
   11491 
   11492      * [64]5919: (c++) ICE when passing variable array to template
   11493        function
   11494      * [65]7129: (c++) ICE with min/max assignment operators (<?= and >?=)
   11495      * [66]7507: ICE with -O2 when address of called function is a
   11496        complicated expression
   11497      * [67]7622: ICE with nested inline functions if function's address is
   11498        taken
   11499      * [68]7681: (fortran) ICE in compensate_edge, in reg-stack.c (also PR
   11500        [69]9258)
   11501      * [70]8031: (c++) ICE in code comparing typeids and casting from
   11502        virtual base
   11503      * [71]8275: ICE in simplify_subreg
   11504      * [72]8332: (c++) builtin strlen/template interaction causes ICE
   11505      * [73]8372: (c++) ICE on explicit call of destructor
   11506      * [74]8439: (c, not c++) empty struct causes ICE
   11507      * [75]8442: (c++) ICE with nested template classes
   11508      * [76]8518: ICE when compiling mplayer ("extern inline" issue)
   11509      * [77]8615: (c++) ICE with out-of-range character constant template
   11510        argument
   11511      * [78]8663: (c++) ICE in cp_expr_size, at cp-lang.c:307
   11512      * [79]8799: (c++) ICE: error reporting routines re-entered
   11513      * [80]9328: (c++) ICE with typeof(X) for overloaded X
   11514      * [81]9465: (preprocessor) cpp -traditional ICE on null bytes
   11515 
   11516     C++ (compiler and library) bugs
   11517 
   11518      * [82]47: scoping in nested classes is broken
   11519      * [83]6745: problems with iostream rdbuf() member function
   11520      * [84]8214: conversion from const char* const to char* sometimes
   11521        accepted illegally
   11522      * [85]8493: builtin strlen and overload resolution (same bug as
   11523        [86]8332)
   11524      * [87]8503: strange behaviour of function types
   11525      * [88]8727: compiler confused by inheritance from an anonymous struct
   11526      * [89]7445: poor performance of std::locale::classic() in
   11527        multi-threaded applications
   11528      * [90]8230: mishandling of overflow in vector<T>::resize
   11529      * [91]8399: sync_with_stdio(false) breaks unformatted input
   11530      * [92]8662: illegal access of private member of unnamed class is
   11531        accepted
   11532      * [93]8707: "make distclean" fails in libstdc++-v3 directory
   11533      * [94]8708: __USE_MALLOC doesn't work
   11534      * [95]8790: Use of non-thread-safe strtok in src/localename.cc
   11535      * [96]8887: Bug in date formats with --enable-clocale=generic
   11536      * [97]9076: Call Frame Instructions are not handled correctly during
   11537        unwind operation
   11538      * [98]9151: std::setprecision limited to 16 digits when outputting a
   11539        double to a stream
   11540      * [99]9168: codecvt<char, char, mbstate_t> overwrites output buffers
   11541      * [100]9269: libstdc++ headers: explicit specialization of function
   11542        must precede its first use
   11543      * [101]9322: return value of basic_streambuf<>::getloc affected by
   11544        locale::global
   11545      * [102]9433: segfault in runtime support for dynamic_cast
   11546 
   11547     C and optimizer bugs
   11548 
   11549      * [103]8032: GCC incorrectly initializes static structs that have
   11550        flexible arrays
   11551      * [104]8639: simple arithmetic expression broken
   11552      * [105]8794: optimization improperly eliminates certain expressions
   11553      * [106]8832: traditional "asm volatile" code is illegally optimized
   11554      * [107]8988: loop optimizer bug: with -O2, code is generated that
   11555        segfaults (found on i386, bug present for all platforms)
   11556      * [108]9492: structure copy clobbers subsequent stores to structure
   11557 
   11558     Objective-C bugs
   11559 
   11560      * [109]9267: Objective-C parser won't build with newer bison versions
   11561        (e.g. 1.875)
   11562 
   11563     Ada bugs
   11564 
   11565      * [110]8344: Ada build problem due to conflict between gcc/final.o,
   11566        gcc/ada/final.o
   11567 
   11568     Preprocessor bugs
   11569 
   11570      * [111]8524: _Pragma within macros is improperly expanded
   11571      * [112]8880: __WCHAR_TYPE__ macro incorrectly set to "long int" with
   11572        -fshort-wchar
   11573 
   11574     ARM-specific
   11575 
   11576      * [113]9090: arm ICE with >= -O2; regression from gcc-2.95
   11577 
   11578     x86-specific (Intel/AMD)
   11579 
   11580      * [114]8588: ICE in extract_insn, at recog.c:NNNN (shift instruction)
   11581      * [115]8599: loop unroll bug with -march=k6-3
   11582      * [116]9506: ABI breakage in structure return (affects BSD and
   11583        Cygwin, but not GNU/Linux)
   11584 
   11585     FreeBSD 5.0 specific
   11586 
   11587      * [117]9484: GCC 3.2.1 Bootstrap failure on FreeBSD 5.0
   11588 
   11589     RTEMS-specific
   11590 
   11591      * [118]9292: hppa1.1-rtems configurery problems
   11592      * [119]9293: [m68k-elf/rtems] config/m68k/t-crtstuff bug
   11593      * [120]9295: [mips-rtems] config/mips/rtems.h init/fini issue
   11594      * [121]9296: gthr-rtems regression
   11595      * [122]9316: powerpc-rtems: extending multilibs
   11596 
   11597     HP-PA specific
   11598 
   11599      * [123]9493: ICE with -O2 when building a simple function
   11600 
   11601     Documentation
   11602 
   11603      * [124]7341: hyperlink to gcov in GCC documentation doesn't work
   11604      * [125]8947: Please add a warning about "-malign-double" in docs
   11605      * [126]7448, [127]8882: typo cleanups
   11606      __________________________________________________________________
   11607 
   11608 GCC 3.2.1
   11609 
   11610    3.2.1 adds a new warning, -Wabi. This option warns when GNU C++
   11611    generates code that is known not to be binary-compatible with the
   11612    vendor-neutral ia32/ia64 ABI. Please consult the GCC manual, included
   11613    in the distribution, for details.
   11614 
   11615    This release also removes an old GCC extension, "naming types", and the
   11616    documentation now directs users to use a different GCC extension,
   11617    __typeof__, instead. The feature had evidently been broken for a while.
   11618 
   11619    Otherwise, 3.2.1 is a bug fix release only; other than bug fixes and
   11620    the new warning there are no new features that were not present in GCC
   11621    3.2.
   11622 
   11623    In addition, the previous fix for [128]PR 7445 (poor performance of
   11624    std::locale::classic() in multi-threaded applications) was reverted
   11625    ("unfixed"), because the "fix" was not thread-safe.
   11626 
   11627   Bug Fixes
   11628 
   11629    This section lists the problem reports (PRs) from GCC's bug tracking
   11630    system that are known to be fixed in the 3.2.1 release. This list might
   11631    not be complete (that is, it is possible that some PRs that have been
   11632    fixed are not listed here). As you can see, the number of bug fixes is
   11633    quite large, so it is strongly recommended that users of earlier GCC
   11634    3.x releases upgrade to GCC 3.2.1.
   11635 
   11636     Internal Compiler Errors (multi-platform)
   11637 
   11638      * [129]2521: (c++) ICE in build_ptrmemfunc, in cp/typeck.c
   11639      * [130]5661: (c++) ICE instantiating template on array of unknown
   11640        size (bad code)
   11641      * [131]6419: (c++) ICE in make_decl_rtl for "longest" attribute on
   11642        64-bit platforms
   11643      * [132]6994: (c++) ICE in find_function_data
   11644      * [133]7150: preprocessor: GCC -dM -E gives an ICE
   11645      * [134]7160: ICE when optimizing branches without a return value
   11646      * [135]7228: (c++) ICE when using member template and template
   11647        function
   11648      * [136]7266: (c++) ICE with -pedantic on missing typename
   11649      * [137]7353: ICE from use of "Naming Types" extension, see above
   11650      * [138]7411: ICE in instantiate_virtual_regs_1, in function.c
   11651      * [139]7478: (c++) ICE on static_cast inside template
   11652      * [140]7526: preprocessor core dump when _Pragma implies #pragma
   11653        dependency
   11654      * [141]7721: (c++) ICE on simple (but incorrect) template ([142]7803
   11655        is a duplicate)
   11656      * [143]7754: (c++) ICE on union with template parameter
   11657      * [144]7788: (c++) redeclaring a definition as an incomplete class
   11658        causes ICE
   11659      * [145]8031: (c++) ICE in comptypes, in cp/typeck.c
   11660      * [146]8055: preprocessor dies with SIG11 when building FreeBSD
   11661        kernel
   11662      * [147]8067: (c++) ICE due to mishandling of __FUNCTION__ and related
   11663        variables
   11664      * [148]8134: (c++) ICE in force_store_init_value on legal code
   11665      * [149]8149: (c++) ICE on incomplete type
   11666      * [150]8160: (c++) ICE in build_modify_expr, in cp/typeck.c: array
   11667        initialization
   11668 
   11669     C++ (compiler and library) bugs
   11670 
   11671      * [151]5607: No pointer adjustment in covariant return types
   11672      * [152]6579: Infinite loop with statement expressions in member
   11673        initialization
   11674      * [153]6803: Default copy constructor bug in GCC 3.1
   11675      * [154]7176: g++ confused by friend and static member with same name
   11676      * [155]7188: Segfault with template class and recursive (incorrect)
   11677        initializer list
   11678      * [156]7306: Regression: GCC 3.x fails to compile code with virtual
   11679        inheritance if a method has a variable number of arguments
   11680      * [157]7461: ctype<char>::classic_table() returns offset array on
   11681        Cygwin
   11682      * [158]7524: f(const float arg[3]) fails
   11683      * [159]7584: Erroneous ambiguous base error on using declaration
   11684      * [160]7676: Member template overloading problem
   11685      * [161]7679: infinite loop when a right parenthesis is missing
   11686      * [162]7811: default locale not taken from environment
   11687      * [163]7961: compare( char *) implemented incorrectly in
   11688        basic_string<>
   11689      * [164]8071: basic_ostream::operator<<(streambuf*) loops forever if
   11690        streambuf::underflow() leaves gptr() NULL (dups: [165]8127,
   11691        [166]6745)
   11692      * [167]8096: deque::at() throws std::range_error instead of
   11693        std::out_of_range
   11694      * [168]8127: cout << cin.rdbuf() infinite loop
   11695      * [169]8218: Excessively large memory consumed for classes with large
   11696        array members
   11697      * [170]8287: GCC 3.2: Destructor called for non-constructed local
   11698        object
   11699      * [171]8347: empty vector range used in string construction causes
   11700        core dump
   11701      * [172]8348: fail() flag is set in istringstream when eof() flag is
   11702        set
   11703      * [173]8391: regression: infinite loop in cp/decl2.c(finish_file)
   11704 
   11705     C and optimizer bugs
   11706 
   11707      * [174]6627: -fno-align-functions doesn't seem to disable function
   11708        alignment
   11709      * [175]6631: life_analysis misoptimizes code to initialize fields of
   11710        a structure
   11711      * [176]7102: unsigned char division results in floating exception
   11712      * [177]7120: Run once loop should *always* be unrolled
   11713        (pessimization)
   11714      * [178]7209: Bug involving array referencing and ?: operator
   11715      * [179]7515: invalid inlining of global function with -O3
   11716      * [180]7814: incorrect scheduling for glibc-2.2.92 strcpy test
   11717      * [181]8467: bug in sibling call optimization
   11718 
   11719     Preprocessor bugs
   11720 
   11721      * [182]4890: incorrect line markers from the traditional preprocessor
   11722      * [183]7357: -M option omits system headers files (making it the same
   11723        as -MM)
   11724      * [184]7358: Changes to Sun's make Dependencies
   11725      * [185]7602: C++ header files found in CPLUS_INCLUDE_PATH treated as
   11726        C headers
   11727      * [186]7862: Interrupting GCC -MD removes .d file but not .o
   11728      * [187]8190: Failed compilation deletes -MD dependency file
   11729      * [188]8524: _Pragma within macro is improperly expanded
   11730 
   11731     x86 specific (Intel/AMD)
   11732 
   11733      * [189]5351: (i686-only) function pass-by-value structure copy
   11734        corrupts stack ([190]7591 is a duplicate)
   11735      * [191]6845, [192]7034, [193]7124, [194]7174: ICE's with
   11736        -march=pentium3/pentium2/athlon (these are all the same underlying
   11737        bug, in MMX register use)
   11738      * [195]7134, [196]7375, [197]7390: ICE with -march=athlon (maybe same
   11739        as above?)
   11740      * [198]6890: xmmintrin.h, _MM_TRANSPOSE4_PS is broken
   11741      * [199]6981: wrong code in 64-bit manipulation on x86
   11742      * [200]7242: GCC -mcpu=pentium[23] doesn't define __tune_pentiumpro__
   11743        macro
   11744      * [201]7396: ix86: cmpgt_ss, cmpge_ss, cmpngt_ss, and cmpnge_ss SSE
   11745        intrinsics are broken
   11746      * [202]7630: GCC 3.2 breaks on Mozilla 1.0's JS sources with
   11747        -march=pentium4
   11748      * [203]7693: Typo in i386 mmintrin.h header
   11749      * [204]7723: ICE - Pentium3 sse - GCC 3.2
   11750      * [205]7951: ICE on -march=pentium4 -O2 -mfpmath=sse
   11751      * [206]8146: (i686 only) gcc 3.2 miscompiles gcc 2.95.3
   11752 
   11753     PowerPC specific
   11754 
   11755      * [207]5967: GCC bug when profiling nested functions on powerpc
   11756      * [208]6984: wrong code generated with -O2, -O3, -Os for do-while
   11757        loop on PowerPC
   11758      * [209]7114: PowerPC: ICE building strcoll.op from glibc-2.2.5
   11759      * [210]7130: miscompiled code for GCC-3.1 on
   11760        powerpc-unknown-linux-gnu with -funroll-all-loops
   11761      * [211]7133: PowerPC ICE: unrecognizable insn
   11762      * [212]7380: ICE in extract_insn, at recog.c:2148
   11763      * [213]8252: ICE on Altivec code with optimization turned on
   11764      * [214]8451: Altivec ICE in GCC 3.2
   11765 
   11766     HP/PA specific
   11767 
   11768      * [215]7250: __ashrdi3 returns wrong value on 32 bit hppa
   11769 
   11770     SPARC specific
   11771 
   11772      * [216]6668: when using --disable-multilib, libgcc_s.so is installed
   11773        in the wrong place on sparc-solaris
   11774      * [217]7151: ICE when compiling for UltraSPARC
   11775      * [218]7335: SPARC: ICE in verify_wide_reg (flow.c:557) with long
   11776        double and -O1
   11777      * [219]7842: [REGRESSION] SPARC code gen bug
   11778 
   11779     ARM specific
   11780 
   11781      * [220]7856: [arm] invalid offset in constant pool reference
   11782      * [221]7967: optimization produces wrong code (ARM)
   11783 
   11784     Alpha specific
   11785 
   11786      * [222]7374: __builtin_fabsl broken on alpha
   11787 
   11788     IBM s390 specific
   11789 
   11790      * [223]7370: ICE in fixup_var_refs_1 on s390x
   11791      * [224]7409: loop optimization bug on s390x-linux-gnu
   11792      * [225]8232: s390x: ICE when using bcmp with int length argument
   11793 
   11794     SCO specific
   11795 
   11796      * [226]7623: SCO OpenServer build fails with machmode.def: undefined
   11797        symbol: BITS_PER_UNIT
   11798 
   11799     m68k/Coldfire specific
   11800 
   11801      * [227]8314: crtbegin, crtend need to be multilib'ed for this
   11802        platform
   11803 
   11804     Documentation
   11805 
   11806      * [228]761: Document some undocumented options
   11807      * [229]5610: Fix documentation about invoking SSE instructions
   11808        (-mfpmath=sse)
   11809      * [230]7484: List -Wmissing-declarations as C-only option
   11810      * [231]7531: -mcmodel not documented for x86-64
   11811      * [232]8120: Update documentation of bad use of ##
   11812      __________________________________________________________________
   11813 
   11814 GCC 3.2
   11815 
   11816    3.2 is a small bug fix release, but there is a change to the
   11817    application binary interface (ABI), hence the change to the second part
   11818    of the version number.
   11819 
   11820    The main purpose of the 3.2 release is to correct a couple of problems
   11821    in the C++ ABI, with the intention of providing a stable interface
   11822    going forward.  Accordingly, 3.2 is only a small change to 3.1.1.
   11823 
   11824   Bug Fixes
   11825 
   11826     C++
   11827 
   11828      * [233]7320: g++ 3.2 relocation problem
   11829      * [234]7470: vtable: virtual function pointers not in declaration
   11830        order
   11831 
   11832     libstdc++
   11833 
   11834      * [235]6410: Trouble with non-ASCII monetary symbols and wchar_t
   11835      * [236]6503, [237]6642, [238]7186: Problems with comparing or
   11836        subtracting various types of const and non-const iterators
   11837      * [239]7216: ambiguity with basic_iostream::traits_type
   11838      * [240]7220: problem with basic_istream::ignore(0,delimiter)
   11839      * [241]7222: locale::operator==() doesn't work on std::locale("")
   11840      * [242]7286: placement operator delete issue
   11841      * [243]7442: cxxabi.h does not match the C++ ABI
   11842      * [244]7445: poor performance of std::locale::classic() in
   11843        multi-threaded applications
   11844 
   11845     x86-64 specific
   11846 
   11847      * [245]7291: off-by-one in generated inline bzero code for x86-64
   11848 
   11849 
   11850     For questions related to the use of GCC, please consult these web
   11851     pages and the [246]GCC manuals. If that fails, the
   11852     [247]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   11853     web pages and the development of GCC are welcome on our developer
   11854     list at [248]gcc (a] gcc.gnu.org. All of [249]our lists have public
   11855     archives.
   11856 
   11857    Copyright (C) [250]Free Software Foundation, Inc. Verbatim copying and
   11858    distribution of this entire article is permitted in any medium,
   11859    provided this notice is preserved.
   11860 
   11861    These pages are [251]maintained by the GCC team. Last modified
   11862    2012-11-02[252].
   11863 
   11864 References
   11865 
   11866    1. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
   11867    2. http://gcc.gnu.org/gcc-3.1/changes.html
   11868    3. http://gcc.gnu.org/gcc-3.2/c++-abi.html
   11869    4. http://gcc.gnu.org/PR3782
   11870    5. http://gcc.gnu.org/PR6440
   11871    6. http://gcc.gnu.org/PR7050
   11872    7. http://gcc.gnu.org/PR7741
   11873    8. http://gcc.gnu.org/PR7982
   11874    9. http://gcc.gnu.org/PR8068
   11875   10. http://gcc.gnu.org/PR8178
   11876   11. http://gcc.gnu.org/PR8396
   11877   12. http://gcc.gnu.org/PR8674
   11878   13. http://gcc.gnu.org/PR9768
   11879   14. http://gcc.gnu.org/PR9798
   11880   15. http://gcc.gnu.org/PR9799
   11881   16. http://gcc.gnu.org/PR9928
   11882   17. http://gcc.gnu.org/PR10114
   11883   18. http://gcc.gnu.org/PR10352
   11884   19. http://gcc.gnu.org/PR10336
   11885   20. http://gcc.gnu.org/PR8224
   11886   21. http://gcc.gnu.org/PR8613
   11887   22. http://gcc.gnu.org/PR8828
   11888   23. http://gcc.gnu.org/PR9226
   11889   24. http://gcc.gnu.org/PR9853
   11890   25. http://gcc.gnu.org/PR9797
   11891   26. http://gcc.gnu.org/PR9967
   11892   27. http://gcc.gnu.org/PR10116
   11893   28. http://gcc.gnu.org/PR10171
   11894   29. http://gcc.gnu.org/PR10175
   11895   30. http://gcc.gnu.org/PR8316
   11896   31. http://gcc.gnu.org/PR9169
   11897   32. http://gcc.gnu.org/PR9420
   11898   33. http://gcc.gnu.org/PR9459
   11899   34. http://gcc.gnu.org/PR9507
   11900   35. http://gcc.gnu.org/PR9538
   11901   36. http://gcc.gnu.org/PR9602
   11902   37. http://gcc.gnu.org/PR9993
   11903   38. http://gcc.gnu.org/PR10167
   11904   39. http://gcc.gnu.org/PR9652
   11905   40. http://gcc.gnu.org/PR10144
   11906   41. http://gcc.gnu.org/PR8746
   11907   42. http://gcc.gnu.org/PR9888
   11908   43. http://gcc.gnu.org/PR9638
   11909   44. http://gcc.gnu.org/PR9954
   11910   45. http://gcc.gnu.org/PR7784
   11911   46. http://gcc.gnu.org/PR7796
   11912   47. http://gcc.gnu.org/PR8281
   11913   48. http://gcc.gnu.org/PR8366
   11914   49. http://gcc.gnu.org/PR8726
   11915   50. http://gcc.gnu.org/PR9414
   11916   51. http://gcc.gnu.org/PR10067
   11917   52. http://gcc.gnu.org/PR7248
   11918   53. http://gcc.gnu.org/PR8343
   11919   54. http://gcc.gnu.org/PR9732
   11920   55. http://gcc.gnu.org/PR10073
   11921   56. http://gcc.gnu.org/PR7702
   11922   57. http://gcc.gnu.org/PR9671
   11923   58. http://gcc.gnu.org/PR8694
   11924   59. http://gcc.gnu.org/PR9953
   11925   60. http://gcc.gnu.org/PR10271
   11926   61. http://gcc.gnu.org/PR6362
   11927   62. http://gcc.gnu.org/PR10377
   11928   63. http://gcc.gnu.org/PR6955
   11929   64. http://gcc.gnu.org/PR5919
   11930   65. http://gcc.gnu.org/PR7129
   11931   66. http://gcc.gnu.org/PR7507
   11932   67. http://gcc.gnu.org/PR7622
   11933   68. http://gcc.gnu.org/PR7681
   11934   69. http://gcc.gnu.org/PR9528
   11935   70. http://gcc.gnu.org/PR8031
   11936   71. http://gcc.gnu.org/PR8275
   11937   72. http://gcc.gnu.org/PR8332
   11938   73. http://gcc.gnu.org/PR8372
   11939   74. http://gcc.gnu.org/PR8439
   11940   75. http://gcc.gnu.org/PR8442
   11941   76. http://gcc.gnu.org/PR8518
   11942   77. http://gcc.gnu.org/PR8615
   11943   78. http://gcc.gnu.org/PR8663
   11944   79. http://gcc.gnu.org/PR8799
   11945   80. http://gcc.gnu.org/PR9328
   11946   81. http://gcc.gnu.org/PR9465
   11947   82. http://gcc.gnu.org/PR47
   11948   83. http://gcc.gnu.org/PR6745
   11949   84. http://gcc.gnu.org/PR8214
   11950   85. http://gcc.gnu.org/PR8493
   11951   86. http://gcc.gnu.org/PR8332
   11952   87. http://gcc.gnu.org/PR8503
   11953   88. http://gcc.gnu.org/PR8727
   11954   89. http://gcc.gnu.org/PR7445
   11955   90. http://gcc.gnu.org/PR8230
   11956   91. http://gcc.gnu.org/PR8399
   11957   92. http://gcc.gnu.org/PR8662
   11958   93. http://gcc.gnu.org/PR8707
   11959   94. http://gcc.gnu.org/PR8708
   11960   95. http://gcc.gnu.org/PR8790
   11961   96. http://gcc.gnu.org/PR8887
   11962   97. http://gcc.gnu.org/PR9076
   11963   98. http://gcc.gnu.org/PR9151
   11964   99. http://gcc.gnu.org/PR9168
   11965  100. http://gcc.gnu.org/PR9269
   11966  101. http://gcc.gnu.org/PR9322
   11967  102. http://gcc.gnu.org/PR9433
   11968  103. http://gcc.gnu.org/PR8032
   11969  104. http://gcc.gnu.org/PR8639
   11970  105. http://gcc.gnu.org/PR8794
   11971  106. http://gcc.gnu.org/PR8832
   11972  107. http://gcc.gnu.org/PR8988
   11973  108. http://gcc.gnu.org/PR9492
   11974  109. http://gcc.gnu.org/PR9267
   11975  110. http://gcc.gnu.org/PR8344
   11976  111. http://gcc.gnu.org/PR8524
   11977  112. http://gcc.gnu.org/PR8880
   11978  113. http://gcc.gnu.org/PR9090
   11979  114. http://gcc.gnu.org/PR8588
   11980  115. http://gcc.gnu.org/PR8599
   11981  116. http://gcc.gnu.org/PR9506
   11982  117. http://gcc.gnu.org/PR9484
   11983  118. http://gcc.gnu.org/PR9292
   11984  119. http://gcc.gnu.org/PR9293
   11985  120. http://gcc.gnu.org/PR9295
   11986  121. http://gcc.gnu.org/PR9296
   11987  122. http://gcc.gnu.org/PR9316
   11988  123. http://gcc.gnu.org/PR9493
   11989  124. http://gcc.gnu.org/PR7341
   11990  125. http://gcc.gnu.org/PR8947
   11991  126. http://gcc.gnu.org/PR7448
   11992  127. http://gcc.gnu.org/PR8882
   11993  128. http://gcc.gnu.org/PR7445
   11994  129. http://gcc.gnu.org/PR2521
   11995  130. http://gcc.gnu.org/PR5661
   11996  131. http://gcc.gnu.org/PR6419
   11997  132. http://gcc.gnu.org/PR6994
   11998  133. http://gcc.gnu.org/PR7150
   11999  134. http://gcc.gnu.org/PR7160
   12000  135. http://gcc.gnu.org/PR7228
   12001  136. http://gcc.gnu.org/PR7266
   12002  137. http://gcc.gnu.org/PR7353
   12003  138. http://gcc.gnu.org/PR7411
   12004  139. http://gcc.gnu.org/PR7478
   12005  140. http://gcc.gnu.org/PR7526
   12006  141. http://gcc.gnu.org/PR7721
   12007  142. http://gcc.gnu.org/PR7803
   12008  143. http://gcc.gnu.org/PR7754
   12009  144. http://gcc.gnu.org/PR7788
   12010  145. http://gcc.gnu.org/PR8031
   12011  146. http://gcc.gnu.org/PR8055
   12012  147. http://gcc.gnu.org/PR8067
   12013  148. http://gcc.gnu.org/PR8134
   12014  149. http://gcc.gnu.org/PR8149
   12015  150. http://gcc.gnu.org/PR8160
   12016  151. http://gcc.gnu.org/PR5607
   12017  152. http://gcc.gnu.org/PR6579
   12018  153. http://gcc.gnu.org/PR6803
   12019  154. http://gcc.gnu.org/PR7176
   12020  155. http://gcc.gnu.org/PR7188
   12021  156. http://gcc.gnu.org/PR7306
   12022  157. http://gcc.gnu.org/PR7461
   12023  158. http://gcc.gnu.org/PR7524
   12024  159. http://gcc.gnu.org/PR7584
   12025  160. http://gcc.gnu.org/PR7676
   12026  161. http://gcc.gnu.org/PR7679
   12027  162. http://gcc.gnu.org/PR7811
   12028  163. http://gcc.gnu.org/PR7961
   12029  164. http://gcc.gnu.org/PR8071
   12030  165. http://gcc.gnu.org/PR8127
   12031  166. http://gcc.gnu.org/PR6745
   12032  167. http://gcc.gnu.org/PR8096
   12033  168. http://gcc.gnu.org/PR8127
   12034  169. http://gcc.gnu.org/PR8218
   12035  170. http://gcc.gnu.org/PR8287
   12036  171. http://gcc.gnu.org/PR8347
   12037  172. http://gcc.gnu.org/PR8348
   12038  173. http://gcc.gnu.org/PR8391
   12039  174. http://gcc.gnu.org/PR6627
   12040  175. http://gcc.gnu.org/PR6631
   12041  176. http://gcc.gnu.org/PR7102
   12042  177. http://gcc.gnu.org/PR7120
   12043  178. http://gcc.gnu.org/PR7209
   12044  179. http://gcc.gnu.org/PR7515
   12045  180. http://gcc.gnu.org/PR7814
   12046  181. http://gcc.gnu.org/PR8467
   12047  182. http://gcc.gnu.org/PR4890
   12048  183. http://gcc.gnu.org/PR7357
   12049  184. http://gcc.gnu.org/PR7358
   12050  185. http://gcc.gnu.org/PR7602
   12051  186. http://gcc.gnu.org/PR7862
   12052  187. http://gcc.gnu.org/PR8190
   12053  188. http://gcc.gnu.org/PR8524
   12054  189. http://gcc.gnu.org/PR5351
   12055  190. http://gcc.gnu.org/PR7591
   12056  191. http://gcc.gnu.org/PR6845
   12057  192. http://gcc.gnu.org/PR7034
   12058  193. http://gcc.gnu.org/PR7124
   12059  194. http://gcc.gnu.org/PR7174
   12060  195. http://gcc.gnu.org/PR7134
   12061  196. http://gcc.gnu.org/PR7375
   12062  197. http://gcc.gnu.org/PR7390
   12063  198. http://gcc.gnu.org/PR6890
   12064  199. http://gcc.gnu.org/PR6981
   12065  200. http://gcc.gnu.org/PR7242
   12066  201. http://gcc.gnu.org/PR7396
   12067  202. http://gcc.gnu.org/PR7630
   12068  203. http://gcc.gnu.org/PR7693
   12069  204. http://gcc.gnu.org/PR7723
   12070  205. http://gcc.gnu.org/PR7951
   12071  206. http://gcc.gnu.org/PR8146
   12072  207. http://gcc.gnu.org/PR5967
   12073  208. http://gcc.gnu.org/PR6984
   12074  209. http://gcc.gnu.org/PR7114
   12075  210. http://gcc.gnu.org/PR7130
   12076  211. http://gcc.gnu.org/PR7133
   12077  212. http://gcc.gnu.org/PR7380
   12078  213. http://gcc.gnu.org/PR8252
   12079  214. http://gcc.gnu.org/PR8451
   12080  215. http://gcc.gnu.org/PR7250
   12081  216. http://gcc.gnu.org/PR6668
   12082  217. http://gcc.gnu.org/PR7151
   12083  218. http://gcc.gnu.org/PR7335
   12084  219. http://gcc.gnu.org/PR7842
   12085  220. http://gcc.gnu.org/PR7856
   12086  221. http://gcc.gnu.org/PR7967
   12087  222. http://gcc.gnu.org/PR7374
   12088  223. http://gcc.gnu.org/PR7370
   12089  224. http://gcc.gnu.org/PR7409
   12090  225. http://gcc.gnu.org/PR8232
   12091  226. http://gcc.gnu.org/PR7623
   12092  227. http://gcc.gnu.org/PR8314
   12093  228. http://gcc.gnu.org/PR761
   12094  229. http://gcc.gnu.org/PR5610
   12095  230. http://gcc.gnu.org/PR7484
   12096  231. http://gcc.gnu.org/PR7531
   12097  232. http://gcc.gnu.org/PR8120
   12098  233. http://gcc.gnu.org/PR7320
   12099  234. http://gcc.gnu.org/PR7470
   12100  235. http://gcc.gnu.org/PR6410
   12101  236. http://gcc.gnu.org/PR6503
   12102  237. http://gcc.gnu.org/PR6642
   12103  238. http://gcc.gnu.org/PR7186
   12104  239. http://gcc.gnu.org/PR7216
   12105  240. http://gcc.gnu.org/PR7220
   12106  241. http://gcc.gnu.org/PR7222
   12107  242. http://gcc.gnu.org/PR7286
   12108  243. http://gcc.gnu.org/PR7442
   12109  244. http://gcc.gnu.org/PR7445
   12110  245. http://gcc.gnu.org/PR7291
   12111  246. http://gcc.gnu.org/onlinedocs/
   12112  247. mailto:gcc-help (a] gcc.gnu.org
   12113  248. mailto:gcc (a] gcc.gnu.org
   12114  249. http://gcc.gnu.org/lists.html
   12115  250. http://www.fsf.org/
   12116  251. http://gcc.gnu.org/about.html
   12117  252. http://validator.w3.org/check/referer
   12118 ======================================================================
   12119 http://gcc.gnu.org/gcc-3.1/index.html
   12120 
   12121                                     GCC 3.1
   12122 
   12123    July 27, 2002
   12124 
   12125    The [1]GNU project and the GCC developers are pleased to announce the
   12126    release of GCC 3.1.1.
   12127 
   12128    The links below still apply to GCC 3.1.1.
   12129 
   12130    May 15, 2002
   12131 
   12132    The [2]GNU project and the GCC developers are pleased to announce the
   12133    release of GCC 3.1.
   12134 
   12135    GCC used to stand for the GNU C Compiler, but since the compiler
   12136    supports several other languages aside from C, it now stands for the
   12137    GNU Compiler Collection.
   12138 
   12139    A list of [3]successful builds is updated as new information becomes
   12140    available.
   12141 
   12142    The GCC developers would like to thank the numerous people that have
   12143    contributed [4]new features, improvements, bug fixes, and other changes
   12144    as well as test results to GCC. This [5]amazing group of volunteers is
   12145    what makes GCC successful.
   12146 
   12147    For additional information about GCC please refer to the [6]GCC project
   12148    web site or contact the [7]GCC development mailing list.
   12149 
   12150    To obtain GCC please use [8]our mirror sites, or our CVS server.
   12151      __________________________________________________________________
   12152 
   12153 
   12154     For questions related to the use of GCC, please consult these web
   12155     pages and the [9]GCC manuals. If that fails, the
   12156     [10]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   12157     web pages and the development of GCC are welcome on our developer
   12158     list at [11]gcc (a] gcc.gnu.org. All of [12]our lists have public
   12159     archives.
   12160 
   12161    Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
   12162    distribution of this entire article is permitted in any medium,
   12163    provided this notice is preserved.
   12164 
   12165    These pages are [14]maintained by the GCC team. Last modified
   12166    2012-11-02[15].
   12167 
   12168 References
   12169 
   12170    1. http://www.gnu.org/
   12171    2. http://www.gnu.org/
   12172    3. http://gcc.gnu.org/gcc-3.1/buildstat.html
   12173    4. http://gcc.gnu.org/gcc-3.1/changes.html
   12174    5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   12175    6. http://gcc.gnu.org/index.html
   12176    7. mailto:gcc (a] gcc.gnu.org
   12177    8. http://gcc.gnu.org/mirrors.html
   12178    9. http://gcc.gnu.org/onlinedocs/
   12179   10. mailto:gcc-help (a] gcc.gnu.org
   12180   11. mailto:gcc (a] gcc.gnu.org
   12181   12. http://gcc.gnu.org/lists.html
   12182   13. http://www.fsf.org/
   12183   14. http://gcc.gnu.org/about.html
   12184   15. http://validator.w3.org/check/referer
   12185 ======================================================================
   12186 http://gcc.gnu.org/gcc-3.1/changes.html
   12187 
   12188                              GCC 3.1 Release Series
   12189                         Changes, New Features, and Fixes
   12190 
   12191 Additional changes in GCC 3.1.1
   12192 
   12193      * A bug related to how structures and unions are returned has been
   12194        fixed for powerpc-*-netbsd*.
   12195      * An important bug in the implementation of -fprefetch-loop-arrays
   12196        has been fixed. Previously the optimization prefetched random
   12197        blocks of memory for most targets except for i386.
   12198      * The Java compiler now compiles Java programs much faster and also
   12199        works with parallel make.
   12200      * Nested functions have been fixed for mips*-*-netbsd*.
   12201      * Some missing floating point support routines have beed added for
   12202        mips*-*-netbsd*.
   12203      * This [1]message gives additional information about the bugs fixed
   12204        in this release.
   12205 
   12206 Caveats
   12207 
   12208      * The -traditional C compiler option has been deprecated and will be
   12209        removed in GCC 3.3. (It remains possible to preprocess non-C code
   12210        with the traditional preprocessor.)
   12211      * The default debugging format for most ELF platforms (including
   12212        GNU/Linux and FreeBSD; notable exception is Solaris) has changed
   12213        from stabs to DWARF2. This requires GDB 5.1.1 or later.
   12214 
   12215 General Optimizer Improvements
   12216 
   12217      * Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat,
   12218        and Andreas Jaeger, SuSE Labs, has contributed [2]infrastructure
   12219        for profile driven optimizations.
   12220        Options -fprofile-arcs and -fbranch-probabilities can now be used
   12221        to improve speed of the generated code by profiling the actual
   12222        program behaviour on typical runs. In the absence of profile info
   12223        the compiler attempts to guess the profile statically.
   12224      * [3]SPEC2000 and SPEC95 benchmark suites are now used daily to
   12225        monitor performance of the generated code.
   12226        According to the SPECInt2000 results on an AMD Athlon CPU, the code
   12227        generated by GCC 3.1 is 6% faster on the average (8.2% faster with
   12228        profile feedback) compared to GCC 3.0. The code produced by GCC 3.0
   12229        is about 2.1% faster compared to 2.95.3. Tests were done using the
   12230        -O2 -march=athlon command-line options.
   12231      * Alexandre Oliva, of Red Hat, has generalized the tree inlining
   12232        infrastructure developed by CodeSourcery, LLC for the C++ front
   12233        end, so that it is now used in the C front end too. Inlining
   12234        functions as trees exposes them earlier to the compiler, giving it
   12235        more opportunities for optimization.
   12236      * Support for data prefetching instructions has been added to the GCC
   12237        back end and several targets. A new __builtin_prefetch intrinsic is
   12238        available to explicitly insert prefetch instructions and
   12239        experimental support for loop array prefetching has been added (see
   12240        -fprefetch-loop-array documentation).
   12241      * Support for emitting debugging information for macros has been
   12242        added for DWARF2. It is activated using -g3.
   12243 
   12244 New Languages and Language specific improvements
   12245 
   12246   C/C++
   12247 
   12248      * A few more [4]ISO C99 features.
   12249      * The preprocessor is 10-50% faster than the preprocessor in GCC 3.0.
   12250      * The preprocessor's symbol table has been merged with the symbol
   12251        table of the C, C++ and Objective-C front ends.
   12252      * The preprocessor consumes less memory than the preprocessor in GCC
   12253        3.0, often significantly so. On normal input files, it typically
   12254        consumes less memory than pre-3.0 cccp-based GCC, too.
   12255 
   12256   C++
   12257 
   12258      * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std
   12259        was a workaround to allow std compliant code to work with the
   12260        non-std compliant libstdc++-v2. libstdc++-v3 is std compliant.
   12261      * The C++ ABI has been fixed so that void (A::*)() const is mangled
   12262        as "M1AKFvvE", rather than "MK1AFvvE" as before. This change only
   12263        affects pointer to cv-qualified member function types.
   12264      * The C++ ABI has been changed to correctly handle this code:
   12265     struct A {
   12266       void operator delete[] (void *, size_t);
   12267     };
   12268 
   12269     struct B : public A {
   12270     };
   12271 
   12272     new B[10];
   12273 
   12274        The amount of storage allocated for the array will be greater than
   12275        it was in 3.0, in order to store the number of elements in the
   12276        array, so that the correct size can be passed to operator delete[]
   12277        when the array is deleted. Previously, the value passed to operator
   12278        delete[] was unpredictable.
   12279        This change will only affect code that declares a two-argument
   12280        operator delete[] with a second parameter of type size_t in a base
   12281        class, and does not override that definition in a derived class.
   12282      * The C++ ABI has been changed so that:
   12283     struct A {
   12284       void operator delete[] (void *, size_t);
   12285       void operator delete[] (void *);
   12286     };
   12287 
   12288        does not cause unnecessary storage to be allocated when an array of
   12289        A objects is allocated.
   12290        This change will only affect code that declares both of these forms
   12291        of operator delete[], and declared the two-argument form before the
   12292        one-argument form.
   12293      * The C++ ABI has been changed so that when a parameter is passed by
   12294        value, any cleanup for that parameter is performed in the caller,
   12295        as specified by the ia64 C++ ABI, rather than the called function
   12296        as before. As a result, classes with a non-trivial destructor but a
   12297        trivial copy constructor will be passed and returned by invisible
   12298        reference, rather than by bitwise copy as before.
   12299      * G++ now supports the "named return value optimization": for code
   12300        like
   12301     A f () {
   12302       A a;
   12303       ...
   12304       return a;
   12305     }
   12306 
   12307        G++ will allocate a in the return value slot, so that the return
   12308        becomes a no-op. For this to work, all return statements in the
   12309        function must return the same variable.
   12310      * Improvements to the C++ library are listed in [5]the libstdc++-v3
   12311        FAQ.
   12312 
   12313   Objective-C
   12314 
   12315      * Annoying linker warnings (due to incorrect code being generated)
   12316        have been fixed.
   12317      * If a class method cannot be found, the compiler no longer issues a
   12318        warning if a corresponding instance method exists in the root
   12319        class.
   12320      * Forward @protocol declarations have been fixed.
   12321      * Loading of categories has been fixed in certain situations (GNU run
   12322        time only).
   12323      * The class lookup in the run-time library has been rewritten so that
   12324        class method dispatch is more than twice as fast as it used to be
   12325        (GNU run time only).
   12326 
   12327   Java
   12328 
   12329      * libgcj now includes RMI, java.lang.ref.*, javax.naming, and
   12330        javax.transaction.
   12331      * Property files and other system resources can be compiled into
   12332        executables which use libgcj using the new gcj --resource feature.
   12333      * libgcj has been ported to more platforms. In particular there is
   12334        now a mostly-functional mingw32 (Windows) target port.
   12335      * JNI and CNI invocation interfaces were implemented, so gcj-compiled
   12336        Java code can now be called from a C/C++ application.
   12337      * gcj can now use builtin functions for certain known methods, for
   12338        instance Math.cos.
   12339      * gcj can now automatically remove redundant array-store checks in
   12340        some common cases.
   12341      * The --no-store-checks optimization option was added. This can be
   12342        used to omit runtime store checks for code which is known not to
   12343        throw ArrayStoreException
   12344      * The following third party interface standards were added to libgcj:
   12345        org.w3c.dom and org.xml.sax.
   12346      * java.security has been merged with GNU Classpath. The new package
   12347        is now JDK 1.2 compliant, and much more complete.
   12348      * A bytecode verifier was added to the libgcj interpreter.
   12349      * java.lang.Character was rewritten to comply with the Unicode 3.0
   12350        standard, and improve performance.
   12351      * Partial support for many more locales was added to libgcj.
   12352      * Socket timeouts have been implemented.
   12353      * libgcj has been merged into a single shared library. There are no
   12354        longer separate shared libraries for the garbage collector and
   12355        zlib.
   12356      * Several performance improvements were made to gcj and libgcj:
   12357           + Hash synchronization (thin locks)
   12358           + A special allocation path for finalizer-free objects
   12359           + Thread-local allocation
   12360           + Parallel GC, and other GC tweaks
   12361 
   12362   Fortran
   12363 
   12364    Fortran improvements are listed in [6]the Fortran documentation.
   12365 
   12366   Ada
   12367 
   12368    [7]Ada Core Technologies, Inc, has contributed its GNAT Ada 95 front
   12369    end and associated tools. The GNAT compiler fully implements the Ada
   12370    language as defined by the ISO/IEC 8652 standard.
   12371 
   12372    Please note that the integration of the Ada front end is still work in
   12373    progress.
   12374 
   12375 New Targets and Target Specific Improvements
   12376 
   12377      * Hans-Peter Nilsson has contributed a port to [8]MMIX, the CPU
   12378        architecture used in new editions of Donald E. Knuth's The Art of
   12379        Computer Programming.
   12380      * [9]Axis Communications has contributed its port to the CRIS CPU
   12381        architecture, used in the ETRAX system-on-a-chip series. See
   12382        [10]Axis' developer site for technical information.
   12383      * Alexandre Oliva, of Red Hat, has contributed a port to the
   12384        [11]SuperH SH5 64-bit RISC microprocessor architecture, extending
   12385        the existing SH port.
   12386      * UltraSPARC is fully supported in 64-bit mode. The option -m64
   12387        enables it.
   12388      * For compatibility with the Sun compiler #pragma redefine_extname
   12389        has been implemented on Solaris.
   12390      * The x86 back end has had some noticeable work done to it.
   12391           + SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
   12392             Jaeger have contributed a port to the AMD x86-64 architecture.
   12393             For more information on x86-64 see [12]http://www.x86-64.org.
   12394           + The compiler now supports MMX, 3DNow!, SSE, and SSE2
   12395             instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
   12396             enable the respective instruction sets. Intel C++ compatible
   12397             MMX/3DNow!/SSE intrinsics are implemented. SSE2 intrinsics
   12398             will be added in next major release.
   12399           + Following those improvements, targets for Pentium MMX, K6-2,
   12400             K6-3, Pentium III, Pentium 4, and Athlon 4 Mobile/XP/MP were
   12401             added. Refer to the documentation on -march= and -mcpu=
   12402             options for details.
   12403           + For those targets that support it, -mfpmath=sse will cause the
   12404             compiler to generate SSE/SSE2 instructions for floating point
   12405             math instead of x87 instructions. Usually, this will lead to
   12406             quicker code -- especially on the Pentium 4. Note that only
   12407             scalar floating point instructions are used and GCC does not
   12408             exploit SIMD features yet.
   12409           + Prefetch support has been added to the Pentium III, Pentium 4,
   12410             K6-2, K6-3, and Athlon series.
   12411           + Code generated for floating point to integer conversions has
   12412             been improved leading to better performance of many 3D
   12413             applications.
   12414      * The PowerPC back end has added 64-bit PowerPC GNU/Linux support.
   12415      * C++ support for AIX has been improved.
   12416      * Aldy Hernandez, of Red Hat, Inc, has contributed extensions to the
   12417        PowerPC port supporting the AltiVec programming model (SIMD). The
   12418        support, though presently useful, is experimental and is expected
   12419        to stabilize for 3.2. The support is written to conform to
   12420        Motorola's AltiVec specs. See -maltivec.
   12421 
   12422 Obsolete Systems
   12423 
   12424    Support for a number of older systems has been declared obsolete in GCC
   12425    3.1. Unless there is activity to revive them, the next release of GCC
   12426    will have their sources permanently removed.
   12427 
   12428    All configurations of the following processor architectures have been
   12429    declared obsolete:
   12430      * MIL-STD-1750A, 1750a-*-*
   12431      * AMD A29k, a29k-*-*
   12432      * Convex, c*-convex-*
   12433      * Clipper, clipper-*-*
   12434      * Elxsi, elxsi-*-*
   12435      * Intel i860, i860-*-*
   12436      * Sun picoJava, pj-*-* and pjl-*-*
   12437      * Western Electric 32000, we32k-*-*
   12438 
   12439    Most configurations of the following processor architectures have been
   12440    declared obsolete, but we are preserving a few systems which may have
   12441    active developers. It is unlikely that the remaining systems will
   12442    survive much longer unless we see definite signs of port activity.
   12443      * Motorola 88000 except
   12444           + Generic a.out, m88k-*-aout*
   12445           + Generic SVR4, m88k-*-sysv4
   12446           + OpenBSD, m88k-*-openbsd*
   12447      * NS32k except
   12448           + NetBSD, ns32k-*-netbsd*
   12449           + OpenBSD, ns32k-*-openbsd*.
   12450      * ROMP except
   12451           + OpenBSD, romp-*-openbsd*.
   12452 
   12453    Finally, only some configurations of these processor architectures are
   12454    being obsoleted.
   12455      * Alpha:
   12456           + OSF/1, alpha*-*-osf[123]*. (Digital Unix and Tru64 Unix, aka
   12457             alpha*-*-osf[45], are still supported.)
   12458      * ARM:
   12459           + RISCiX, arm-*-riscix*.
   12460      * i386:
   12461           + 386BSD, i?86-*-bsd*
   12462           + Chorus, i?86-*-chorusos*
   12463           + DG/UX, i?86-*-dgux*
   12464           + FreeBSD 1.x, i?86-*-freebsd1.*
   12465           + IBM AIX, i?86-*-aix*
   12466           + ISC UNIX, i?86-*-isc*
   12467           + GNU/Linux with pre-BFD linker, i?86-*-linux*oldld*
   12468           + NEXTstep, i?86-next-*
   12469           + OSF UNIX, i?86-*-osf1* and i?86-*-osfrose*
   12470           + RTEMS/coff, i?86-*-rtemscoff*
   12471           + RTEMS/go32, i?86-go32-rtems*
   12472           + Sequent/BSD, i?86-sequent-bsd*
   12473           + Sequent/ptx before version 3, i?86-sequent-ptx[12]* and
   12474             i?86-sequent-sysv3*
   12475           + SunOS, i?86-*-sunos*
   12476      * Motorola 68000:
   12477           + Altos, m68[k0]*-altos-*
   12478           + Apollo, m68[k0]*-apollo-*
   12479           + Apple A/UX, m68[k0]*-apple-*
   12480           + Bull, m68[k0]*-bull-*
   12481           + Convergent, m68[k0]*-convergent-*
   12482           + Generic SVR3, m68[k0]*-*-sysv3*
   12483           + ISI, m68[k0]*-isi-*
   12484           + LynxOS, m68[k0]*-*-lynxos*
   12485           + NEXT, m68[k0]*-next-*
   12486           + RTEMS/coff, m68[k0]*-*-rtemscoff*
   12487           + Sony, m68[k0]*-sony-*
   12488      * MIPS:
   12489           + DEC Ultrix, mips-*-ultrix* and mips-dec-*
   12490           + Generic BSD, mips-*-bsd*
   12491           + Generic System V, mips-*-sysv*
   12492           + IRIX before version 5, mips-sgi-irix[1234]*
   12493           + RiscOS, mips-*-riscos*
   12494           + Sony, mips-sony-*
   12495           + Tandem, mips-tandem-*
   12496      * SPARC:
   12497           + RTEMS/a.out, sparc-*-rtemsaout*.
   12498 
   12499 Documentation improvements
   12500 
   12501      * The old manual ("Using and Porting the GNU Compiler Collection")
   12502        has been replaced by a users manual ("Using the GNU Compiler
   12503        Collection") and a separate internals reference manual ("GNU
   12504        Compiler Collection Internals").
   12505      * More complete and much improved documentation about GCC's internal
   12506        representation used by the C and C++ front ends.
   12507      * Many cleanups and improvements in general.
   12508 
   12509 
   12510     For questions related to the use of GCC, please consult these web
   12511     pages and the [13]GCC manuals. If that fails, the
   12512     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   12513     web pages and the development of GCC are welcome on our developer
   12514     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
   12515     archives.
   12516 
   12517    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
   12518    distribution of this entire article is permitted in any medium,
   12519    provided this notice is preserved.
   12520 
   12521    These pages are [18]maintained by the GCC team. Last modified
   12522    2013-10-31[19].
   12523 
   12524 References
   12525 
   12526    1. http://gcc.gnu.org/ml/gcc/2002-07/msg01208.html
   12527    2. http://gcc.gnu.org/news/profiledriven.html
   12528    3. http://gcc.gnu.org/benchmarks/
   12529    4. http://gcc.gnu.org/c99status.html
   12530    5. http://gcc.gnu.org/onlinedocs/libstdc++/faq.html
   12531    6. http://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html
   12532    7. http://www.adacore.com/
   12533    8. http://www-cs-faculty.stanford.edu/~knuth/mmix.html
   12534    9. http://www.axis.com/
   12535   10. http://developer.axis.com/
   12536   11. http://www.superh.com/
   12537   12. http://www.x86-64.org/
   12538   13. http://gcc.gnu.org/onlinedocs/
   12539   14. mailto:gcc-help (a] gcc.gnu.org
   12540   15. mailto:gcc (a] gcc.gnu.org
   12541   16. http://gcc.gnu.org/lists.html
   12542   17. http://www.fsf.org/
   12543   18. http://gcc.gnu.org/about.html
   12544   19. http://validator.w3.org/check/referer
   12545 ======================================================================
   12546 http://gcc.gnu.org/gcc-3.0/gcc-3.0.html
   12547 
   12548                                    GCC 3.0.4
   12549 
   12550    February 20, 2002
   12551 
   12552    The [1]GNU project and the GCC developers are pleased to announce the
   12553    release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
   12554    series.
   12555 
   12556    GCC used to stand for the GNU C Compiler, but since the compiler
   12557    supports several other languages aside from C, it now stands for the
   12558    GNU Compiler Collection.
   12559 
   12560    GCC 3.0.x has several new optimizations, new targets, new languages and
   12561    many other new features, relative to GCC 2.95.x. See the [2]new
   12562    features page for a more complete list.
   12563 
   12564    A list of [3]successful builds is updated as new information becomes
   12565    available.
   12566 
   12567    The GCC developers would like to thank the numerous people that have
   12568    contributed new features, test results, bug fixes, etc to GCC. This
   12569    [4]amazing group of volunteers is what makes GCC successful.
   12570 
   12571    And finally, we can't in good conscience fail to mention some
   12572    [5]caveats to using GCC 3.0.x.
   12573 
   12574    For additional information about GCC please refer to the [6]GCC project
   12575    web site or contact the [7]GCC development mailing list.
   12576 
   12577    To obtain GCC please use [8]our mirror sites, or our CVS server.
   12578      __________________________________________________________________
   12579 
   12580 Previous 3.0.x Releases
   12581 
   12582    December 20, 2001: GCC 3.0.3 has been released.
   12583    October 25, 2001: GCC 3.0.2 has been released.
   12584    August 20, 2001: GCC 3.0.1 has been released.
   12585    June 18, 2001: GCC 3.0 has been released.
   12586 
   12587 
   12588     For questions related to the use of GCC, please consult these web
   12589     pages and the [9]GCC manuals. If that fails, the
   12590     [10]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   12591     web pages and the development of GCC are welcome on our developer
   12592     list at [11]gcc (a] gcc.gnu.org. All of [12]our lists have public
   12593     archives.
   12594 
   12595    Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
   12596    distribution of this entire article is permitted in any medium,
   12597    provided this notice is preserved.
   12598 
   12599    These pages are [14]maintained by the GCC team. Last modified
   12600    2012-11-02[15].
   12601 
   12602 References
   12603 
   12604    1. http://www.gnu.org/
   12605    2. http://gcc.gnu.org/gcc-3.0/features.html
   12606    3. http://gcc.gnu.org/gcc-3.0/buildstat.html
   12607    4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   12608    5. http://gcc.gnu.org/gcc-3.0/caveats.html
   12609    6. http://gcc.gnu.org/index.html
   12610    7. mailto:gcc (a] gcc.gnu.org
   12611    8. http://gcc.gnu.org/mirrors.html
   12612    9. http://gcc.gnu.org/onlinedocs/
   12613   10. mailto:gcc-help (a] gcc.gnu.org
   12614   11. mailto:gcc (a] gcc.gnu.org
   12615   12. http://gcc.gnu.org/lists.html
   12616   13. http://www.fsf.org/
   12617   14. http://gcc.gnu.org/about.html
   12618   15. http://validator.w3.org/check/referer
   12619 ======================================================================
   12620 http://gcc.gnu.org/gcc-3.0/features.html
   12621 
   12622                               GCC 3.0 New Features
   12623 
   12624 Additional changes in GCC 3.0.4
   12625 
   12626      * GCC 3.0 now supports newer versions of the [1]NetBSD operating
   12627        system, which use the ELF object file format, on x86 processors.
   12628      * Correct debugging information is generated from functions that have
   12629        lines from multiple files (e.g. yacc output).
   12630      * A fix for whitespace handling in the -traditional preprocessor,
   12631        which can affect Fortran.
   12632      * Fixes to the exception handling runtime.
   12633      * More fixes for bad code generation in C++.
   12634      * A fix for shared library generation under AIX 4.3.
   12635      * Documentation updates.
   12636      * Port of GCC to Tensilica's Xtensa processor contributed.
   12637      * A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).
   12638 
   12639 Additional changes in GCC 3.0.3
   12640 
   12641      * A fix to correct an accidental change to the PowerPC ABI.
   12642      * Fixes for bad code generation on a variety of architectures.
   12643      * Improvements to the debugging information generated for C++
   12644        classes.
   12645      * Fixes for bad code generation in C++.
   12646      * A fix to avoid crashes in the C++ demangler.
   12647      * A fix to the C++ standard library to avoid buffer overflows.
   12648      * Miscellaneous improvements for a variety of architectures.
   12649 
   12650 Additional changes in GCC 3.0.2
   12651 
   12652      * Fixes for bad code generation during loop unrolling.
   12653      * Fixes for bad code generation by the sibling call optimization.
   12654      * Minor improvements to x86 code generation.
   12655      * Implementation of function descriptors in C++ vtables for IA64.
   12656      * Numerous minor bug-fixes.
   12657 
   12658 Additional changes in GCC 3.0.1
   12659 
   12660      * C++ fixes for incorrect code-generation.
   12661      * Improved cross-compiling support for the C++ standard library.
   12662      * Fixes for some embedded targets that worked in GCC 2.95.3, but not
   12663        in GCC 3.0.
   12664      * Fixes for various exception-handling bugs.
   12665      * A port to the S/390 architecture.
   12666 
   12667 General Optimizer Improvements
   12668 
   12669      * [2]Basic block reordering pass.
   12670      * New if-conversion pass with support for conditional (predicated)
   12671        execution.
   12672      * New tail call and sibling call elimination optimizations.
   12673      * New register renaming pass.
   12674      * New (experimental) [3]static single assignment (SSA) representation
   12675        support.
   12676      * New dead-code elimination pass implemented using the SSA
   12677        representation.
   12678      * [4]Global null pointer test elimination.
   12679      * [5]Global code hoisting/unification.
   12680      * More builtins and optimizations for stdio.h, string.h and old BSD
   12681        functions, as well as for ISO C99 functions.
   12682      * New builtin __builtin_expect for giving hints to the branch
   12683        predictor.
   12684 
   12685 New Languages and Language specific improvements
   12686 
   12687      * The GNU Compiler for the Java(TM) language (GCJ) is now integrated
   12688        and supported, including the run-time library containing most
   12689        common non-GUI Java classes, a bytecode interpreter, and the Boehm
   12690        conservative garbage collector. Many bugs have been fixed. GCJ can
   12691        compile Java source or Java bytecodes to either native code or Java
   12692        class files, and supports native methods written in either the
   12693        standard JNI or the more efficient and convenient CNI.
   12694      * Here is a [6]partial list of C++ improvements, both new features
   12695        and those no longer supported.
   12696      * New C++ ABI. On the IA-64 platform GCC is capable of
   12697        inter-operating with other IA-64 compilers.
   12698      * The new ABI also significantly reduces the size of symbol and debug
   12699        information.
   12700      * New [7]C++ support library and many C++ bug fixes, vastly improving
   12701        our conformance to the ISO C++ standard.
   12702      * New [8]inliner for C++.
   12703      * Rewritten C preprocessor, integrated into the C, C++ and Objective
   12704        C compilers, with very many improvements including ISO C99 support
   12705        and [9]improvements to dependency generation.
   12706      * Support for more [10]ISO C99 features.
   12707      * Many improvements to support for checking calls to format functions
   12708        such as printf and scanf, including support for ISO C99 format
   12709        features, extensions from the Single Unix Specification and GNU
   12710        libc 2.2, checking of strfmon formats and features to assist in
   12711        auditing for format string security bugs.
   12712      * New warnings for C code that may have undefined semantics because
   12713        of violations of sequence point rules in the C standard (such as a
   12714        = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall.
   12715      * Additional warning option -Wfloat-equal.
   12716      * Improvements to -Wtraditional.
   12717      * Fortran improvements are listed in [11]the Fortran documentation.
   12718 
   12719 New Targets and Target Specific Improvements
   12720 
   12721      * New x86 back end, generating much improved code.
   12722      * Support for a generic i386-elf target contributed.
   12723      * New option to emit x86 assembly code using Intel style syntax
   12724        (-mintel-syntax).
   12725      * HPUX 11 support contributed.
   12726      * Improved PowerPC code generation, including scheduled prologue and
   12727        epilogue.
   12728      * Port of GCC to Intel's IA-64 processor contributed.
   12729      * Port of GCC to Motorola's MCore 210 and 340 contributed.
   12730      * New unified back-end for Arm, Thumb and StrongArm contributed.
   12731      * Port of GCC to Intel's XScale processor contributed.
   12732      * Port of GCC to Atmel's AVR microcontrollers contributed.
   12733      * Port of GCC to Mitsubishi's D30V processor contributed.
   12734      * Port of GCC to Matsushita's AM33 processor (a member of the MN10300
   12735        processor family) contributed.
   12736      * Port of GCC to Fujitsu's FR30 processor contributed.
   12737      * Port of GCC to Motorola's 68HC11 and 68HC12 processors contributed.
   12738      * Port of GCC to Sun's picoJava processor core contributed.
   12739 
   12740 Documentation improvements
   12741 
   12742      * Substantially rewritten and improved C preprocessor manual.
   12743      * Many improvements to other documentation.
   12744      * Manpages for gcc, cpp and gcov are now generated automatically from
   12745        the master Texinfo manual, eliminating the problem of manpages
   12746        being out of date. (The generated manpages are only extracts from
   12747        the full manual, which is provided in Texinfo form, from which
   12748        info, HTML, other formats and a printed manual can be generated.)
   12749      * Generated info files are included in the release tarballs alongside
   12750        their Texinfo sources, avoiding problems on some platforms with
   12751        building makeinfo as part of the GCC distribution.
   12752 
   12753 Other significant improvements
   12754 
   12755      * Garbage collection used internally by the compiler for most memory
   12756        allocation instead of obstacks.
   12757      * Lengauer and Tarjan algorithm used for computing dominators in the
   12758        CFG. This algorithm can be significantly faster and more space
   12759        efficient than our older algorithm.
   12760      * gccbug script provided to assist in submitting bug reports to our
   12761        bug tracking system. (Bug reports previously submitted directly to
   12762        our mailing lists, for which you received no bug tracking number,
   12763        should be submitted again using gccbug if you can reproduce the
   12764        problem with GCC 3.0.)
   12765      * The internal libgcc library is [12]built as a shared library on
   12766        systems that support it.
   12767      * Extensive testsuite included with GCC, with many new tests. In
   12768        addition to tests for GCC bugs that have been fixed, many tests
   12769        have been added for language features, compiler warnings and
   12770        builtin functions.
   12771      * Additional language-independent warning options -Wpacked, -Wpadded,
   12772        -Wunreachable-code and -Wdisabled-optimization.
   12773      * Target-independent options -falign-functions, -falign-loops and
   12774        -falign-jumps.
   12775 
   12776    Plus a great many bug fixes and almost all the [13]features found in
   12777    GCC 2.95.
   12778 
   12779 
   12780     For questions related to the use of GCC, please consult these web
   12781     pages and the [14]GCC manuals. If that fails, the
   12782     [15]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   12783     web pages and the development of GCC are welcome on our developer
   12784     list at [16]gcc (a] gcc.gnu.org. All of [17]our lists have public
   12785     archives.
   12786 
   12787    Copyright (C) [18]Free Software Foundation, Inc. Verbatim copying and
   12788    distribution of this entire article is permitted in any medium,
   12789    provided this notice is preserved.
   12790 
   12791    These pages are [19]maintained by the GCC team. Last modified
   12792    2013-12-03[20].
   12793 
   12794 References
   12795 
   12796    1. http://www.netbsd.org/
   12797    2. http://gcc.gnu.org/news/reorder.html
   12798    3. http://gcc.gnu.org/news/ssa.html
   12799    4. http://gcc.gnu.org/news/null.html
   12800    5. http://gcc.gnu.org/news/unify.html
   12801    6. http://gcc.gnu.org/gcc-3.0/c++features.html
   12802    7. http://gcc.gnu.org/libstdc++/
   12803    8. http://gcc.gnu.org/news/inlining.html
   12804    9. http://gcc.gnu.org/news/dependencies.html
   12805   10. http://gcc.gnu.org/c99status.html
   12806   11. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
   12807   12. http://gcc.gnu.org/gcc-3.0/libgcc.html
   12808   13. http://gcc.gnu.org/gcc-2.95/features.html
   12809   14. http://gcc.gnu.org/onlinedocs/
   12810   15. mailto:gcc-help (a] gcc.gnu.org
   12811   16. mailto:gcc (a] gcc.gnu.org
   12812   17. http://gcc.gnu.org/lists.html
   12813   18. http://www.fsf.org/
   12814   19. http://gcc.gnu.org/about.html
   12815   20. http://validator.w3.org/check/referer
   12816 ======================================================================
   12817 http://gcc.gnu.org/gcc-3.0/caveats.html
   12818 
   12819                                 GCC 3.0 Caveats
   12820 
   12821      * -fstrict-aliasing is now part of -O2 and higher optimization
   12822        levels. This allows the compiler to assume the strictest aliasing
   12823        rules applicable to the language being compiled. For C and C++,
   12824        this activates optimizations based on the type of expressions. This
   12825        optimization may thus break old, non-compliant code.
   12826      * Enumerations are now properly promoted to int in function
   12827        parameters and function returns. Normally this change is not
   12828        visible, but when using -fshort-enums this is an ABI change.
   12829      * The undocumented extension that allowed C programs to have a label
   12830        at the end of a compound statement has been deprecated and may be
   12831        removed in a future version. Programs that now generate a warning
   12832        about this may be fixed by adding a null statement (a single
   12833        semicolon) after the label.
   12834      * The poorly documented extension that allowed string constants in C,
   12835        C++ and Objective C to contain unescaped newlines has been
   12836        deprecated and may be removed in a future version. Programs using
   12837        this extension may be fixed in several ways: the bare newline may
   12838        be replaced by \n, or preceded by \n\, or string concatenation may
   12839        be used with the bare newline preceded by \n" and " placed at the
   12840        start of the next line.
   12841      * The Chill compiler is not included in GCC 3.0, because of the lack
   12842        of a volunteer to convert it to use garbage collection.
   12843      * Certain non-standard iostream methods from earlier versions of
   12844        libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach,
   12845        ostream::form, and istream::gets.
   12846      * The new C++ ABI is not yet fully supported by current (as of
   12847        2001-07-01) releases and development versions of GDB, or any
   12848        earlier versions. There is a problem setting breakpoints by line
   12849        number, and other related issues that have been fixed in GCC 3.0
   12850        but not yet handled in GDB:
   12851        [1]http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
   12852 
   12853 
   12854     For questions related to the use of GCC, please consult these web
   12855     pages and the [2]GCC manuals. If that fails, the
   12856     [3]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   12857     web pages and the development of GCC are welcome on our developer
   12858     list at [4]gcc (a] gcc.gnu.org. All of [5]our lists have public archives.
   12859 
   12860    Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
   12861    distribution of this entire article is permitted in any medium,
   12862    provided this notice is preserved.
   12863 
   12864    These pages are [7]maintained by the GCC team. Last modified
   12865    2012-11-02[8].
   12866 
   12867 References
   12868 
   12869    1. http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
   12870    2. http://gcc.gnu.org/onlinedocs/
   12871    3. mailto:gcc-help (a] gcc.gnu.org
   12872    4. mailto:gcc (a] gcc.gnu.org
   12873    5. http://gcc.gnu.org/lists.html
   12874    6. http://www.fsf.org/
   12875    7. http://gcc.gnu.org/about.html
   12876    8. http://validator.w3.org/check/referer
   12877 ======================================================================
   12878 http://gcc.gnu.org/gcc-2.95/index.html
   12879 
   12880                                     GCC 2.95
   12881 
   12882    March 16, 2001: The GNU project and the GCC developers are pleased to
   12883    announce the release of GCC version 2.95.3.
   12884 
   12885 Release History
   12886 
   12887    GCC 2.95.3
   12888           March 16, 2001
   12889 
   12890    GCC 2.95.2
   12891           October 27, 1999
   12892 
   12893    GCC 2.95.1
   12894           August 19, 1999
   12895 
   12896    GCC 2.95
   12897           July 31, 1999. This is the first release of GCC since the April
   12898           1999 GCC/EGCS reunification and includes nearly a year's worth
   12899           of new development and bugfixes.
   12900 
   12901 References and Acknowledgements
   12902 
   12903    GCC used to stand for the GNU C Compiler, but since the compiler
   12904    supports several other languages aside from C, it now stands for the
   12905    GNU Compiler Collection.
   12906 
   12907    The whole suite has been extensively [1]regression tested and
   12908    [2]package tested. It should be reliable and suitable for widespread
   12909    use.
   12910 
   12911    The compiler has several new optimizations, new targets, new languages
   12912    and other new features. See the [3]new features page for a more
   12913    complete list of new features found in the GCC 2.95 releases.
   12914 
   12915    The sources include installation instructions in both HTML and
   12916    plaintext forms in the install directory in the distribution. However,
   12917    the most up to date [4]installation instructions and [5]build/test
   12918    status are on the web pages. We will update those pages as new
   12919    information becomes available.
   12920 
   12921    The GCC developers would like to thank the numerous people that have
   12922    contributed new features, test results, bugfixes, etc to GCC. This
   12923    [6]amazing group of volunteers is what makes GCC successful.
   12924 
   12925    And finally, we can't in good conscience fail to mention some
   12926    [7]caveats to using GCC 2.95.
   12927 
   12928    Download GCC 2.95 from one of our many [8]mirror sites.
   12929 
   12930    For additional information about GCC please see the [9]GCC project web
   12931    server or contact the [10]GCC development mailing list.
   12932 
   12933 
   12934     For questions related to the use of GCC, please consult these web
   12935     pages and the [11]GCC manuals. If that fails, the
   12936     [12]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   12937     web pages and the development of GCC are welcome on our developer
   12938     list at [13]gcc (a] gcc.gnu.org. All of [14]our lists have public
   12939     archives.
   12940 
   12941    Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
   12942    distribution of this entire article is permitted in any medium,
   12943    provided this notice is preserved.
   12944 
   12945    These pages are [16]maintained by the GCC team. Last modified
   12946    2012-11-02[17].
   12947 
   12948 References
   12949 
   12950    1. http://gcc.gnu.org/gcc-2.95/regress.html
   12951    2. http://gcc.gnu.org/gcc-2.95/othertest.html
   12952    3. http://gcc.gnu.org/gcc-2.95/features.html
   12953    4. http://gcc.gnu.org/install/
   12954    5. http://gcc.gnu.org/gcc-2.95/buildstat.html
   12955    6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   12956    7. http://gcc.gnu.org/gcc-2.95/caveats.html
   12957    8. http://gcc.gnu.org/mirrors.html
   12958    9. http://gcc.gnu.org/index.html
   12959   10. mailto:gcc (a] gcc.gnu.org
   12960   11. http://gcc.gnu.org/onlinedocs/
   12961   12. mailto:gcc-help (a] gcc.gnu.org
   12962   13. mailto:gcc (a] gcc.gnu.org
   12963   14. http://gcc.gnu.org/lists.html
   12964   15. http://www.fsf.org/
   12965   16. http://gcc.gnu.org/about.html
   12966   17. http://validator.w3.org/check/referer
   12967 ======================================================================
   12968 http://gcc.gnu.org/gcc-2.95/features.html
   12969 
   12970                              GCC 2.95 New Features
   12971 
   12972      * General Optimizer Improvements:
   12973           + [1]Localized register spilling to improve speed and code
   12974             density especially on small register class machines.
   12975           + [2]Global CSE using lazy code motion algorithms.
   12976           + [3]Improved global constant/copy propagation.
   12977           + [4]Improved control flow graph analysis and manipulation.
   12978           + [5]Local dead store elimination.
   12979           + [6]Memory Load hoisting/store sinking in loops.
   12980           + [7]Type based alias analysis is enabled by default. Note this
   12981             feature will expose bugs in the Linux kernel. Please refer to
   12982             the FAQ (as shipped with GCC 2.95) for additional information
   12983             on this issue.
   12984           + Major revamp of GIV detection, combination and simplification
   12985             to improve loop performance.
   12986           + Major improvements to register allocation and reloading.
   12987      * New Languages and Language specific improvements
   12988           + [8]Many C++ improvements.
   12989           + [9]Many Fortran improvements.
   12990           + [10]Java front-end has been integrated. [11]runtime library is
   12991             available separately.
   12992           + [12]ISO C99 support
   12993           + [13]Chill front-end and runtime has been integrated.
   12994           + Boehm garbage collector support in libobjc.
   12995           + More support for various pragmas which appear in vendor
   12996             include files
   12997      * New Targets and Target Specific Improvements
   12998           + [14]SPARC backend rewrite.
   12999           + -mschedule=8000 will optimize code for PA8000 class
   13000             processors; -mpa-risc-2-0 will generate code for PA2.0
   13001             processors
   13002           + Various micro-optimizations for the ia32 port. K6
   13003             optimizations
   13004           + Compiler will attempt to align doubles in the stack on the
   13005             ia32 port
   13006           + Alpha EV6 support
   13007           + PowerPC 750
   13008           + RS6000/PowerPC: -mcpu=401 was added as an alias for -mcpu=403.
   13009             -mcpu=e603e was added to do -mcpu=603e and -msoft-float.
   13010           + c3x, c4x
   13011           + HyperSPARC
   13012           + SparcLite86x
   13013           + sh4
   13014           + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
   13015             arm-linux)
   13016           + vxWorks targets include support for vxWorks threads
   13017           + StrongARM 110 and ARM9 support added. ARM Scheduling
   13018             parameters rewritten.
   13019           + Various changes to the MIPS port to avoid assembler macros,
   13020             which in turn improves performance
   13021           + Various performance improvements to the i960 port.
   13022           + Major rewrite of ns32k port
   13023      * Other significant improvements
   13024           + [15]Ability to dump cfg information and display it using vcg.
   13025           + The new faster scheme for fixing vendor header files is
   13026             enabled by default.
   13027           + Experimental internationalization support.
   13028           + multibyte character support
   13029           + Some compile-time speedups for pathological problems
   13030           + Better support for complex types
   13031      * Plus the usual mountain of bugfixes
   13032      * Core compiler is based on the gcc2 development tree from Sept 30,
   13033        1998, so we have all of the [16]features found in GCC 2.8.
   13034 
   13035 Additional Changes in GCC 2.95.1
   13036 
   13037      * Generic bugfixes and improvements
   13038           + Various documentation fixes related to the GCC/EGCS merger.
   13039           + Fix memory management bug which could lead to spurious aborts,
   13040             core dumps or random parsing errors in the compiler.
   13041           + Fix a couple bugs in the dwarf1 and dwarf2 debug record
   13042             support.
   13043           + Fix infinite loop in the CSE optimizer.
   13044           + Avoid undefined behavior in compiler FP emulation code
   13045           + Fix install problem when prefix is overridden on the make
   13046             install command.
   13047           + Fix problem with unwanted installation of assert.h on some
   13048             systems.
   13049           + Fix problem with finding the wrong assembler in a single tree
   13050             build.
   13051           + Avoid increasing the known alignment of a register that is
   13052             already known to be a pointer.
   13053      * Platform specific bugfixes and improvements
   13054           + Codegen bugfix for prologue/epilogue for cpu32 target.
   13055           + Fix long long code generation bug for the Coldfire target.
   13056           + Fix various aborts in the SH compiler.
   13057           + Fix bugs in libgcc support library for the SH.
   13058           + Fix alpha ev6 code generation bug.
   13059           + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on
   13060             AIX platforms.
   13061           + Fix -fpic code generation bug for rs6000/ppc svr4 targets.
   13062           + Fix varargs/stdarg code generation bug for rs6000/ppc svr4
   13063             targets.
   13064           + Fix weak symbol handling for rs6000/ppc svr4 targets.
   13065           + Fix various problems with 64bit code generation for the
   13066             rs6000/ppc port.
   13067           + Fix codegen bug which caused tetex to be mis-compiled on the
   13068             x86.
   13069           + Fix compiler abort in new cfg code exposed by x86 port.
   13070           + Fix out of range array reference in code convert flat
   13071             registers to the x87 stacked FP register file.
   13072           + Fix minor vxworks configuration bug.
   13073           + Fix return type of bsearch for SunOS 4.x.
   13074      * Language & Runtime specific fixes.
   13075           + The G++ signature extension has been deprecated. It will be
   13076             removed in the next major release of G++. Use of signatures
   13077             will result in a warning from the compiler.
   13078           + Several bugs relating to templates and namespaces were fixed.
   13079           + A bug that caused crashes when combining templates with -g on
   13080             DWARF1 platforms was fixed.
   13081           + Pointers-to-members, virtual functions, and multiple
   13082             inheritance should now work together correctly.
   13083           + Some code-generation bugs relating to function try blocks were
   13084             fixed.
   13085           + G++ is a little bit more lenient with certain archaic
   13086             constructs than in GCC 2.95.
   13087           + Fix to prevent shared library version #s from bring truncated
   13088             to 1 digit
   13089           + Fix missing std:: in the libstdc++ library.
   13090           + Fix stream locking problems in libio.
   13091           + Fix problem in java compiler driver.
   13092 
   13093 Additional Changes in GCC 2.95.2
   13094 
   13095    The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While
   13096    the optimizations performed by -fstrict-aliasing are valid according to
   13097    the C and C++ standards, the optimization have caused some problems,
   13098    particularly with old non-conforming code.
   13099 
   13100    The GCC developers are experimenting with ways to warn users about code
   13101    which violates the C/C++ standards, but those warnings are not ready
   13102    for widespread use at this time. Rather than wait for those warnings
   13103    the GCC developers have chosen to disable -fstrict-aliasing by default
   13104    for the GCC 2.95.2 release.
   13105 
   13106    We strongly encourage developers to find and fix code which violates
   13107    the C/C++ standards as -fstrict-aliasing may be enabled by default in
   13108    future releases. Use the option -fstrict-aliasing to re-enable these
   13109    optimizations.
   13110      * Generic bugfixes and improvements
   13111           + Fix incorrectly optimized memory reference in global common
   13112             subexpression elimination (GCSE) optimization pass.
   13113           + Fix code generation bug in regmove.c in which it could
   13114             incorrectly change a "const" value.
   13115           + Fix bug in optimization of conditionals involving volatile
   13116             memory references.
   13117           + Avoid over-allocation of stack space for some procedures.
   13118           + Fixed bug in the compiler which caused incorrect optimization
   13119             of an obscure series of bit manipulations, shifts and
   13120             arithmetic.
   13121           + Fixed register allocator bug which caused teTeX to be
   13122             mis-compiled on SPARC targets.
   13123           + Avoid incorrect optimization of degenerate case statements for
   13124             certain targets such as the ARM.
   13125           + Fix out of range memory reference in the jump optimizer.
   13126           + Avoid dereferencing null pointer in fix-header.
   13127           + Fix test for GCC specific features so that it is possible to
   13128             bootstrap with gcc-2.6.2 and older versions of GCC.
   13129           + Fix typo in scheduler which could potentially cause out of
   13130             range memory accesses.
   13131           + Avoid incorrect loop reversal which caused incorrect code for
   13132             certain loops on PowerPC targets.
   13133           + Avoid incorrect optimization of switch statements on certain
   13134             targets (for example the ARM).
   13135      * Platform specific bugfixes and improvements
   13136           + Work around bug in Sun V5.0 compilers which caused bootstrap
   13137             comparison failures on SPARC targets.
   13138           + Fix SPARC backend bug which caused aborts in final.c.
   13139           + Fix sparc-hal-solaris2* configuration fragments.
   13140           + Fix bug in sparc block profiling.
   13141           + Fix obscure code generation bug for the PARISC targets.
   13142           + Define __STDC_EXT__ for HPUX configurations.
   13143           + Various POWERPC64 code generation bugfixes.
   13144           + Fix abort for PPC targets using ELF (ex GNU/Linux).
   13145           + Fix collect2 problems for AIX targets.
   13146           + Correct handling of .file directive for PPC targets.
   13147           + Fix bug in fix_trunc x86 patterns.
   13148           + Fix x86 port to correctly pop the FP stack for functions that
   13149             return structures in memory.
   13150           + Fix minor bug in strlen x86 pattern.
   13151           + Use stabs debugging instead of dwarf1 for x86-solaris targets.
   13152           + Fix template repository code to handle leading underscore in
   13153             mangled names.
   13154           + Fix weak/weak alias support for OpenBSD.
   13155           + GNU/Linux for the ARM has C++ compatible include files.
   13156      * Language & Runtime specific fixes.
   13157           + Fix handling of constructor attribute in the C front-end which
   13158             caused problems building the Chill runtime library on some
   13159             targets.
   13160           + Fix minor problem merging type qualifiers in the C front-end.
   13161           + Fix aliasing bug for pointers and references (C/C++).
   13162           + Fix incorrect "non-constant initializer bug" when -traditional
   13163             or -fwritable-strings is enabled.
   13164           + Fix build error for Chill front-end on SunOS.
   13165           + Do not complain about duplicate instantiations when using
   13166             -frepo (C++).
   13167           + Fix array bounds handling in C++ front-end which caused
   13168             problems with dwarf debugging information in some
   13169             circumstances.
   13170           + Fix minor namespace problem.
   13171           + Fix problem linking java programs.
   13172 
   13173 Additional Changes in GCC 2.95.3
   13174 
   13175      * Generic bugfixes and improvements
   13176           + Fix numerous problems that caused incorrect optimization in
   13177             the register reloading code.
   13178           + Fix numerous problems that caused incorrect optimization in
   13179             the loop optimizer.
   13180           + Fix aborts in the functions build_insn_chain and scan_loops
   13181             under some circumstances.
   13182           + Fix an alias analysis bug.
   13183           + Fix an infinite compilation bug in the combiner.
   13184           + A few problems with complex number support have been fixed.
   13185           + It is no longer possible for gcc to act as a fork bomb when
   13186             installed incorrectly.
   13187           + The -fpack-struct option should be recognized now.
   13188           + Fixed a bug that caused incorrect code to be generated due to
   13189             a lost stack adjustment.
   13190      * Platform specific bugfixes and improvements
   13191           + Support building ARM toolchains hosted on Windows.
   13192           + Fix attribute calculations in ARM toolchains.
   13193           + arm-linux support has been improved.
   13194           + Fix a PIC failure on sparc targets.
   13195           + On ix86 targets, the regparm attribute should now work
   13196             reliably.
   13197           + Several updates for the h8300 port.
   13198           + Fix problem building libio with glibc 2.2.
   13199 
   13200 
   13201     For questions related to the use of GCC, please consult these web
   13202     pages and the [17]GCC manuals. If that fails, the
   13203     [18]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   13204     web pages and the development of GCC are welcome on our developer
   13205     list at [19]gcc (a] gcc.gnu.org. All of [20]our lists have public
   13206     archives.
   13207 
   13208    Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
   13209    distribution of this entire article is permitted in any medium,
   13210    provided this notice is preserved.
   13211 
   13212    These pages are [22]maintained by the GCC team. Last modified
   13213    2012-11-02[23].
   13214 
   13215 References
   13216 
   13217    1. http://gcc.gnu.org/news/spill.html
   13218    2. http://gcc.gnu.org/news/lcm.html
   13219    3. http://gcc.gnu.org/news/cprop.html
   13220    4. http://gcc.gnu.org/news/cfg.html
   13221    5. http://gcc.gnu.org/news/dse.html
   13222    6. http://gcc.gnu.org/news/hoist.html
   13223    7. http://gcc.gnu.org/news/alias.html
   13224    8. http://gcc.gnu.org/gcc-2.95/c++features.html
   13225    9. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
   13226   10. http://gcc.gnu.org/java/gcj-announce.txt
   13227   11. http://gcc.gnu.org/news/javaannounce.html
   13228   12. http://gcc.gnu.org/c99status.html
   13229   13. http://gcc.gnu.org/news/chill.html
   13230   14. http://gcc.gnu.org/news/sparc.html
   13231   15. http://gcc.gnu.org/news/egcs-vcg.html
   13232   16. http://gcc.gnu.org/egcs-1.0/features-2.8.html
   13233   17. http://gcc.gnu.org/onlinedocs/
   13234   18. mailto:gcc-help (a] gcc.gnu.org
   13235   19. mailto:gcc (a] gcc.gnu.org
   13236   20. http://gcc.gnu.org/lists.html
   13237   21. http://www.fsf.org/
   13238   22. http://gcc.gnu.org/about.html
   13239   23. http://validator.w3.org/check/referer
   13240 ======================================================================
   13241 http://gcc.gnu.org/gcc-2.95/caveats.html
   13242 
   13243                                 GCC 2.95 Caveats
   13244 
   13245      * GCC 2.95 will issue an error for invalid asm statements that had
   13246        been silently accepted by earlier versions of the compiler. This is
   13247        particularly noticeable when compiling older versions of the Linux
   13248        kernel (2.0.xx). Please refer to the FAQ (as shipped with GCC 2.95)
   13249        for more information on this issue.
   13250      * GCC 2.95 implements type based alias analysis to disambiguate
   13251        memory references. Some programs, particularly the Linux kernel
   13252        violate ANSI/ISO aliasing rules and therefore may not operate
   13253        correctly when compiled with GCC 2.95. Please refer to the FAQ (as
   13254        shipped with GCC 2.95) for more information on this issue.
   13255      * GCC 2.95 has a known bug in its handling of complex variables for
   13256        64bit targets. Instead of silently generating incorrect code, GCC
   13257        2.95 will issue a fatal error for situations it can not handle.
   13258        This primarily affects the Fortran community as Fortran makes more
   13259        use of complex variables than C or C++.
   13260      * GCC 2.95 has an integrated libstdc++, but does not have an
   13261        integrated libg++. Furthermore old libg++ releases will not work
   13262        with GCC 2.95. You can retrieve a recent copy of libg++ from the
   13263        [1]GCC ftp server.
   13264        Note most C++ programs only need libstdc++.
   13265      * Exception handling may not work with shared libraries, particularly
   13266        on alphas, hppas, rs6000/powerpc and mips based platforms.
   13267        Exception handling is known to work on x86 GNU/Linux platforms with
   13268        shared libraries.
   13269      * In general, GCC 2.95 is more rigorous about rejecting invalid C++
   13270        code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0,
   13271        or EGCS 1.1. As a result it may be necessary to fix C++ code before
   13272        it will compile with GCC 2.95.
   13273      * G++ is also converting toward the ISO C++ standard; as a result
   13274        code which was previously valid (and thus accepted by other
   13275        compilers and older versions of g++) may no longer be accepted. The
   13276        flag -fpermissive may allow some non-conforming code to compile
   13277        with GCC 2.95.
   13278      * GCC 2.95 compiled C++ code is not binary compatible with EGCS
   13279        1.1.x, EGCS 1.0.x or GCC 2.8.x.
   13280      * GCC 2.95 does not have changes from the GCC 2.8 tree that were made
   13281        between Sept 30, 1998 and April 30, 1999 (the official end of the
   13282        GCC 2.8 project). Future GCC releases will include all the changes
   13283        from the defunct GCC 2.8 sources.
   13284 
   13285 
   13286     For questions related to the use of GCC, please consult these web
   13287     pages and the [2]GCC manuals. If that fails, the
   13288     [3]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   13289     web pages and the development of GCC are welcome on our developer
   13290     list at [4]gcc (a] gcc.gnu.org. All of [5]our lists have public archives.
   13291 
   13292    Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
   13293    distribution of this entire article is permitted in any medium,
   13294    provided this notice is preserved.
   13295 
   13296    These pages are [7]maintained by the GCC team. Last modified
   13297    2012-11-02[8].
   13298 
   13299 References
   13300 
   13301    1. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz
   13302    2. http://gcc.gnu.org/onlinedocs/
   13303    3. mailto:gcc-help (a] gcc.gnu.org
   13304    4. mailto:gcc (a] gcc.gnu.org
   13305    5. http://gcc.gnu.org/lists.html
   13306    6. http://www.fsf.org/
   13307    7. http://gcc.gnu.org/about.html
   13308    8. http://validator.w3.org/check/referer
   13309 ======================================================================
   13310 http://gcc.gnu.org/egcs-1.1/index.html
   13311 
   13312                                     EGCS 1.1
   13313 
   13314    September 3, 1998: We are pleased to announce the release of EGCS 1.1.
   13315    December 1, 1998: We are pleased to announce the release of EGCS 1.1.1.
   13316    March 15, 1999: We are pleased to announce the release of EGCS 1.1.2.
   13317 
   13318    EGCS is a free software project to further the development of the GNU
   13319    compilers using an open development environment.
   13320 
   13321    EGCS 1.1 is a major new release of the EGCS compiler system. It has
   13322    been [1]extensively tested and is believed to be stable and suitable
   13323    for widespread use.
   13324 
   13325    EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8
   13326    development sources; it contains all of the new features found in GCC
   13327    2.8.1 as well as all new development from GCC up to June 6, 1998.
   13328 
   13329    EGCS 1.1 also contains many improvements and features not found in GCC
   13330    or in older versions of EGCS:
   13331      * Global common subexpression elimination and global constant/copy
   13332        propagation (aka [2]gcse)
   13333      * Ongoing improvements to the [3]alias analysis support to allow for
   13334        better optimizations throughout the compiler.
   13335      * Vastly improved [4]C++ compiler and integrated C++ runtime
   13336        libraries.
   13337      * Fixes for the /tmp symlink race security problems.
   13338      * New targets including mips16, arm-thumb and 64 bit PowerPC.
   13339      * Improvements to GNU Fortran (g77) compiler and runtime library made
   13340        since g77 version 0.5.23.
   13341 
   13342    See the [5]new features page for a more complete list of new features
   13343    found in EGCS 1.1 releases.
   13344 
   13345    EGCS 1.1.1 is a minor update to fix several serious problems in EGCS
   13346    1.1:
   13347      * General improvements and fixes
   13348           + Avoid some stack overflows when compiling large functions.
   13349           + Avoid incorrect loop invariant code motions.
   13350           + Fix some core dumps on Linux kernel code.
   13351           + Bring back the imake -Di386 and friends fix from EGCS 1.0.2.
   13352           + Fix code generation problem in gcse.
   13353           + Various documentation related fixes.
   13354      * g++/libstdc++ improvements and fixes
   13355           + MT safe EH fix for setjmp/longjmp based exception handling.
   13356           + Fix a few bad interactions between optimization and exception
   13357             handling.
   13358           + Fixes for demangling of template names starting with "__".
   13359           + Fix a bug that would fail to run destructors in some cases
   13360             with -O2.
   13361           + Fix 'new' of classes with virtual bases.
   13362           + Fix crash building Qt on the Alpha.
   13363           + Fix failure compiling WIFEXITED macro on GNU/Linux.
   13364           + Fix some -frepo failures.
   13365      * g77 and libf2c improvements and fixes
   13366           + Various documentation fixes.
   13367           + Avoid compiler crash on RAND intrinsic.
   13368           + Fix minor bugs in makefiles exposed by BSD make programs.
   13369           + Define _XOPEN_SOURCE for libI77 build to avoid potential
   13370             problems on some 64-bit systems.
   13371           + Fix problem with implicit endfile on rewind.
   13372           + Fix spurious recursive I/O errors.
   13373      * platform specific improvements and fixes
   13374           + Match all versions of UnixWare7.
   13375           + Do not assume x86 SVR4 or UnixWare targets can handle stabs.
   13376           + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion
   13377             from unsigned ints to double precision floats.
   13378           + Fix ARM ABI issue with NetBSD.
   13379           + Fix a few arm code generation bugs.
   13380           + Fixincludes will fix additional broken SCO OpenServer header
   13381             files.
   13382           + Fix a m68k backend bug which caused invalid offsets in reg+d
   13383             addresses.
   13384           + Fix problems with 64bit AIX 4.3 support.
   13385           + Fix handling of long longs for varargs/stdarg functions on the
   13386             ppc.
   13387           + Minor fixes to CPP predefines for Windows.
   13388           + Fix code generation problems with gpr<->fpr copies for 64bit
   13389             ppc.
   13390           + Fix a few coldfire code generation bugs.
   13391           + Fix some more header file problems on SunOS 4.x.
   13392           + Fix assert.h handling for RTEMS.
   13393           + Fix Windows handling of TREE_SYMBOL_REFERENCED.
   13394           + Fix x86 compiler abort in reg-stack pass.
   13395           + Fix cygwin/windows problem with section attributes.
   13396           + Fix Alpha code generation problem exposed by SMP Linux
   13397             kernels.
   13398           + Fix typo in m68k 32->64bit integer conversion.
   13399           + Make sure target libraries build with -fPIC for PPC & Alpha
   13400             targets.
   13401 
   13402    EGCS 1.1.2 is a minor update to fix several serious problems in EGCS
   13403    1.1.1:
   13404      * General improvements and fixes
   13405           + Fix bug in loop optimizer which caused the SPARC (and
   13406             potentially other) ports to segfault.
   13407           + Fix infinite recursion in alias analysis and combiner code.
   13408           + Fix bug in regclass preferencing.
   13409           + Fix incorrect loop reversal which caused incorrect code to be
   13410             generated for several targets.
   13411           + Fix return value for builtin memcpy.
   13412           + Reduce compile time for certain loops which exposed quadratic
   13413             behavior in the loop optimizer.
   13414           + Fix bug which caused volatile memory to be written multiple
   13415             times when only one write was needed/desired.
   13416           + Fix compiler abort in caller-save.c
   13417           + Fix combiner bug which caused incorrect code generation for
   13418             certain division by constant operations.
   13419           + Fix incorrect code generation due to a bug in range check
   13420             optimizations.
   13421           + Fix incorrect code generation due to mis-handling of clobbered
   13422             values in CSE.
   13423           + Fix compiler abort/segfault due to incorrect register
   13424             splitting when unrolling loops.
   13425           + Fix code generation involving autoincremented addresses with
   13426             ternary operators.
   13427           + Work around bug in the scheduler which caused qt to be
   13428             mis-compiled on some platforms.
   13429           + Fix code generation problems with -fshort-enums.
   13430           + Tighten security for temporary files.
   13431           + Improve compile time for codes which make heavy use of
   13432             overloaded functions.
   13433           + Fix multiply defined constructor/destructor symbol problems.
   13434           + Avoid setting bogus RPATH environment variable during
   13435             bootstrap.
   13436           + Avoid GNU-make dependencies in the texinfo subdir.
   13437           + Install CPP wrapper script in $(prefix)/bin if --enable-cpp.
   13438             --enable-cpp=<dirname> can be used to specify an additional
   13439             install directory for the cpp wrapper script.
   13440           + Fix CSE bug which caused incorrect label-label refs to appear
   13441             on some platforms.
   13442           + Avoid linking in EH routines from libgcc if they are not
   13443             needed.
   13444           + Avoid obscure bug in aliasing code.
   13445           + Fix bug in weak symbol handling.
   13446      * Platform-specific improvements and fixes
   13447           + Fix detection of PPro/PII on Unixware 7.
   13448           + Fix compiler segfault when building spec99 and other programs
   13449             for SPARC targets.
   13450           + Fix code-generation bugs for integer and floating point
   13451             conditional move instructions on the PPro/PII.
   13452           + Use fixincludes to fix byteorder problems on i?86-*-sysv.
   13453           + Fix build failure for the arc port.
   13454           + Fix floating point format configuration for i?86-gnu port.
   13455           + Fix problems with hppa1.0-hp-hpux10.20 configuration when
   13456             threads are enabled.
   13457           + Fix coldfire code generation bugs.
   13458           + Fix "unrecognized insn" problems for Alpha and PPC ports.
   13459           + Fix h8/300 code generation problem with floating point values
   13460             in memory.
   13461           + Fix unrecognized insn problems for the m68k port.
   13462           + Fix namespace-pollution problem for the x86 port.
   13463           + Fix problems with old assembler on x86 NeXT systems.
   13464           + Fix PIC code-generation problems for the SPARC port.
   13465           + Fix minor bug with LONG_CALLS in PowerPC SVR4 support.
   13466           + Fix minor ISO namespace violation in Alpha varargs/stdarg
   13467             support.
   13468           + Fix incorrect "braf" instruction usage for the SH port.
   13469           + Fix minor bug in va-sh which prevented its use with -ansi.
   13470           + Fix problems recognizing and supporting FreeBSD.
   13471           + Handle OpenBSD systems correctly.
   13472           + Minor fixincludes fix for Digital UNIX 4.0B.
   13473           + Fix problems with ctors/dtors in SCO shared libraries.
   13474           + Abort instead of generating incorrect code for PPro/PII
   13475             floating point conditional moves.
   13476           + Avoid multiply defined symbols on GNU/Linux systems using
   13477             libc-5.4.xx.
   13478           + Fix abort in alpha compiler.
   13479      * Fortran-specific fixes
   13480           + Fix the IDate intrinsic (VXT) (in libg2c) so the returned year
   13481             is in the documented, non-Y2K-compliant range of 0-99, instead
   13482             of being returned as 100 in the year 2000.
   13483           + Fix the `Date_and_Time' intrinsic (in libg2c) to return the
   13484             milliseconds value properly in Values(8).
   13485           + Fix the `LStat' intrinsic (in libg2c) to return device-ID
   13486             information properly in SArray(7).
   13487 
   13488    Each release includes installation instructions in both HTML and
   13489    plaintext forms (see the INSTALL directory in the toplevel directory of
   13490    the distribution). However, we also keep the most up to date
   13491    [6]installation instructions and [7]build/test status on our web page.
   13492    We will update those pages as new information becomes available.
   13493 
   13494    The EGCS project would like to thank the numerous people that have
   13495    contributed new features, test results, bugfixes, etc. This [8]amazing
   13496    group of volunteers is what makes EGCS successful.
   13497 
   13498    And finally, we can't in good conscience fail to mention some
   13499    [9]caveats to using EGCS 1.1.
   13500 
   13501    Download EGCS from egcs.cygnus.com (USA California).
   13502 
   13503    The EGCS 1.1 release is also available on many mirror sites.
   13504    [10]Goto mirror list to find a closer site.
   13505 
   13506 
   13507     For questions related to the use of GCC, please consult these web
   13508     pages and the [11]GCC manuals. If that fails, the
   13509     [12]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   13510     web pages and the development of GCC are welcome on our developer
   13511     list at [13]gcc (a] gcc.gnu.org. All of [14]our lists have public
   13512     archives.
   13513 
   13514    Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
   13515    distribution of this entire article is permitted in any medium,
   13516    provided this notice is preserved.
   13517 
   13518    These pages are [16]maintained by the GCC team. Last modified
   13519    2012-11-02[17].
   13520 
   13521 References
   13522 
   13523    1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html
   13524    2. http://gcc.gnu.org/news/gcse.html
   13525    3. http://gcc.gnu.org/news/alias.html
   13526    4. http://gcc.gnu.org/egcs-1.1/c++features.html
   13527    5. http://gcc.gnu.org/egcs-1.1/features.html
   13528    6. http://gcc.gnu.org/install/
   13529    7. http://gcc.gnu.org/egcs-1.1/buildstat.html
   13530    8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   13531    9. http://gcc.gnu.org/egcs-1.1/caveats.html
   13532   10. http://gcc.gnu.org/mirrors.html
   13533   11. http://gcc.gnu.org/onlinedocs/
   13534   12. mailto:gcc-help (a] gcc.gnu.org
   13535   13. mailto:gcc (a] gcc.gnu.org
   13536   14. http://gcc.gnu.org/lists.html
   13537   15. http://www.fsf.org/
   13538   16. http://gcc.gnu.org/about.html
   13539   17. http://validator.w3.org/check/referer
   13540 ======================================================================
   13541 http://gcc.gnu.org/egcs-1.1/features.html
   13542 
   13543                              EGCS 1.1 new features
   13544 
   13545      * Integrated GNU Fortran (g77) compiler and runtime library with
   13546        improvements, based on g77 version 0.5.23.
   13547      * Vast improvements in the C++ compiler; so many they have [1]page of
   13548        their own!
   13549      * Compiler implements [2]global common subexpression elimination and
   13550        global copy/constant propagation.
   13551      * More major improvements in the [3]alias analysis code.
   13552      * More major improvements in the exception handling code to improve
   13553        performance, lower static overhead and provide the infrastructure
   13554        for future improvements.
   13555      * The infamous /tmp symlink race security problems have been fixed.
   13556      * The regmove optimization pass has been nearly completely rewritten
   13557        to improve performance of generated code.
   13558      * The compiler now recomputes register usage information before local
   13559        register allocation. By providing more accurate information to the
   13560        priority based allocator, we get better register allocation.
   13561      * The register reloading phase of the compiler optimizes spill code
   13562        much better than in previous releases.
   13563      * Some bad interactions between the register allocator and
   13564        instruction scheduler have been fixed, resulting in much better
   13565        code for certain programs. Additionally, we have tuned the
   13566        scheduler in various ways to improve performance of generated code
   13567        for some architectures.
   13568      * The compiler's branch shortening algorithms have been significantly
   13569        improved to work better on targets which align jump targets.
   13570      * The compiler now supports -Os to prefer optimizing for code space
   13571        over optimizing for code speed.
   13572      * The compiler will now totally eliminate library calls which compute
   13573        constant values. This primarily helps targets with no integer
   13574        div/mul support and targets without floating point support.
   13575      * The compiler now supports an extensive "--help" option.
   13576      * cpplib has been greatly improved and may be suitable for limited
   13577        use.
   13578      * Memory footprint for the compiler has been significantly reduced
   13579        for some pathological cases.
   13580      * The time to build EGCS has been improved for certain targets
   13581        (particularly the alpha and mips platforms).
   13582      * Many infrastructure improvements throughout the compiler, plus the
   13583        usual mountain of bugfixes and minor improvements.
   13584      * Target dependent improvements:
   13585           + SPARC port now includes V8 plus and V9 support as well as
   13586             performance tuning for Ultra class machines. The SPARC port
   13587             now uses the Haifa scheduler.
   13588           + Alpha port has been tuned for the EV6 processor and has an
   13589             optimized expansion of memcpy/bzero. The Alpha port now uses
   13590             the Haifa scheduler.
   13591           + RS6000/PowerPC: support for the Power64 architecture and AIX
   13592             4.3. The RS6000/PowerPC port now uses the Haifa scheduler.
   13593           + x86: Alignment of static store data and jump targets is per
   13594             Intel recommendations now. Various improvements throughout the
   13595             x86 port to improve performance on Pentium processors
   13596             (including improved epilogue sequences for Pentium chips and
   13597             backend improvements which should help register allocation on
   13598             all x86 variants. Conditional move support has been fixed and
   13599             enabled for PPro processors. The x86 port also better supports
   13600             64bit operations now. Unixware 7, a System V Release 5 target,
   13601             is now supported and SCO OpenServer targets can support GAS.
   13602           + MIPS has improved multiply/multiply-add support and now
   13603             includes mips16 ISA support.
   13604           + M68k has many micro-optimizations and Coldfire fixes.
   13605      * Core compiler is based on the GCC development tree from June 9,
   13606        1998, so we have all of the [4]features found in GCC 2.8.
   13607 
   13608 
   13609     For questions related to the use of GCC, please consult these web
   13610     pages and the [5]GCC manuals. If that fails, the
   13611     [6]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   13612     web pages and the development of GCC are welcome on our developer
   13613     list at [7]gcc (a] gcc.gnu.org. All of [8]our lists have public archives.
   13614 
   13615    Copyright (C) [9]Free Software Foundation, Inc. Verbatim copying and
   13616    distribution of this entire article is permitted in any medium,
   13617    provided this notice is preserved.
   13618 
   13619    These pages are [10]maintained by the GCC team. Last modified
   13620    2012-11-02[11].
   13621 
   13622 References
   13623 
   13624    1. http://gcc.gnu.org/egcs-1.1/c++features.html
   13625    2. http://gcc.gnu.org/news/gcse.html
   13626    3. http://gcc.gnu.org/news/alias.html
   13627    4. http://gcc.gnu.org/egcs-1.0/features-2.8.html
   13628    5. http://gcc.gnu.org/onlinedocs/
   13629    6. mailto:gcc-help (a] gcc.gnu.org
   13630    7. mailto:gcc (a] gcc.gnu.org
   13631    8. http://gcc.gnu.org/lists.html
   13632    9. http://www.fsf.org/
   13633   10. http://gcc.gnu.org/about.html
   13634   11. http://validator.w3.org/check/referer
   13635 ======================================================================
   13636 http://gcc.gnu.org/egcs-1.1/caveats.html
   13637 
   13638                                 EGCS 1.1 Caveats
   13639 
   13640      * EGCS has an integrated libstdc++, but does not have an integrated
   13641        libg++. Furthermore old libg++ releases will not work with EGCS; HJ
   13642        Lu has made a libg++-2.8.1.2 snapshot available which may work with
   13643        EGCS.
   13644        Note most C++ programs only need libstdc++.
   13645      * Exception handling may not work with shared libraries, particularly
   13646        on alphas, hppas, rs6000/powerpc and mips based platforms.
   13647        Exception handling is known to work on x86-linux platforms with
   13648        shared libraries.
   13649      * Some versions of the Linux kernel have bugs which prevent them from
   13650        being compiled or from running when compiled by EGCS. See the FAQ
   13651        (as shipped with EGCS 1.1) for additional information.
   13652      * In general, EGCS is more rigorous about rejecting invalid C++ code
   13653        or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As
   13654        a result it may be necessary to fix C++ code before it will compile
   13655        with EGCS.
   13656      * G++ is also converting toward the ISO C++ standard; as a result
   13657        code which was previously valid (and thus accepted by other
   13658        compilers and older versions of g++) may no longer be accepted.
   13659      * EGCS 1.1 compiled C++ code is not binary compatible with EGCS 1.0.x
   13660        or GCC 2.8.x due to changes necessary to support thread safe
   13661        exception handling.
   13662 
   13663 
   13664     For questions related to the use of GCC, please consult these web
   13665     pages and the [1]GCC manuals. If that fails, the
   13666     [2]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   13667     web pages and the development of GCC are welcome on our developer
   13668     list at [3]gcc (a] gcc.gnu.org. All of [4]our lists have public archives.
   13669 
   13670    Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
   13671    distribution of this entire article is permitted in any medium,
   13672    provided this notice is preserved.
   13673 
   13674    These pages are [6]maintained by the GCC team. Last modified
   13675    2012-11-02[7].
   13676 
   13677 References
   13678 
   13679    1. http://gcc.gnu.org/onlinedocs/
   13680    2. mailto:gcc-help (a] gcc.gnu.org
   13681    3. mailto:gcc (a] gcc.gnu.org
   13682    4. http://gcc.gnu.org/lists.html
   13683    5. http://www.fsf.org/
   13684    6. http://gcc.gnu.org/about.html
   13685    7. http://validator.w3.org/check/referer
   13686 ======================================================================
   13687 http://gcc.gnu.org/egcs-1.0/index.html
   13688 
   13689                                     EGCS 1.0
   13690 
   13691    December 3, 1997: We are pleased to announce the release of EGCS 1.0.
   13692    January 6, 1998: We are pleased to announce the release of EGCS 1.0.1.
   13693    March 16, 1998: We are pleased to announce the release of EGCS 1.0.2.
   13694    May 15, 1998 We are pleased to announce the release of EGCS 1.0.3.
   13695 
   13696    EGCS is a collaborative effort involving several groups of hackers
   13697    using an open development model to accelerate development and testing
   13698    of GNU compilers and runtime libraries.
   13699 
   13700    An important goal of EGCS is to allow wide scale testing of
   13701    experimental features and optimizations; therefore, EGCS contains some
   13702    features and optimizations which are still under development. However,
   13703    EGCS has been carefully tested and should be comparable in quality to
   13704    most GCC releases.
   13705 
   13706    EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8
   13707    development sources; it contains nearly all of the new features found
   13708    in GCC 2.8.
   13709 
   13710    EGCS 1.0 also contains many improvements and features not found in GCC
   13711    2.7 and even the GCC 2.8 series (which was released after the original
   13712    EGCS 1.0 release).
   13713      * Integrated C++ runtime libraries, including support for most major
   13714        GNU/Linux systems!
   13715      * The integrated libstdc++ library includes a verbatim copy of SGI's
   13716        STL release.
   13717      * Integrated GNU Fortran compiler.
   13718      * New instruction scheduler.
   13719      * New alias analysis code.
   13720 
   13721    See the [1]new features page for a more complete list of new features.
   13722 
   13723    EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few
   13724    critical bugs and add support for Red Hat 5.0 Linux. Changes since the
   13725    EGCS 1.0 release:
   13726      * Add support for Red Hat 5.0 Linux and better support for Linux
   13727        systems using glibc2.
   13728        Many programs failed to link when compiled with EGCS 1.0 on Red Hat
   13729        5.0 or on systems with newer versions of glibc2. EGCS 1.0.1 should
   13730        fix these problems.
   13731      * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception
   13732        handling interfaces.
   13733        To avoid future compatibility problems, we strongly urge anyone who
   13734        is planning on distributing shared libraries that contain C++ code
   13735        to upgrade to EGCS 1.0.1 first.
   13736        Soon after EGCS 1.0 was released, the GCC developers made some
   13737        incompatible changes in libgcc's exception handling interfaces.
   13738        These changes were needed to solve problems on some platforms. This
   13739        means that GCC 2.8.0, when released, will not be seamlessly
   13740        compatible with shared libraries built by EGCS 1.0. The reason is
   13741        that the libgcc.a in GCC 2.8.0 will not contain a function needed
   13742        by the old interface.
   13743        The result of this is that there may be compatibility problems with
   13744        shared libraries built by EGCS 1.0 when used with GCC 2.8.0.
   13745        With EGCS 1.0.1, generated code uses the new (GCC 2.8.0) interface,
   13746        and libgcc.a has the support routines for both the old and the new
   13747        interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be freely mixed,
   13748        and EGCS 1.0.1 and GCC 2.8.0 code can be freely mixed).
   13749        The maintainers of GCC 2.x have decided against including seamless
   13750        support for the old interface in 2.8.0, since it was never
   13751        "official", so to avoid future compatibility problems we recommend
   13752        against distributing any shared libraries built by EGCS 1.0 that
   13753        contain C++ code (upgrade to 1.0.1 and use that).
   13754      * Various bugfixes in the x86, hppa, mips, and rs6000/ppc back ends.
   13755        The x86 changes fix code generation errors exposed when building
   13756        glibc2 and the usual GNU/Linux dynamic linker (ld.so).
   13757        The hppa change fixes a compiler abort when configured for use with
   13758        RTEMS.
   13759        The MIPS changes fix problems with the definition of LONG_MAX on
   13760        newer systems, allow for command line selection of the target ABI,
   13761        and fix one code generation problem.
   13762        The rs6000/ppc change fixes some problems with passing structures
   13763        to varargs/stdarg functions.
   13764      * A few machine independent bugfixes, mostly to fix code generation
   13765        errors when building Linux kernels or glibc.
   13766      * Fix a few critical exception handling and template bugs in the C++
   13767        compiler.
   13768      * Fix Fortran namelist bug on alphas.
   13769      * Fix build problems on x86-solaris systems.
   13770 
   13771    EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several
   13772    serious problems in EGCS 1.0.1.
   13773      * General improvements and fixes
   13774           + Memory consumption significantly reduced, especially for
   13775             templates and inline functions.
   13776           + Fix various problems with glibc2.1.
   13777           + Fix loop optimization bug exposed by rs6000/ppc port.
   13778           + Fix to avoid potential code generation problems in jump.c.
   13779           + Fix some undefined symbol problems in dwarf1 debug support.
   13780      * g++/libstdc++ improvements and fixes
   13781           + libstdc++ in the EGCS release has been updated and should be
   13782             link compatible with libstdc++-2.8.
   13783           + Various fixes in libio/libstdc++ to work better on GNU/Linux
   13784             systems.
   13785           + Fix problems with duplicate symbols on systems that do not
   13786             support weak symbols.
   13787           + Memory corruption bug and undefined symbols in bastring have
   13788             been fixed.
   13789           + Various exception handling fixes.
   13790           + Fix compiler abort for very long thunk names.
   13791      * g77 improvements and fixes
   13792           + Fix compiler crash for omitted bound in Fortran CASE
   13793             statement.
   13794           + Add missing entries to g77 lang-options.
   13795           + Fix problem with -fpedantic in the g77 compiler.
   13796           + Fix "backspace" problem with g77 on alphas.
   13797           + Fix x86 backend problem with Fortran literals and -fpic.
   13798           + Fix some of the problems with negative subscripts for g77 on
   13799             alphas.
   13800           + Fixes for Fortran builds on cygwin32/mingw32.
   13801      * platform specific improvements and fixes
   13802           + Fix long double problems on x86 (exposed by glibc).
   13803           + x86 ports define i386 again to keep imake happy.
   13804           + Fix exception handling support on NetBSD ports.
   13805           + Several changes to collect2 to fix many problems with AIX.
   13806           + Define __ELF__ for GNU/Linux on rs6000.
   13807           + Fix -mcall-linux problem on GNU/Linux on rs6000.
   13808           + Fix stdarg/vararg problem for GNU/Linux on rs6000.
   13809           + Allow autoconf to select a proper install problem on AIX 3.1.
   13810           + m68k port support includes -mcpu32 option as well as cpu32
   13811             multilibs.
   13812           + Fix stdarg bug for irix6.
   13813           + Allow EGCS to build on irix5 without the gnu assembler.
   13814           + Fix problem with static linking on sco5.
   13815           + Fix bootstrap on sco5 with native compiler.
   13816           + Fix for abort building newlib on H8 target.
   13817           + Fix fixincludes handling of math.h on SunOS.
   13818           + Minor fix for Motorola 3300 m68k systems.
   13819 
   13820    EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few
   13821    problems reported by Red Hat for builds of Red Hat 5.1.
   13822      * Generic bugfixes:
   13823           + Fix a typo in the libio library which resulted in incorrect
   13824             behavior of istream::get.
   13825           + Fix the Fortran negative array index problem.
   13826           + Fix a major problem with the ObjC runtime thread support
   13827             exposed by glibc2.
   13828           + Reduce memory consumption of the Haifa scheduler.
   13829      * Target specific bugfixes:
   13830           + Fix one x86 floating point code generation bug exposed by
   13831             glibc2 builds.
   13832           + Fix one x86 internal compiler error exposed by glibc2 builds.
   13833           + Fix profiling bugs on the Alpha.
   13834           + Fix ImageMagick & emacs 20.2 build problems on the Alpha.
   13835           + Fix rs6000/ppc bug when converting values from integer types
   13836             to floating point types.
   13837 
   13838    The EGCS 1.0 releases include installation instructions in both HTML
   13839    and plaintext forms (see the INSTALL directory in the toplevel
   13840    directory of the distribution). However, we also keep the most up to
   13841    date [2]installation instructions and [3]build/test status on our web
   13842    page. We will update those pages as new information becomes available.
   13843 
   13844    And, we can't in good conscience fail to mention some [4]caveats to
   13845    using EGCS.
   13846 
   13847    Update: Big thanks to Stanford for providing a high speed link for
   13848    downloading EGCS (go.cygnus.com)!
   13849 
   13850    Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
   13851    (USA California -- High speed link provided by Stanford).
   13852 
   13853    The EGCS 1.0 release is also available many mirror sites.
   13854    [5]Goto mirror list to find a closer site
   13855 
   13856    We'd like to thank the numerous people that have contributed new
   13857    features, test results, bugfixes, etc. Unfortunately, they're far too
   13858    numerous to mention by name.
   13859 
   13860 
   13861     For questions related to the use of GCC, please consult these web
   13862     pages and the [6]GCC manuals. If that fails, the
   13863     [7]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   13864     web pages and the development of GCC are welcome on our developer
   13865     list at [8]gcc (a] gcc.gnu.org. All of [9]our lists have public archives.
   13866 
   13867    Copyright (C) [10]Free Software Foundation, Inc. Verbatim copying and
   13868    distribution of this entire article is permitted in any medium,
   13869    provided this notice is preserved.
   13870 
   13871    These pages are [11]maintained by the GCC team. Last modified
   13872    2013-12-03[12].
   13873 
   13874 References
   13875 
   13876    1. http://gcc.gnu.org/egcs-1.0/features.html
   13877    2. http://gcc.gnu.org/install/
   13878    3. http://gcc.gnu.org/egcs-1.0/buildstat.html
   13879    4. http://gcc.gnu.org/egcs-1.0/caveats.html
   13880    5. http://gcc.gnu.org/mirrors.html
   13881    6. http://gcc.gnu.org/onlinedocs/
   13882    7. mailto:gcc-help (a] gcc.gnu.org
   13883    8. mailto:gcc (a] gcc.gnu.org
   13884    9. http://gcc.gnu.org/lists.html
   13885   10. http://www.fsf.org/
   13886   11. http://gcc.gnu.org/about.html
   13887   12. http://validator.w3.org/check/referer
   13888 ======================================================================
   13889 http://gcc.gnu.org/egcs-1.0/features.html
   13890 
   13891                                EGCS 1.0 features
   13892 
   13893      * Core compiler is based on the gcc2 development tree from Aug 2,
   13894        1997, so we have most of the [1]features found in GCC 2.8.
   13895      * Integrated GNU Fortran compiler based on g77-0.5.22-19970929.
   13896      * Vast improvements in the C++ compiler; so many they have [2]page of
   13897        their own!
   13898      * Integrated C++ runtime libraries, including support for most major
   13899        GNU/Linux systems!
   13900      * New instruction scheduler from IBM Haifa which includes support for
   13901        function wide instruction scheduling as well as superscalar
   13902        scheduling.
   13903      * Significantly improved alias analysis code.
   13904      * Improved register allocation for two address machines.
   13905      * Significant code generation improvements for Fortran code on
   13906        Alphas.
   13907      * Various optimizations from the g77 project as well as improved loop
   13908        optimizations.
   13909      * Dwarf2 debug format support for some targets.
   13910      * egcs libstdc++ includes the SGI STL implementation without changes.
   13911      * As a result of these and other changes, egcs libstc++ is not binary
   13912        compatible with previous releases of libstdc++.
   13913      * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The SCO
   13914        Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0 and
   13915        1.1), Support for RTEMS on several embedded targets, Support for
   13916        arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and
   13917        MN103, NEC V850, Sparclet, Solaris & GNU/Linux on PowerPCs, etc.
   13918      * Integrated testsuites for gcc, g++, g77, libstdc++ and libio.
   13919      * RS6000/PowerPC ports generate code which can run on all
   13920        RS6000/PowerPC variants by default.
   13921      * -mcpu= and -march= switches for the x86 port to allow better
   13922        control over how the x86 port generates code.
   13923      * Includes the template repository patch (aka repo patch); note the
   13924        new template code makes repo obsolete for ELF systems using gnu-ld
   13925        such as GNU/Linux.
   13926      * Plus the usual assortment of bugfixes and improvements.
   13927 
   13928 
   13929     For questions related to the use of GCC, please consult these web
   13930     pages and the [3]GCC manuals. If that fails, the
   13931     [4]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   13932     web pages and the development of GCC are welcome on our developer
   13933     list at [5]gcc (a] gcc.gnu.org. All of [6]our lists have public archives.
   13934 
   13935    Copyright (C) [7]Free Software Foundation, Inc. Verbatim copying and
   13936    distribution of this entire article is permitted in any medium,
   13937    provided this notice is preserved.
   13938 
   13939    These pages are [8]maintained by the GCC team. Last modified
   13940    2012-11-02[9].
   13941 
   13942 References
   13943 
   13944    1. http://gcc.gnu.org/egcs-1.0/features-2.8.html
   13945    2. http://gcc.gnu.org/egcs-1.0/c++features.html
   13946    3. http://gcc.gnu.org/onlinedocs/
   13947    4. mailto:gcc-help (a] gcc.gnu.org
   13948    5. mailto:gcc (a] gcc.gnu.org
   13949    6. http://gcc.gnu.org/lists.html
   13950    7. http://www.fsf.org/
   13951    8. http://gcc.gnu.org/about.html
   13952    9. http://validator.w3.org/check/referer
   13953 ======================================================================
   13954 http://gcc.gnu.org/egcs-1.0/caveats.html
   13955 
   13956                                 EGCS 1.0 Caveats
   13957 
   13958      * EGCS has an integrated libstdc++, but does not have an integrated
   13959        libg++. Furthermore old libg++ releases will not work with egc; HJ
   13960        Lu has made a libg++-2.8.1.2 available which may work with EGCS.
   13961        Note most C++ programs only need libstdc++.
   13962      * Note that using -pedantic or -Wreturn-type can cause an explosion
   13963        in the amount of memory needed for template-heavy C++ code, such as
   13964        code that uses STL. Also note that -Wall includes -Wreturn-type, so
   13965        if you use -Wall you will need to specify -Wno-return-type to turn
   13966        it off.
   13967      * Exception handling may not work with shared libraries, particularly
   13968        on alphas, hppas, and mips based platforms. Exception handling is
   13969        known to work on x86-linux platforms with shared libraries.
   13970      * Some versions of the Linux kernel have bugs which prevent them from
   13971        being compiled or from running when compiled by EGCS. See the FAQ
   13972        (as shipped with EGCS 1.0) for additional information.
   13973      * In general, EGCS is more rigorous about rejecting invalid C++ code
   13974        or deprecated C++ constructs than G++ 2.7. As a result it may be
   13975        necessary to fix C++ code before it will compile with EGCS.
   13976      * G++ is also aggressively tracking the C++ standard; as a result
   13977        code which was previously valid (and thus accepted by other
   13978        compilers and older versions of G++) may no longer be accepted.
   13979      * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS
   13980        1.0.x and later releases should work with Red Hat Linux 5.0.
   13981 
   13982 
   13983     For questions related to the use of GCC, please consult these web
   13984     pages and the [1]GCC manuals. If that fails, the
   13985     [2]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   13986     web pages and the development of GCC are welcome on our developer
   13987     list at [3]gcc (a] gcc.gnu.org. All of [4]our lists have public archives.
   13988 
   13989    Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
   13990    distribution of this entire article is permitted in any medium,
   13991    provided this notice is preserved.
   13992 
   13993    These pages are [6]maintained by the GCC team. Last modified
   13994    2012-11-02[7].
   13995 
   13996 References
   13997 
   13998    1. http://gcc.gnu.org/onlinedocs/
   13999    2. mailto:gcc-help (a] gcc.gnu.org
   14000    3. mailto:gcc (a] gcc.gnu.org
   14001    4. http://gcc.gnu.org/lists.html
   14002    5. http://www.fsf.org/
   14003    6. http://gcc.gnu.org/about.html
   14004    7. http://validator.w3.org/check/referer
   14005 ======================================================================
   14006