Home | History | Annotate | Line # | Download | only in dist
NEWS revision 1.1.1.1.8.2
      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.5/index.html
      9 
     10                              GCC 4.5 Release Series
     11 
     12    Jul 2, 2012
     13 
     14    The [1]GNU project and the GCC developers are pleased to announce the
     15    release of GCC 4.5.4.
     16 
     17    This release is a bug-fix release, containing fixes for regressions in
     18    GCC 4.5.3 relative to previous releases of GCC.
     19 
     20 Release History
     21 
     22    GCC 4.5.4
     23           Jul 2, 2012 ([2]changes)
     24 
     25    GCC 4.5.3
     26           Apr 28, 2011 ([3]changes)
     27 
     28    GCC 4.5.2
     29           Dec 16, 2010 ([4]changes)
     30 
     31    GCC 4.5.1
     32           Jul 31, 2010 ([5]changes)
     33 
     34    GCC 4.5.0
     35           April 14, 2010 ([6]changes)
     36 
     37 References and Acknowledgements
     38 
     39    GCC used to stand for the GNU C Compiler, but since the compiler
     40    supports several other languages aside from C, it now stands for the
     41    GNU Compiler Collection.
     42 
     43    A list of [7]successful builds is updated as new information becomes
     44    available.
     45 
     46    The GCC developers would like to thank the numerous people that have
     47    contributed new features, improvements, bug fixes, and other changes as
     48    well as test results to GCC. This [8]amazing group of volunteers is
     49    what makes GCC successful.
     50 
     51    For additional information about GCC please refer to the [9]GCC project
     52    web site or contact the [10]GCC development mailing list.
     53 
     54    To obtain GCC please use [11]our mirror sites or [12]our SVN server.
     55 
     56 
     57     For questions related to the use of GCC, please consult these web
     58     pages and the [13]GCC manuals. If that fails, the
     59     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
     60     web pages and the development of GCC are welcome on our developer
     61     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
     62     archives.
     63 
     64    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
     65    distribution of this entire article is permitted in any medium,
     66    provided this notice is preserved.
     67 
     68    These pages are [18]maintained by the GCC team. Last modified
     69    2012-07-02[19].
     70 
     71 References
     72 
     73    1. http://www.gnu.org/
     74    2. http://gcc.gnu.org/gcc-4.5/changes.html
     75    3. http://gcc.gnu.org/gcc-4.5/changes.html
     76    4. http://gcc.gnu.org/gcc-4.5/changes.html
     77    5. http://gcc.gnu.org/gcc-4.5/changes.html
     78    6. http://gcc.gnu.org/gcc-4.5/changes.html
     79    7. http://gcc.gnu.org/gcc-4.5/buildstat.html
     80    8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
     81    9. http://gcc.gnu.org/index.html
     82   10. mailto:gcc (a] gcc.gnu.org
     83   11. http://gcc.gnu.org/mirrors.html
     84   12. http://gcc.gnu.org/svn.html
     85   13. http://gcc.gnu.org/onlinedocs/
     86   14. mailto:gcc-help (a] gcc.gnu.org
     87   15. mailto:gcc (a] gcc.gnu.org
     88   16. http://gcc.gnu.org/lists.html
     89   17. http://www.fsf.org/
     90   18. http://gcc.gnu.org/about.html
     91   19. http://validator.w3.org/check/referer
     92 ======================================================================
     93 http://gcc.gnu.org/gcc-4.5/changes.html
     94 
     95                              GCC 4.5 Release Series
     96                         Changes, New Features, and Fixes
     97 
     98 Caveats
     99 
    100      * GCC now requires the [1]MPC library in order to build. See the
    101        [2]prerequisites page for version requirements.
    102      * Support for a number of older systems and recently unmaintained or
    103        untested target ports of GCC has been declared obsolete in GCC 4.5.
    104        Unless there is activity to revive them, the next release of GCC
    105        will have their sources permanently removed.
    106        The following ports for individual systems on particular
    107        architectures have been obsoleted:
    108           + IRIX releases before 6.5 (mips-sgi-irix5*,
    109             mips-sgi-irix6.[0-4])
    110           + Solaris 7 (*-*-solaris2.7)
    111           + Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*,
    112             alpha-dec-osf5.0*)
    113           + Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions
    114             can be found in the [3]announcement.
    115        Support for the classic POWER architecture implemented in the
    116        original RIOS and RIOS2 processors of the old IBM RS/6000 product
    117        line has been obsoleted in the rs6000 port. This does not affect
    118        the new generation Power and PowerPC architectures.
    119      * Support has been removed for all the [4]configurations obsoleted in
    120        GCC 4.4.
    121      * Support has been removed for the protoize and unprotoize utilities,
    122        obsoleted in GCC 4.4.
    123      * Support has been removed for tuning for Itanium1 (Merced) variants.
    124        Note that code tuned for Itanium2 should also run correctly on
    125        Itanium1.
    126      * GCC now generates unwind info also for epilogues. DWARF debuginfo
    127        generated by GCC now uses more features of DWARF3 than before, and
    128        also some DWARF4 features. GDB older than 7.0 is not able to handle
    129        either of these, so to debug GCC 4.5 generated binaries or
    130        libraries GDB 7.0 or later is needed. You can disable use of DWARF4
    131        features with the -gdwarf-3 -gstrict-dwarf options, or use
    132        -gdwarf-2 -gstrict-dwarf to restrict GCC to just DWARF2, but
    133        epilogue unwind info is emitted unconditionally whenever unwind
    134        info is emitted.
    135      * On x86 targets, code containing floating-point calculations may run
    136        significantly slower when compiled with GCC 4.5 in strict C99
    137        conformance mode than they did with earlier GCC versions. This is
    138        due to stricter standard conformance of the compiler and can be
    139        avoided by using the option -fexcess-precision=fast; also see
    140        [5]below.
    141      * The function attribute noinline no longer prevents GCC from cloning
    142        the function. A new attribute noclone has been introduced for this
    143        purpose. Cloning a function means that it is duplicated and the new
    144        copy is specialized for certain contexts (for example when a
    145        parameter is a known constant).
    146 
    147 General Optimizer Improvements
    148 
    149      * The -save-temps now takes an optional argument. The -save-temps and
    150        -save-temps=cwd switches write the temporary files in the current
    151        working directory based on the original source file. The
    152        -save-temps=obj switch will write files into the directory
    153        specified with the -o option, and the intermediate filenames are
    154        based on the output file. This will allow the user to get the
    155        compiler intermediate files when doing parallel builds without two
    156        builds of the same filename located in different directories from
    157        interfering with each other.
    158      * Debugging dumps are now created in the same directory as the object
    159        file rather than in the current working directory. This allows the
    160        user to get debugging dumps when doing parallel builds without two
    161        builds of the same filename interfering with each other.
    162      * GCC has been integrated with the [6]MPC library. This allows GCC to
    163        evaluate complex arithmetic at compile time [7]more accurately. It
    164        also allows GCC to evaluate calls to complex built-in math
    165        functions having constant arguments and replace them at compile
    166        time with their mathematically equivalent results. In doing so, GCC
    167        can generate correct results regardless of the math library
    168        implementation or floating point precision of the host platform.
    169        This also allows GCC to generate identical results regardless of
    170        whether one compiles in native or cross-compile configurations to a
    171        particular target. The following built-in functions take advantage
    172        of this new capability: cacos, cacosh, casin, casinh, catan,
    173        catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
    174        and ctanh. The float and long double variants of these functions
    175        (e.g. csinf and csinl) are also handled.
    176      * A new link-time optimizer has been added ([8]-flto). When this
    177        option is used, GCC generates a bytecode representation of each
    178        input file and writes it to specially-named sections in each object
    179        file. When the object files are linked together, all the function
    180        bodies are read from these named sections and instantiated as if
    181        they had been part of the same translation unit. This enables
    182        interprocedural optimizations to work across different files (and
    183        even different languages), potentially improving the performance of
    184        the generated code. To use the link-timer optimizer, -flto needs to
    185        be specified at compile time and during the final link. If the
    186        program does not require any symbols to be exported, it is possible
    187        to combine -flto and the experimental [9]-fwhopr with
    188        [10]-fwhole-program to allow the interprocedural optimizers to use
    189        more aggressive assumptions.
    190      * The automatic parallelization pass was enhanced to support
    191        parallelization of outer loops.
    192      * Automatic parallelization can be enabled as part of Graphite. In
    193        addition to -ftree-parallelize-loops=, specify
    194        -floop-parallelize-all to enable the Graphite-based optimization.
    195      * The infrastructure for optimizing based on [11]restrict qualified
    196        pointers has been rewritten and should result in code generation
    197        improvements. Optimizations based on restrict qualified pointers
    198        are now also available when using -fno-strict-aliasing.
    199      * There is a new optimization pass that attempts to change prototype
    200        of functions to avoid unused parameters, pass only relevant parts
    201        of structures and turn arguments passed by reference to arguments
    202        passed by value when possible. It is enabled by -O2 and above as
    203        well as -Os and can be manually invoked using the new command-line
    204        switch -fipa-sra.
    205      * GCC now optimize exception handling code. In particular cleanup
    206        regions that are proved to not have any effect are optimized out.
    207 
    208 New Languages and Language specific improvements
    209 
    210   All languages
    211 
    212      * The -fshow-column option is now on by default. This means error
    213        messages now have a column associated with them.
    214 
    215   Ada
    216 
    217      * Compilation of programs heavily using discriminated record types
    218        with variant parts has been sped up and generates more compact
    219        code.
    220      * Stack checking now works reasonably well on most plaforms. In some
    221        specific cases, stack overflows may still fail to be detected, but
    222        a compile-time warning will be issued for these cases.
    223 
    224   C family
    225 
    226      * If a header named in a #include directive is not found, the
    227        compiler exits immediately. This avoids a cascade of errors arising
    228        from declarations expected to be found in that header being
    229        missing.
    230      * A new built-in function __builtin_unreachable() has been added that
    231        tells the compiler that control will never reach that point. It may
    232        be used after asm statements that terminate by transferring control
    233        elsewhere, and in other places that are known to be unreachable.
    234      * The -Wlogical-op option now warns for logical expressions such as
    235        (c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be
    236        mistakes. This option is disabled by default.
    237      * An asm goto feature has been added to allow asm statements that
    238        jump to C labels.
    239      * C++0x raw strings are supported for C++ and for C with -std=gnu99.
    240      * The deprecated attribute now takes an optional string argument, for
    241        example, __attribute__((deprecated("text string"))), that will be
    242        printed together with the deprecation warning.
    243 
    244   C
    245 
    246      * The -Wenum-compare option, which warns when comparing values of
    247        different enum types, now works for C. It formerly only worked for
    248        C++. This warning is enabled by -Wall. It may be avoided by using a
    249        type cast.
    250      * The -Wcast-qual option now warns about casts which are unsafe in
    251        that they permit const-correctness to be violated without further
    252        warnings. Specifically, it warns about cases where a qualifier is
    253        added when all the lower types are not const. For example, it warns
    254        about a cast from char ** to const char **.
    255      * The -Wc++-compat option is significantly improved. It issues new
    256        warnings for:
    257           + Using C++ reserved operator names as identifiers.
    258           + Conversions to enum types without explicit casts.
    259           + Using va_arg with an enum type.
    260           + Using different enum types in the two branches of ?:.
    261           + Using ++ or -- on a variable of enum type.
    262           + Using the same name as both a struct, union or enum tag and a
    263             typedef, unless the typedef refers to the tagged type itself.
    264           + Using a struct, union, or enum which is defined within another
    265             struct or union.
    266           + A struct field defined using a typedef if there is a field in
    267             the struct, or an enclosing struct, whose name is the typedef
    268             name.
    269           + Duplicate definitions at file scope.
    270           + Uninitialized const variables.
    271           + A global variable with an anonymous struct, union, or enum
    272             type.
    273           + Using a string constant to initialize a char array whose size
    274             is the length of the string.
    275      * The new -Wjump-misses-init option warns about cases where a goto or
    276        switch skips the initialization of a variable. This sort of branch
    277        is an error in C++ but not in C. This warning is enabled by
    278        -Wc++-compat.
    279      * GCC now ensures that a C99-conforming <stdint.h> is present on most
    280        targets, and uses information about the types in this header to
    281        implement the Fortran bindings to those types. GCC does not ensure
    282        the presence of such a header, and does not implement the Fortran
    283        bindings, on the following targets: NetBSD, VxWorks, VMS,
    284        SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF.
    285      * GCC now implements C90- and C99-conforming rules for constant
    286        expressions. This may cause warnings or errors for some code using
    287        expressions that can be folded to a constant but are not constant
    288        expressions as defined by ISO C.
    289      * All known target-independent C90 and C90 Amendment 1 conformance
    290        bugs, and all known target-independent C99 conformance bugs not
    291        related to floating point or extended identifiers, have been fixed.
    292      * The C decimal floating point support now includes support for the
    293        FLOAT_CONST_DECIMAL64 pragma.
    294      * The named address space feature from ISO/IEC TR 18037 is now
    295        supported. This is currently only implemented for the SPU
    296        processor.
    297 
    298   C++
    299 
    300      * Improved [12]experimental support for the upcoming C++0x ISO C++
    301        standard, including support for raw strings, lambda expressions and
    302        explicit type conversion operators.
    303      * When printing the name of a class template specialization, G++ will
    304        now omit any template arguments which come from default template
    305        arguments. This behavior (and the pretty-printing of function
    306        template specializations as template signature and arguments) can
    307        be disabled with the -fno-pretty-templates option.
    308      * Access control is now applied to typedef names used in a template,
    309        which may cause G++ to reject some ill-formed code that was
    310        accepted by earlier releases. The -fno-access-control option can be
    311        used as a temporary workaround until the code is corrected.
    312      * Compilation time for code that uses templates should now scale
    313        linearly with the number of instantiations rather than
    314        quadratically, as template instantiations are now looked up using
    315        hash tables.
    316      * Declarations of functions that look like builtin declarations of
    317        library functions are only considered to be redeclarations if they
    318        are declared with extern "C". This may cause problems with code
    319        that omits extern "C" on hand-written declarations of C library
    320        functions such as abort or memcpy. Such code is ill-formed, but was
    321        accepted by earlier releases.
    322      * Diagnostics that used to complain about passing non-POD types to
    323        ... or jumping past the declaration of a non-POD variable now check
    324        for triviality rather than PODness, as per C++0x.
    325      * In C++0x mode local and anonymous classes are now allowed as
    326        template arguments, and in declarations of variables and functions
    327        with linkage, so long as any such declaration that is used is also
    328        defined ([13]DR 757).
    329      * Labels may now have attributes, as has been permitted for a while
    330        in C. This is only permitted when the label definition and the
    331        attribute specifier is followed by a semicolon--i.e., the label
    332        applies to an empty statement. The only useful attribute for a
    333        label is unused.
    334      * G++ now implements [14]DR 176. Previously G++ did not support using
    335        the injected-class-name of a template base class as a type name,
    336        and lookup of the name found the declaration of the template in the
    337        enclosing scope. Now lookup of the name finds the
    338        injected-class-name, which can be used either as a type or as a
    339        template, depending on whether or not the name is followed by a
    340        template argument list. As a result of this change, some code that
    341        was previously accepted may be ill-formed because
    342          1. The injected-class-name is not accessible because it's from a
    343             private base, or
    344          2. The injected-class-name cannot be used as an argument for a
    345             template template parameter.
    346        In either of these cases, the code can be fixed by adding a
    347        nested-name-specifier to explicitly name the template. The first
    348        can be worked around with -fno-access-control; the second is only
    349        rejected with -pedantic.
    350      * A new standard mangling for SIMD vector types has been added, to
    351        avoid name clashes on systems with vectors of varying length. By
    352        default the compiler still uses the old mangling, but emits aliases
    353        with the new mangling on targets that support strong aliases. Users
    354        can switch over entirely to the new mangling with -fabi-version=4
    355        or -fabi-version=0. -Wabi will now warn about code that uses the
    356        old mangling.
    357      * The command-line option -ftemplate-depth-N is now written as
    358        -ftemplate-depth=N and the old form is deprecated.
    359      * Conversions between NULL and non-pointer types are now warned by
    360        default. The new option -Wno-conversion-null disables these
    361        warnings. Previously these warnings were only available when using
    362        -Wconversion explicitly.
    363 
    364     Runtime Library (libstdc++)
    365 
    366      * [15]Improved experimental support for the upcoming ISO C++
    367        standard, C++0x, including:
    368           + Support for <future>, <functional>, and <random>.
    369           + Existing facilities now exploit explicit operators and the
    370             newly implemented core C++0x features.
    371      * An experimental [16]profile mode has been added. This is an
    372        implementation of many C++ standard library constructs with an
    373        additional analysis layer that gives performance improvement advice
    374        based on recognition of suboptimal usage patterns. For example,
    375 #include <vector>
    376 int main()
    377 {
    378   std::vector<int> v;
    379   for (int k = 0; k < 1024; ++k)
    380     v.insert(v.begin(), k);
    381 }
    382 
    383        When instrumented via the profile mode, can return suggestions
    384        about the initial size and choice of the container used as follows:
    385 vector-to-list: improvement = 5: call stack = 0x804842c ...
    386     : advice = change std::vector to std::list
    387 vector-size: improvement = 3: call stack = 0x804842c ...
    388     : advice = change initial container size from 0 to 1024
    389 
    390        These constructs can be substituted for the normal libstdc++
    391        constructs on a piecemeal basis, or all existing components can be
    392        transformed via the -D_GLIBCXX_PROFILE macro.
    393      * [17]Support for decimal floating-point arithmetic (aka ISO C++ TR
    394        24733) has been added. This support is in header file
    395        <decimal/decimal>, uses namespace std::decimal, and includes
    396        classes decimal32, decimal64, and decimal128.
    397      * Sources have been audited for application of function attributes
    398        nothrow, const, pure, and noreturn.
    399      * Python pretty-printers have been added for many standard library
    400        components that simplify the internal representation and present a
    401        more intuitive view of components when used with
    402        appropriately-advanced versions of GDB. For more information,
    403        please consult the more [18]detailed description.
    404      * The default behavior for comparing typeinfo names has changed, so
    405        in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
    406      * The new -static-libstdc++ option directs g++ to link the C++
    407        library statically, even if the default would normally be to link
    408        it dynamically.
    409 
    410   Fortran
    411 
    412      * The COMMON default padding has been changed - instead of adding the
    413        padding before a variable it is now added afterwards, which
    414        increases the compatibility with other vendors and helps to obtain
    415        the correct output in some cases. Cf. also the -falign-commons
    416        option ([19]added in 4.4).
    417      * The -finit-real= option now also supports the value snan for
    418        signalling not-a-number; to be effective, one additionally needs to
    419        enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
    420        optimizations can turn a signalling NaN into a quiet one.
    421      * The new option -fcheck= has been added with the options bounds,
    422        array-temps, do, pointer, and recursive. The bounds and array-temps
    423        options are equivalent to -fbounds-check and
    424        -fcheck-array-temporaries. The do option checks for invalid
    425        modification of loop iteration variables, and the recursive option
    426        tests for recursive calls to subroutines/functions which are not
    427        marked as recursive. With pointer pointer association checks in
    428        calls are performed; however, neither undefined pointers nor
    429        pointers in expressions are handled. Using -fcheck=all enables all
    430        these run-time checks.
    431      * The run-time checking -fcheck=bounds now warns about invalid string
    432        lengths of character dummy arguments. Additionally, more
    433        compile-time checks have been added.
    434      * The new option [20]-fno-protect-parens has been added; if set, the
    435        compiler may reorder REAL and COMPLEX expressions without regard to
    436        parentheses.
    437      * GNU Fortran no longer links against libgfortranbegin. As before,
    438        MAIN__ (assembler symbol name) is the actual Fortran main program,
    439        which is invoked by the main function. However, main is now
    440        generated and put in the same object file as MAIN__. For the time
    441        being, libgfortranbegin still exists for backward compatibility.
    442        For details see the new [21]Mixed-Language Programming chapter in
    443        the manual.
    444      * The I/O library was restructured for performance and cleaner code.
    445      * Array assignments and WHERE are now run in parallel when OpenMP's
    446        WORKSHARE is used.
    447      * The experimental option -fwhole-file was added. The option allows
    448        whole-file checking of procedure arguments and allows for better
    449        optimizations. It can also be used with -fwhole-program, which is
    450        now also supported in gfortran.
    451      * More Fortran 2003 and Fortran 2008 mathematical functions can now
    452        be used as initialization expressions.
    453      * Some extended attributes such as STDCALL are now supported via the
    454        [22]GCC$ compiler directive.
    455      * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
    456        intrinsic behaves now as if zero were always positive.
    457      * For legacy compatibiliy: On Cygwin and MinGW, the special files
    458        CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now
    459        supported.
    460      * Fortran 2003 support has been extended:
    461           + Procedure-pointer function results and procedure-pointer
    462             components (including PASS),
    463           + allocatable scalars (experimental),
    464           + DEFERRED type-bound procedures,
    465           + the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements
    466             have been implemented.
    467           + The ALLOCATE statement supports type-specs and the SOURCE=
    468             argument.
    469           + OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC
    470             type-bound procedure (i.e. as type-bound operators).
    471           + Rounding (ROUND=, RZ, ...) for output is now supported.
    472           + The INT_FAST{8,16,32,64,128}_T kind type parameters of the
    473             intrinsic module ISO_C_BINDING are now supported, except for
    474             the targets listed above as ones where GCC does not have
    475             <stdint.h> type information.
    476           + Extensible derived types with type-bound procedure or
    477             procedure pointer with PASS attribute now have to use CLASS in
    478             line with the Fortran 2003 standard; the workaround to use
    479             TYPE is no longer supported.
    480           + [23]Experimental, incomplete support for polymorphism,
    481             including CLASS, SELECT TYPE and dynamic dispatch of
    482             type-bound procedure calls. Some features do not work yet such
    483             as unlimited polymorphism (CLASS(*)).
    484      * Fortran 2008 support has been extended:
    485           + The OPEN statement now supports the NEWUNIT= option, which
    486             returns a unique file unit, thus preventing inadvertent use of
    487             the same unit in different parts of the program.
    488           + Support for unlimited format items has been added.
    489           + The INT{8,16,32} and REAL{32,64,128} kind type parameters of
    490             the intrinsic module ISO_FORTRAN_ENV are now supported.
    491           + Using complex arguments with TAN, SINH, COSH, TANH, ASIN,
    492             ACOS, and ATAN is now possible; the functions ASINH, ACOSH,
    493             and ATANH have been added (for real and complex arguments) and
    494             ATAN(Y,X) is now an alias for ATAN2(Y,X).
    495           + The BLOCK construct has been implemented.
    496 
    497 New Targets and Target Specific Improvements
    498 
    499   AIX
    500 
    501      * Full cross-toolchain support now available with GNU Binutils
    502 
    503   ARM
    504 
    505      * GCC now supports the Cortex-M0 and Cortex-A5 processors.
    506      * GCC now supports the ARM v7E-M architecture.
    507      * GCC now supports VFPv4-based FPUs and FPUs with
    508        single-precision-only VFP.
    509      * GCC has many improvements to optimization for other ARM processors,
    510        including scheduling support for the integer pipeline on Cortex-A9.
    511      * GCC now supports the IEEE 754-2008 half-precision floating-point
    512        type, and a variant ARM-specific half-precision type. This type is
    513        specified using __fp16, with the layout determined by
    514        -mfp16-format. With appropriate -mfpu options, the Cortex-A9 and
    515        VFPv4 half-precision instructions will be used.
    516      * GCC now supports the variant of AAPCS that uses VFP registers for
    517        parameter passing and return values.
    518 
    519   AVR
    520 
    521      * The -mno-tablejump option has been removed because it has the same
    522        effect as the -fno-jump-tables option.
    523      * Added support for these new AVR devices:
    524           + ATmega8U2
    525           + ATmega16U2
    526           + ATmega32U2
    527 
    528   IA-32/x86-64
    529 
    530      * GCC now will set the default for -march= based on the configure
    531        target.
    532      * GCC now supports handling floating-point excess precision arising
    533        from use of the x87 floating-point unit in a way that conforms to
    534        ISO C99. This is enabled with -fexcess-precision=standard and with
    535        standards conformance options such as -std=c99, and may be disabled
    536        using -fexcess-precision=fast.
    537      * Support for the Intel Atom processor is now available through the
    538        -march=atom and -mtune=atom options.
    539      * A new -mcrc32 option is now available to enable crc32 intrinsics.
    540      * A new -mmovbe option is now available to enable GCC to use the
    541        movbe instruction to implement __builtin_bswap32 and
    542        __builtin_bswap64.
    543      * SSE math now can be enabled by default at configure time with the
    544        new --with-fpmath=sse option.
    545      * There is a new intrinsic header file, <x86intrin.h>. It should be
    546        included before using any IA-32/x86-64 intrinsics.
    547      * Support for the XOP, FMA4, and LWP instruction sets for the AMD
    548        Orochi processors are now available with the -mxop, -mfma4, and
    549        -mlwp options.
    550      * The -mabm option enables GCC to use the popcnt and lzcnt
    551        instructions on AMD processors.
    552      * The -mpopcnt option enables GCC to use the popcnt instructions on
    553        both AMD and Intel processors.
    554 
    555   M68K/ColdFire
    556 
    557      * GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x
    558        and 5441x devices.
    559      * GCC now supports thread-local storage (TLS) on M68K and ColdFire
    560        processors.
    561 
    562   MeP
    563 
    564    Support has been added for the Toshiba Media embedded Processor (MeP,
    565    or mep-elf) embedded target.
    566 
    567   MIPS
    568 
    569      * GCC now supports MIPS 1004K processors.
    570      * GCC can now be configured with options --with-arch-32,
    571        --with-arch-64, --with-tune-32 and --with-tune-64 to control the
    572        default optimization separately for 32-bit and 64-bit modes.
    573      * MIPS targets now support an alternative _mcount interface, in which
    574        register $12 points to the function's save slot for register $31.
    575        This interface is selected by the -mcount-ra-address option; see
    576        the documentation for more details.
    577      * GNU/Linux targets can now generate read-only .eh_frame sections.
    578        This optimization requires GNU binutils 2.20 or above, and is only
    579        available if GCC is configured with a suitable version of binutils.
    580      * GNU/Linux targets can now attach special relocations to indirect
    581        calls, so that the linker can turn them into direct jumps or
    582        branches. This optimization requires GNU binutils 2.20 or later,
    583        and is automatically selected if GCC is configured with an
    584        appropriate version of binutils. It can be explicitly enabled or
    585        disabled using the -mrelax-pic-calls command-line option.
    586      * GCC now generates more heavily-optimized atomic operations on
    587        Octeon processors.
    588      * MIPS targets now support the -fstack-protector option.
    589      * GCC now supports an -msynci option, which specifies that synci is
    590        enough to flush the instruction cache, without help from the
    591        operating system. GCC uses this information to optimize
    592        automatically-generated cache flush operations, such as those used
    593        for nested functions in C. There is also a --with-synci
    594        configure-time option, which makes -msynci the default.
    595      * GCC supports four new function attributes for interrupt handlers:
    596        interrupt, use_shadow_register_set, keep_interrupts_masked and
    597        use_debug_exception_return. See the documentation for more details
    598        about these attributes.
    599 
    600   RS/6000 (POWER/PowerPC)
    601 
    602      * GCC now supports the Power ISA 2.06, which includes the VSX
    603        instructions that add vector 64-bit floating point support, new
    604        population count instructions, and conversions between floating
    605        point and unsigned types.
    606      * Support for the power7 processor is now available through the
    607        -mcpu=power7 and -mtune=power7.
    608      * GCC will now vectorize loops that contain simple math functions
    609        like copysign when generating code for altivec or VSX targets.
    610      * Support for the A2 processor is now available through the -mcpu=a2
    611        and -mtune=a2 options.
    612      * Support for the 476 processor is now available through the
    613        -mcpu={476,476fp} and -mtune={476,476fp} options.
    614      * Support for the e500mc64 processor is now available through the
    615        -mcpu=e500mc64 and -mtune=e500mc64 options.
    616      * GCC can now be configured with options --with-cpu-32,
    617        --with-cpu-64, --with-tune-32 and --with-tune-64 to control the
    618        default optimization separately for 32-bit and 64-bit modes.
    619      * Starting with GCC 4.5.4, vectors of type vector long long or vector
    620        long are passed and returned in the same method as other vectors
    621        with the VSX instruction set. Previously the GCC compiler did not
    622        adhere to the ABI for 128-bit vectors with 64-bit integer base
    623        types (PR 48857). This is also fixed in the GCC 4.6.1 release.
    624 
    625   RX
    626 
    627    Support has been added for the Renesas RX Processor (rx-elf) target.
    628 
    629 Operating Systems
    630 
    631   Windows (Cygwin and MinGW)
    632 
    633      * GCC now installs all the major language runtime libraries as DLLs
    634        when configured with the --enable-shared option.
    635      * GCC now makes use of the new support for aligned common variables
    636        in versions of binutils >= 2.20 to fix bugs in the support for SSE
    637        data types.
    638      * Improvements to the libffi support library increase the reliability
    639        of code generated by GCJ on all Windows platforms. Libgcj is
    640        enabled by default for the first time.
    641      * Libtool improvements simplify installation by placing the generated
    642        DLLs in the correct binaries directory.
    643      * Numerous other minor bugfixes and improvements, and substantial
    644        enhancements to the Fortran language support library.
    645 
    646    >
    647 
    648 Other significant improvements
    649 
    650   Plugins
    651 
    652      * It is now possible to extend the compiler without having to modify
    653        its source code. A new option -fplugin=file.so tells GCC to load
    654        the shared object file.so and execute it as part of the compiler.
    655        The internal documentation describes the details on how plugins can
    656        interact with the compiler.
    657 
    658   Installation changes
    659 
    660      * The move to newer autotools changed default installation
    661        directories and switches to control them: The --with-datarootdir,
    662        --with-docdir, --with-pdfdir, and --with-htmldir switches are not
    663        used any more. Instead, you can now use --datarootdir, --docdir,
    664        --htmldir, and --pdfdir. The default installation directories have
    665        changed as follows according to the GNU Coding Standards:
    666 
    667        datarootdir read-only architecture-independent data root [PREFIX/share]
    668        localedir   locale-specific message catalogs [DATAROOTDIR/locale]
    669        docdir      documentation root [DATAROOTDIR/doc/PACKAGE]
    670        htmldir     html documentation [DOCDIR]
    671        dvidir      dvi documentation [DOCDIR]
    672        pdfdir      pdf documentation [DOCDIR]
    673        psdir       ps documentation [DOCDIR]
    674        The following variables have new default values:
    675 
    676        datadir read-only architecture-independent data [DATAROOTDIR]
    677        infodir info documentation [DATAROOTDIR/info]
    678        mandir  man documentation [DATAROOTDIR/man]
    679 
    680 GCC 4.5.1
    681 
    682    This is the [24]list of problem reports (PRs) from GCC's bug tracking
    683    system that are known to be fixed in the 4.5.1 release. This list might
    684    not be complete (that is, it is possible that some PRs that have been
    685    fixed are not listed here).
    686 
    687   All languages
    688 
    689      * GCC's new link-time optimizer ([25]-flto) now also works on a few
    690        non-ELF targets:
    691           + Cygwin (*-cygwin*)
    692           + MinGW (*-mingw*)
    693           + Darwin on x86-64 (x86_64-apple-darwin*)
    694        LTO is not enabled by default for these targets. To enable LTO, you
    695        should configure with the --enable-lto option.
    696 
    697 GCC 4.5.2
    698 
    699    This is the [26]list of problem reports (PRs) from GCC's bug tracking
    700    system that are known to be fixed in the 4.5.2 release. This list might
    701    not be complete (that is, it is possible that some PRs that have been
    702    fixed are not listed here).
    703 
    704 GCC 4.5.3
    705 
    706    This is the [27]list of problem reports (PRs) from GCC's bug tracking
    707    system that are known to be fixed in the 4.5.3 release. This list might
    708    not be complete (that is, it is possible that some PRs that have been
    709    fixed are not listed here).
    710 
    711    On the PowerPC compiler, the Altivec builtin functions vec_ld and
    712    vec_st have been modified to generate the Altivec memory instructions
    713    LVX and STVX, even if the -mvsx option is used. In the initial GCC 4.5
    714    release, these builtin functions were changed to generate VSX memory
    715    reference instructions instead of Altivec memory instructions, but
    716    there are differences between the two instructions. If the VSX
    717    instruction set is available, you can now use the new builtin functions
    718    vec_vsx_ld and vec_vsx_st which always generates the VSX memory
    719    instructions.
    720 
    721 GCC 4.5.4
    722 
    723    This is the [28]list of problem reports (PRs) from GCC's bug tracking
    724    system that are known to be fixed in the 4.5.4 release. This list might
    725    not be complete (that is, it is possible that some PRs that have been
    726    fixed are not listed here).
    727 
    728 
    729     For questions related to the use of GCC, please consult these web
    730     pages and the [29]GCC manuals. If that fails, the
    731     [30]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
    732     web pages and the development of GCC are welcome on our developer
    733     list at [31]gcc (a] gcc.gnu.org. All of [32]our lists have public
    734     archives.
    735 
    736    Copyright (C) [33]Free Software Foundation, Inc. Verbatim copying and
    737    distribution of this entire article is permitted in any medium,
    738    provided this notice is preserved.
    739 
    740    These pages are [34]maintained by the GCC team. Last modified
    741    2012-07-02[35].
    742 
    743 References
    744 
    745    1. http://www.multiprecision.org/
    746    2. http://gcc.gnu.org/install/prerequisites.html
    747    3. http://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
    748    4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
    749    5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
    750    6. http://www.multiprecision.org/
    751    7. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30789
    752    8. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
    753    9. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
    754   10. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
    755   11. http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
    756   12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
    757   13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
    758   14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
    759   15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x
    760   16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
    761   17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
    762   18. http://sourceware.org/gdb/wiki/STLSupport
    763   19. http://gcc.gnu.org/gcc-4.4/changes.html
    764   20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
    765   21. http://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
    766   22. http://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
    767   23. http://gcc.gnu.org/wiki/OOP
    768   24. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
    769   25. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
    770   26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
    771   27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
    772   28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
    773   29. http://gcc.gnu.org/onlinedocs/
    774   30. mailto:gcc-help (a] gcc.gnu.org
    775   31. mailto:gcc (a] gcc.gnu.org
    776   32. http://gcc.gnu.org/lists.html
    777   33. http://www.fsf.org/
    778   34. http://gcc.gnu.org/about.html
    779   35. http://validator.w3.org/check/referer
    780 ======================================================================
    781 http://gcc.gnu.org/gcc-4.4/index.html
    782 
    783                              GCC 4.4 Release Series
    784 
    785    March 13, 2012
    786 
    787    The [1]GNU project and the GCC developers are pleased to announce the
    788    release of GCC 4.4.7.
    789 
    790    This release is a bug-fix release, containing fixes for regressions in
    791    GCC 4.4.6 relative to previous releases of GCC.
    792 
    793 Release History
    794 
    795    GCC 4.4.7
    796           March 13, 2012 ([2]changes)
    797 
    798    GCC 4.4.6
    799           April 16, 2011 ([3]changes)
    800 
    801    GCC 4.4.5
    802           October 1, 2010 ([4]changes)
    803 
    804    GCC 4.4.4
    805           April 29, 2010 ([5]changes)
    806 
    807    GCC 4.4.3
    808           January 21, 2010 ([6]changes)
    809 
    810    GCC 4.4.2
    811           October 15, 2009 ([7]changes)
    812 
    813    GCC 4.4.1
    814           July 22, 2009 ([8]changes)
    815 
    816    GCC 4.4.0
    817           April 21, 2009 ([9]changes)
    818 
    819 References and Acknowledgements
    820 
    821    GCC used to stand for the GNU C Compiler, but since the compiler
    822    supports several other languages aside from C, it now stands for the
    823    GNU Compiler Collection.
    824 
    825    A list of [10]successful builds is updated as new information becomes
    826    available.
    827 
    828    The GCC developers would like to thank the numerous people that have
    829    contributed new features, improvements, bug fixes, and other changes as
    830    well as test results to GCC. This [11]amazing group of volunteers is
    831    what makes GCC successful.
    832 
    833    For additional information about GCC please refer to the [12]GCC
    834    project web site or contact the [13]GCC development mailing list.
    835 
    836    To obtain GCC please use [14]our mirror sites or [15]our SVN server.
    837 
    838 
    839     For questions related to the use of GCC, please consult these web
    840     pages and the [16]GCC manuals. If that fails, the
    841     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
    842     web pages and the development of GCC are welcome on our developer
    843     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
    844     archives.
    845 
    846    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
    847    distribution of this entire article is permitted in any medium,
    848    provided this notice is preserved.
    849 
    850    These pages are [21]maintained by the GCC team. Last modified
    851    2012-03-13[22].
    852 
    853 References
    854 
    855    1. http://www.gnu.org/
    856    2. http://gcc.gnu.org/gcc-4.4/changes.html
    857    3. http://gcc.gnu.org/gcc-4.4/changes.html
    858    4. http://gcc.gnu.org/gcc-4.4/changes.html
    859    5. http://gcc.gnu.org/gcc-4.4/changes.html
    860    6. http://gcc.gnu.org/gcc-4.4/changes.html
    861    7. http://gcc.gnu.org/gcc-4.4/changes.html
    862    8. http://gcc.gnu.org/gcc-4.4/changes.html
    863    9. http://gcc.gnu.org/gcc-4.4/changes.html
    864   10. http://gcc.gnu.org/gcc-4.4/buildstat.html
    865   11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
    866   12. http://gcc.gnu.org/index.html
    867   13. mailto:gcc (a] gcc.gnu.org
    868   14. http://gcc.gnu.org/mirrors.html
    869   15. http://gcc.gnu.org/svn.html
    870   16. http://gcc.gnu.org/onlinedocs/
    871   17. mailto:gcc-help (a] gcc.gnu.org
    872   18. mailto:gcc (a] gcc.gnu.org
    873   19. http://gcc.gnu.org/lists.html
    874   20. http://www.fsf.org/
    875   21. http://gcc.gnu.org/about.html
    876   22. http://validator.w3.org/check/referer
    877 ======================================================================
    878 http://gcc.gnu.org/gcc-4.4/changes.html
    879 
    880                              GCC 4.4 Release Series
    881                         Changes, New Features, and Fixes
    882 
    883    The latest release in the 4.4 release series is [1]GCC 4.4.7.
    884 
    885 Caveats
    886 
    887      * __builtin_stdarg_start has been completely removed from GCC.
    888        Support for <varargs.h> had been deprecated since GCC 4.0. Use
    889        __builtin_va_start as a replacement.
    890      * Some of the errors issued by the C++ front end that could be
    891        downgraded to warnings in previous releases by using -fpermissive
    892        are now warnings by default. They can be converted into errors by
    893        using -pedantic-errors.
    894      * Use of the cpp assertion extension will now emit a warning when
    895        -Wdeprecated or -pedantic is used. This extension has been
    896        deprecated for many years, but never warned about.
    897      * Packed bit-fields of type char were not properly bit-packed on many
    898        targets prior to GCC 4.4. On these targets, the fix in GCC 4.4
    899        causes an ABI change. For example there is no longer a 4-bit
    900        padding between field a and b in this structure:
    901     struct foo
    902     {
    903       char a:4;
    904       char b:8;
    905     } __attribute__ ((packed));
    906        There is a new warning to help identify fields that are affected:
    907     foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4
    908        The warning can be disabled with -Wno-packed-bitfield-compat.
    909      * On ARM EABI targets, the C++ mangling of the va_list type has been
    910        changed to conform to the current revision of the EABI. This does
    911        not affect the libstdc++ library included with GCC.
    912      * The SCOUNT and POS bits of the MIPS DSP control register are now
    913        treated as global. Previous versions of GCC treated these fields as
    914        call-clobbered instead.
    915      * The MIPS port no longer recognizes the h asm constraint. It was
    916        necessary to remove this constraint in order to avoid generating
    917        unpredictable code sequences.
    918        One of the main uses of the h constraint was to extract the high
    919        part of a multiplication on 64-bit targets. For example:
    920     asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
    921        You can now achieve the same effect using 128-bit types:
    922     typedef unsigned int uint128_t __attribute__((mode(TI)));
    923     result = ((uint128_t) x * y) >> 64;
    924        The second sequence is better in many ways. For example, if x and y
    925        are constants, the compiler can perform the multiplication at
    926        compile time. If x and y are not constants, the compiler can
    927        schedule the runtime multiplication better than it can schedule an
    928        asm statement.
    929      * Support for a number of older systems and recently unmaintained or
    930        untested target ports of GCC has been declared obsolete in GCC 4.4.
    931        Unless there is activity to revive them, the next release of GCC
    932        will have their sources permanently removed.
    933        The following ports for individual systems on particular
    934        architectures have been obsoleted:
    935           + Generic a.out on IA32 and m68k (i[34567]86-*-aout*,
    936             m68k-*-aout*)
    937           + Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*,
    938             armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*,
    939             sh-*-*). This does not affect other more specific targets
    940             using the COFF object format on those architectures, or the
    941             more specific H8300 and SH targets (h8300-*-rtems*,
    942             h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*,
    943             sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
    944           + 2BSD on PDP-11 (pdp11-*-bsd)
    945           + AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*,
    946             powerpc-ibm-aix4.[12]*)
    947           + Tuning support for Itanium1 (Merced) variants. Note that code
    948             tuned for Itanium2 should also run correctly on Itanium1.
    949      * The protoize and unprotoize utilities have been obsoleted and will
    950        be removed in GCC 4.5. These utilities have not been installed by
    951        default since GCC 3.0.
    952      * Support has been removed for all the [2]configurations obsoleted in
    953        GCC 4.3.
    954      * Unknown -Wno-* options are now silently ignored by GCC if no other
    955        diagnostics are issued. If other diagnostics are issued, then GCC
    956        warns about the unknown options.
    957      * More information on porting to GCC 4.4 from previous versions of
    958        GCC can be found in the [3]porting guide for this release.
    959 
    960 General Optimizer Improvements
    961 
    962      * A new command-line switch -findirect-inlining has been added. When
    963        turned on it allows the inliner to also inline indirect calls that
    964        are discovered to have known targets at compile time thanks to
    965        previous inlining.
    966      * A new command-line switch -ftree-switch-conversion has been added.
    967        This new pass turns simple initializations of scalar variables in
    968        switch statements into initializations from a static array, given
    969        that all the values are known at compile time and the ratio between
    970        the new array size and the original switch branches does not exceed
    971        the parameter --param switch-conversion-max-branch-ratio (default
    972        is eight).
    973      * A new command-line switch -ftree-builtin-call-dce has been added.
    974        This optimization eliminates unnecessary calls to certain builtin
    975        functions when the return value is not used, in cases where the
    976        calls can not be eliminated entirely because the function may set
    977        errno. This optimization is on by default at -O2 and above.
    978      * A new command-line switch -fconserve-stack directs the compiler to
    979        minimize stack usage even if it makes the generated code slower.
    980        This affects inlining decisions.
    981      * When the assembler supports it, the compiler will now emit unwind
    982        information using assembler .cfi directives. This makes it possible
    983        to use such directives in inline assembler code. The new option
    984        -fno-dwarf2-cfi-asm directs the compiler to not use .cfi
    985        directives.
    986      * The [4]Graphite branch has been merged. This merge has brought in a
    987        new framework for loop optimizations based on a polyhedral
    988        intermediate representation. These optimizations apply to all the
    989        languages supported by GCC. The following new code transformations
    990        are available in GCC 4.4:
    991           + -floop-interchange performs loop interchange transformations
    992             on loops. Interchanging two nested loops switches the inner
    993             and outer loops. For example, given a loop like:
    994           DO J = 1, M
    995             DO I = 1, N
    996               A(J, I) = A(J, I) * C
    997             ENDDO
    998           ENDDO
    999 
   1000             loop interchange will transform the loop as if the user had
   1001             written:
   1002           DO I = 1, N
   1003             DO J = 1, M
   1004               A(J, I) = A(J, I) * C
   1005             ENDDO
   1006           ENDDO
   1007 
   1008             which can be beneficial when N is larger than the caches,
   1009             because in Fortran, the elements of an array are stored in
   1010             memory contiguously by column, and the original loop iterates
   1011             over rows, potentially creating at each access a cache miss.
   1012           + -floop-strip-mine performs loop strip mining transformations
   1013             on loops. Strip mining splits a loop into two nested loops.
   1014             The outer loop has strides equal to the strip size and the
   1015             inner loop has strides of the original loop within a strip.
   1016             For example, given a loop like:
   1017           DO I = 1, N
   1018             A(I) = A(I) + C
   1019           ENDDO
   1020 
   1021             loop strip mining will transform the loop as if the user had
   1022             written:
   1023           DO II = 1, N, 4
   1024             DO I = II, min (II + 3, N)
   1025               A(I) = A(I) + C
   1026             ENDDO
   1027           ENDDO
   1028 
   1029           + -floop-block performs loop blocking transformations on loops.
   1030             Blocking strip mines each loop in the loop nest such that the
   1031             memory accesses of the element loops fit inside caches. For
   1032             example, given a loop like:
   1033           DO I = 1, N
   1034             DO J = 1, M
   1035               A(J, I) = B(I) + C(J)
   1036             ENDDO
   1037           ENDDO
   1038 
   1039             loop blocking will transform the loop as if the user had
   1040             written:
   1041           DO II = 1, N, 64
   1042             DO JJ = 1, M, 64
   1043               DO I = II, min (II + 63, N)
   1044                 DO J = JJ, min (JJ + 63, M)
   1045                   A(J, I) = B(I) + C(J)
   1046                 ENDDO
   1047               ENDDO
   1048             ENDDO
   1049           ENDDO
   1050 
   1051             which can be beneficial when M is larger than the caches,
   1052             because the innermost loop will iterate over a smaller amount
   1053             of data that can be kept in the caches.
   1054      * A new register allocator has replaced the old one. It is called
   1055        integrated register allocator (IRA) because coalescing, register
   1056        live range splitting, and hard register preferencing are done
   1057        on-the-fly during coloring. It also has better integration with the
   1058        reload pass. IRA is a regional register allocator which uses modern
   1059        Chaitin-Briggs coloring instead of Chow's priority coloring used in
   1060        the old register allocator. More info about IRA internals and
   1061        options can be found in the GCC manuals.
   1062      * A new instruction scheduler and software pipeliner, based on the
   1063        selective scheduling approach, has been added. The new pass
   1064        performs instruction unification, register renaming, substitution
   1065        through register copies, and speculation during scheduling. The
   1066        software pipeliner is able to pipeline non-countable loops. The new
   1067        pass is targeted at scheduling-eager in-order platforms. In GCC 4.4
   1068        it is available for the Intel Itanium platform working by default
   1069        as the second scheduling pass (after register allocation) at the
   1070        -O3 optimization level.
   1071      * When using -fprofile-generate with a multi-threaded program, the
   1072        profile counts may be slightly wrong due to race conditions. The
   1073        new -fprofile-correction option directs the compiler to apply
   1074        heuristics to smooth out the inconsistencies. By default the
   1075        compiler will give an error message when it finds an inconsistent
   1076        profile.
   1077      * The new -fprofile-dir=PATH option permits setting the directory
   1078        where profile data files are stored when using -fprofile-generate
   1079        and friends, and the directory used when reading profile data files
   1080        using -fprofile-use and friends.
   1081 
   1082 New warning options
   1083 
   1084      * The new -Wframe-larger-than=NUMBER option directs GCC to emit a
   1085        warning if any stack frame is larger than NUMBER bytes. This may be
   1086        used to help ensure that code fits within a limited amount of stack
   1087        space.
   1088      * The command-line option -Wlarger-than-N is now written as
   1089        -Wlarger-than=N and the old form is deprecated.
   1090      * The new -Wno-mudflap option disables warnings about constructs
   1091        which can not be instrumented when using -fmudflap.
   1092 
   1093 New Languages and Language specific improvements
   1094 
   1095      * Version 3.0 of the [5]OpenMP specification is now supported for the
   1096        C, C++, and Fortran compilers.
   1097      * New character data types, per [6]TR 19769: New character types in
   1098        C, are now supported for the C compiler in -std=gnu99 mode, as
   1099        __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
   1100        -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
   1101 
   1102   C family
   1103 
   1104      * A new optimize attribute was added to allow programmers to change
   1105        the optimization level and particular optimization options for an
   1106        individual function. You can also change the optimization options
   1107        via the GCC optimize pragma for functions defined after the pragma.
   1108        The GCC push_options pragma and the GCC pop_options pragma allow
   1109        you temporarily save and restore the options used. The GCC
   1110        reset_options pragma restores the options to what was specified on
   1111        the command line.
   1112      * Uninitialized warnings do not require enabling optimization
   1113        anymore, that is, -Wuninitialized can be used together with -O0.
   1114        Nonetheless, the warnings given by -Wuninitialized will probably be
   1115        more accurate if optimization is enabled.
   1116      * -Wparentheses now warns about expressions such as (!x | y) and (!x
   1117        & y). Using explicit parentheses, such as in ((!x) | y), silences
   1118        this warning.
   1119      * -Wsequence-point now warns within if, while,do while and for
   1120        conditions, and within for begin/end expressions.
   1121      * A new option -dU is available to dump definitions of preprocessor
   1122        macros that are tested or expanded.
   1123 
   1124   C++
   1125 
   1126      * [7]Improved experimental support for the upcoming ISO C++ standard,
   1127        C++0x. Including support for auto, inline namespaces, generalized
   1128        initializer lists, defaulted and deleted functions, new character
   1129        types, and scoped enums.
   1130      * Those errors that may be downgraded to warnings to build legacy
   1131        code now mention -fpermissive when -fdiagnostics-show-option is
   1132        enabled.
   1133      * -Wconversion now warns if the result of a static_cast to enumeral
   1134        type is unspecified because the value is outside the range of the
   1135        enumeral type.
   1136      * -Wuninitialized now warns if a non-static reference or non-static
   1137        const member appears in a class without constructors.
   1138      * G++ now properly implements value-initialization, so objects with
   1139        an initializer of () and an implicitly defined default constructor
   1140        will be zero-initialized before the default constructor is called.
   1141 
   1142     Runtime Library (libstdc++)
   1143 
   1144      * [8]Improved experimental support for the upcoming ISO C++ standard,
   1145        C++0x, including:
   1146           + Support for <chrono>, <condition_variable>, <cstdatomic>,
   1147             <forward_list>, <initializer_list>, <mutex>, <ratio>,
   1148             <system_error>, and <thread>.
   1149           + unique_ptr, <algorithm> additions, exception propagation, and
   1150             support for the new character types in <string> and <limits>.
   1151           + Existing facilities now exploit initializer lists, defaulted
   1152             and deleted functions, and the newly implemented core C++0x
   1153             features.
   1154           + Some standard containers are more efficient together with
   1155             stateful allocators, i.e., no allocator is constructed on the
   1156             fly at element construction time.
   1157      * Experimental support for non-standard pointer types in containers.
   1158      * The long standing libstdc++/30928 has been fixed for targets
   1159        running glibc 2.10 or later.
   1160      * As usual, many small and larger bug fixes, in particular quite a
   1161        few corner cases in <locale>.
   1162 
   1163   Fortran
   1164 
   1165      * GNU Fortran now employs libcpp directly instead of using cc1 as an
   1166        external preprocessor. The [9]-cpp option was added to allow manual
   1167        invocation of the preprocessor without relying on filename
   1168        extensions.
   1169      * The [10]-Warray-temporaries option warns about array temporaries
   1170        generated by the compiler, as an aid to optimization.
   1171      * The [11]-fcheck-array-temporaries option has been added, printing a
   1172        notification at run time, when an array temporary had to be created
   1173        for an function argument. Contrary to -Warray-temporaries the
   1174        warning is only printed if the array is noncontiguous.
   1175      * Improved generation of DWARF debugging symbols
   1176      * If using an intrinsic not part of the selected standard (via -std=
   1177        and -fall-intrinsics) gfortran will now treat it as if this
   1178        procedure were declared EXTERNAL and try to link to a user-supplied
   1179        procedure. -Wintrinsics-std will warn whenever this happens. The
   1180        now-useless option -Wnonstd-intrinsic was removed.
   1181      * The flag -falign-commons has been added to control the alignment of
   1182        variables in COMMON blocks, which is enabled by default in line
   1183        with previous GCC version. Using -fno-align-commons one can force
   1184        commons to be contiguous in memory as required by the Fortran
   1185        standard, however, this slows down the memory access. The option
   1186        -Walign-commons, which is enabled by default, warns when padding
   1187        bytes were added for alignment. The proper solution is to sort the
   1188        common objects by decreasing storage size, which avoids the
   1189        alignment problems.
   1190      * Fortran 2003 support has been extended:
   1191           + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
   1192             now supported (except internal reads from/writes to wide
   1193             strings). [12]-fbackslash now supports also \unnnn and
   1194             \Unnnnnnnn to enter Unicode characters.
   1195           + Asynchronous I/O (implemented as synchronous I/O) and the
   1196             decimal=, size=, sign=, pad=, blank=, and delim= specifiers
   1197             are now supported in I/O statements.
   1198           + Support for Fortran 2003 structure constructors and for array
   1199             constructor with typespec has been added.
   1200           + Procedure Pointers (but not yet as component in derived types
   1201             and as function results) are now supported.
   1202           + Abstract types, type extension, and type-bound procedures
   1203             (both PROCEDURE and GENERIC but not as operators). Note: As
   1204             CLASS/polymorphyic types are not implemented, type-bound
   1205             procedures with PASS accept as non-standard extension TYPE
   1206             arguments.
   1207      * Fortran 2008 support has been added:
   1208           + The -std=f2008 option and support for the file extensions
   1209             .f2008 and .F2008 has been added.
   1210           + The g0 format descriptor is now supported.
   1211           + The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH,
   1212             ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED
   1213             are now available (some of them existed as GNU extension
   1214             before). Note: The hyperbolic functions are not yet supporting
   1215             complex arguments and the three- argument version of BESSEL_*N
   1216             is not available.
   1217           + The bit intrinsics LEADZ and TRAILZ have been added.
   1218 
   1219   Java (GCJ)
   1220 
   1221   Ada
   1222 
   1223      * The Ada runtime now supports multilibs on many platforms including
   1224        x86_64, SPARC and PowerPC. Their build is enabled by default.
   1225 
   1226 New Targets and Target Specific Improvements
   1227 
   1228   ARM
   1229 
   1230      * GCC now supports optimizing for the Cortex-A9, Cortex-R4 and
   1231        Cortex-R4F processors and has many other improvements to
   1232        optimization for ARM processors.
   1233      * GCC now supports the VFPv3 variant with 16 double-precision
   1234        registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been
   1235        renamed to -mfpu=vfpv3.
   1236      * GCC now supports the -mfix-cortex-m3-ldrd option to work around an
   1237        erratum on Cortex-M3 processors.
   1238      * GCC now supports the __sync_* atomic operations for ARM EABI
   1239        GNU/Linux.
   1240      * The section anchors optimization is now enabled by default when
   1241        optimizing for ARM.
   1242      * GCC now uses a new EABI-compatible profiling interface for EABI
   1243        targets. This requires a function __gnu_mcount_nc, which is
   1244        provided by GNU libc versions 2.8 and later.
   1245 
   1246   AVR
   1247 
   1248      * The -mno-tablejump option has been deprecated because it has the
   1249        same effect as the -fno-jump-tables option.
   1250      * Added support for these new AVR devices:
   1251           + ATA6289
   1252           + ATtiny13A
   1253           + ATtiny87
   1254           + ATtiny167
   1255           + ATtiny327
   1256           + ATmega8C1
   1257           + ATmega16C1
   1258           + ATmega32C1
   1259           + ATmega8M1
   1260           + ATmega16M1
   1261           + ATmega32M1
   1262           + ATmega32U4
   1263           + ATmega16HVB
   1264           + ATmega4HVD
   1265           + ATmega8HVD
   1266           + ATmega64C1
   1267           + ATmega64M1
   1268           + ATmega16U4
   1269           + ATmega32U6
   1270           + ATmega128RFA1
   1271           + AT90PWM81
   1272           + AT90SCR100
   1273           + M3000F
   1274           + M3000S
   1275           + M3001B
   1276 
   1277   IA-32/x86-64
   1278 
   1279      * Support for Intel AES built-in functions and code generation is
   1280        available via -maes.
   1281      * Support for Intel PCLMUL built-in function and code generation is
   1282        available via -mpclmul.
   1283      * Support for Intel AVX built-in functions and code generation is
   1284        available via -mavx.
   1285      * Automatically align the stack for local variables with alignment
   1286        requirement.
   1287      * GCC can now utilize the SVML library for vectorizing calls to a set
   1288        of C99 functions if -mveclibabi=svml is specified and you link to
   1289        an SVML ABI compatible library.
   1290      * On x86-64, the ABI has been changed in the following cases to
   1291        conform to the x86-64 ABI:
   1292           + Passing/returning structures with flexible array member:
   1293   struct foo
   1294     {
   1295       int i;
   1296       int flex[];
   1297     };
   1298           + Passing/returning structures with complex float member:
   1299   struct foo
   1300     {
   1301       int i;
   1302       __complex__ float f;
   1303     };
   1304           + Passing/returning unions with long double member:
   1305   union foo
   1306     {
   1307       int x;
   1308       long double ld;
   1309     };
   1310        Code built with previous versions of GCC that uses any of these is
   1311        not compatible with code built with GCC 4.4.0 or later.
   1312      * A new target attribute was added to allow programmers to change the
   1313        target options like -msse2 or -march=k8 for an individual function.
   1314        You can also change the target options via the GCC target pragma
   1315        for functions defined after the pragma.
   1316      * GCC can now be configured with options --with-arch-32,
   1317        --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and
   1318        --with-tune-64 to control the default optimization separately for
   1319        32-bit and 64-bit modes.
   1320 
   1321   IA-32/IA64
   1322 
   1323      * Support for __float128 (TFmode) IEEE quad type and corresponding
   1324        TCmode IEEE complex quad type is available via the soft-fp library
   1325        on IA-32/IA64 targets. This includes basic arithmetic operations
   1326        (addition, subtraction, negation, multiplication and division) on
   1327        __float128 real and TCmode complex values, the full set of IEEE
   1328        comparisons between __float128 values, conversions to and from
   1329        float, double and long double floating point types, as well as
   1330        conversions to and from signed or unsigned integer, signed or
   1331        unsigned long integer and signed or unsigned quad (TImode, IA64
   1332        only) integer types. Additionally, all operations generate the full
   1333        set of IEEE exceptions and support the full set of IEEE rounding
   1334        modes.
   1335 
   1336   M68K/ColdFire
   1337 
   1338      * GCC now supports instruction scheduling for ColdFire V1, V3 and V4
   1339        processors. (Scheduling support for ColdFire V2 processors was
   1340        added in GCC 4.3.)
   1341      * GCC now supports the -mxgot option to support programs requiring
   1342        many GOT entries on ColdFire.
   1343      * The m68k-*-linux-gnu target now builds multilibs by default.
   1344 
   1345   MIPS
   1346 
   1347      * MIPS Technologies have extended the original MIPS SVR4 ABI to
   1348        include support for procedure linkage tables (PLTs) and copy
   1349        relocations. These extensions allow GNU/Linux executables to use a
   1350        significantly more efficient code model than the one defined by the
   1351        original ABI.
   1352        GCC support for this code model is available via a new command-line
   1353        option, -mplt. There is also a new configure-time option,
   1354        --with-mips-plt, to make -mplt the default.
   1355        The new code model requires support from the assembler, the linker,
   1356        and the runtime C library. This support is available in binutils
   1357        2.19 and GLIBC 2.9.
   1358      * GCC can now generate MIPS16 code for 32-bit GNU/Linux executables
   1359        and 32-bit GNU/Linux shared libraries. This feature requires GNU
   1360        binutils 2.19 or above.
   1361      * Support for RMI's XLR processor is now available through the
   1362        -march=xlr and -mtune=xlr options.
   1363      * 64-bit targets can now perform 128-bit multiplications inline,
   1364        instead of relying on a libgcc function.
   1365      * Native GNU/Linux toolchains now support -march=native and
   1366        -mtune=native, which select the host processor.
   1367      * GCC now supports the R10K, R12K, R14K and R16K processors. The
   1368        canonical -march= and -mtune= names for these processors are
   1369        r10000, r12000, r14000 and r16000 respectively.
   1370      * GCC can now work around the side effects of speculative execution
   1371        on R10K processors. Please see the documentation of the
   1372        -mr10k-cache-barrier option for details.
   1373      * Support for the MIPS64 Release 2 instruction set has been added.
   1374        The option -march=mips64r2 enables generation of these
   1375        instructions.
   1376      * GCC now supports Cavium Networks' Octeon processor. This support is
   1377        available through the -march=octeon and -mtune=octeon options.
   1378      * GCC now supports STMicroelectronics' Loongson 2E/2F processors. The
   1379        canonical -march= and -mtune= names for these processors are
   1380        loongson2e and loongson2f.
   1381 
   1382   picochip
   1383 
   1384    Picochip is a 16-bit processor. A typical picoChip contains over 250
   1385    small cores, each with small amounts of memory. There are three
   1386    processor variants (STAN, MEM and CTRL) with different instruction sets
   1387    and memory configurations and they can be chosen using the -mae option.
   1388 
   1389    This port is intended to be a "C" only port.
   1390 
   1391   Power Architecture and PowerPC
   1392 
   1393      * GCC now supports the e300c2, e300c3 and e500mc processors.
   1394      * GCC now supports Xilinx processors with a single-precision FPU.
   1395      * Decimal floating point is now supported for e500 processors.
   1396 
   1397   S/390, zSeries and System z9/z10
   1398 
   1399      * Support for the IBM System z10 EC/BC processor has been added. When
   1400        using the -march=z10 option, the compiler will generate code making
   1401        use of instructions provided by the General-Instruction-Extension
   1402        Facility and the Execute-Extension Facility.
   1403 
   1404   VxWorks
   1405 
   1406      * GCC now supports the thread-local storage mechanism used on
   1407        VxWorks.
   1408 
   1409   Xtensa
   1410 
   1411      * GCC now supports thread-local storage (TLS) for Xtensa processor
   1412        configurations that include the Thread Pointer option. TLS also
   1413        requires support from the assembler and linker; this support is
   1414        provided in the GNU binutils beginning with version 2.19.
   1415 
   1416 Documentation improvements
   1417 
   1418 Other significant improvements
   1419 
   1420 GCC 4.4.1
   1421 
   1422    This is the [13]list of problem reports (PRs) from GCC's bug tracking
   1423    system that are known to be fixed in the 4.4.1 release. This list might
   1424    not be complete (that is, it is possible that some PRs that have been
   1425    fixed are not listed here).
   1426 
   1427 GCC 4.4.2
   1428 
   1429    This is the [14]list of problem reports (PRs) from GCC's bug tracking
   1430    system that are known to be fixed in the 4.4.2 release. This list might
   1431    not be complete (that is, it is possible that some PRs that have been
   1432    fixed are not listed here).
   1433 
   1434 GCC 4.4.3
   1435 
   1436    This is the [15]list of problem reports (PRs) from GCC's bug tracking
   1437    system that are known to be fixed in the 4.4.3 release. This list might
   1438    not be complete (that is, it is possible that some PRs that have been
   1439    fixed are not listed here).
   1440 
   1441 GCC 4.4.4
   1442 
   1443    This is the [16]list of problem reports (PRs) from GCC's bug tracking
   1444    system that are known to be fixed in the 4.4.4 release. This list might
   1445    not be complete (that is, it is possible that some PRs that have been
   1446    fixed are not listed here).
   1447 
   1448 GCC 4.4.5
   1449 
   1450    This is the [17]list of problem reports (PRs) from GCC's bug tracking
   1451    system that are known to be fixed in the 4.4.5 release. This list might
   1452    not be complete (that is, it is possible that some PRs that have been
   1453    fixed are not listed here).
   1454 
   1455 GCC 4.4.6
   1456 
   1457    This is the [18]list of problem reports (PRs) from GCC's bug tracking
   1458    system that are known to be fixed in the 4.4.6 release. This list might
   1459    not be complete (that is, it is possible that some PRs that have been
   1460    fixed are not listed here).
   1461 
   1462 GCC 4.4.7
   1463 
   1464    This is the [19]list of problem reports (PRs) from GCC's bug tracking
   1465    system that are known to be fixed in the 4.4.7 release. This list might
   1466    not be complete (that is, it is possible that some PRs that have been
   1467    fixed are not listed here).
   1468 
   1469 
   1470     For questions related to the use of GCC, please consult these web
   1471     pages and the [20]GCC manuals. If that fails, the
   1472     [21]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   1473     web pages and the development of GCC are welcome on our developer
   1474     list at [22]gcc (a] gcc.gnu.org. All of [23]our lists have public
   1475     archives.
   1476 
   1477    Copyright (C) [24]Free Software Foundation, Inc. Verbatim copying and
   1478    distribution of this entire article is permitted in any medium,
   1479    provided this notice is preserved.
   1480 
   1481    These pages are [25]maintained by the GCC team. Last modified
   1482    2012-03-13[26].
   1483 
   1484 References
   1485 
   1486    1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.7
   1487    2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
   1488    3. http://gcc.gnu.org/gcc-4.4/porting_to.html
   1489    4. http://gcc.gnu.org/wiki/Graphite
   1490    5. http://openmp.org/wp/openmp-specifications/
   1491    6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
   1492    7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
   1493    8. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#id476343
   1494    9. http://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
   1495   10. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
   1496   11. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
   1497   12. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
   1498   13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
   1499   14. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
   1500   15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
   1501   16. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
   1502   17. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5
   1503   18. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6
   1504   19. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7
   1505   20. http://gcc.gnu.org/onlinedocs/
   1506   21. mailto:gcc-help (a] gcc.gnu.org
   1507   22. mailto:gcc (a] gcc.gnu.org
   1508   23. http://gcc.gnu.org/lists.html
   1509   24. http://www.fsf.org/
   1510   25. http://gcc.gnu.org/about.html
   1511   26. http://validator.w3.org/check/referer
   1512 ======================================================================
   1513 http://gcc.gnu.org/gcc-4.3/index.html
   1514 
   1515                              GCC 4.3 Release Series
   1516 
   1517    Jun 27, 2011
   1518 
   1519    The [1]GNU project and the GCC developers are pleased to announce the
   1520    release of GCC 4.3.6.
   1521 
   1522    This release is a bug-fix release, containing fixes for regressions in
   1523    GCC 4.3.5 relative to previous releases of GCC.
   1524 
   1525 Release History
   1526 
   1527    GCC 4.3.6
   1528           Jun 27, 2011 ([2]changes)
   1529 
   1530    GCC 4.3.5
   1531           May 22, 2010 ([3]changes)
   1532 
   1533    GCC 4.3.4
   1534           August 4, 2009 ([4]changes)
   1535 
   1536    GCC 4.3.3
   1537           January 24, 2009 ([5]changes)
   1538 
   1539    GCC 4.3.2
   1540           August 27, 2008 ([6]changes)
   1541 
   1542    GCC 4.3.1
   1543           June 6, 2008 ([7]changes)
   1544 
   1545    GCC 4.3.0
   1546           March 5, 2008 ([8]changes)
   1547 
   1548 References and Acknowledgements
   1549 
   1550    GCC used to stand for the GNU C Compiler, but since the compiler
   1551    supports several other languages aside from C, it now stands for the
   1552    GNU Compiler Collection.
   1553 
   1554    A list of [9]successful builds is updated as new information becomes
   1555    available.
   1556 
   1557    The GCC developers would like to thank the numerous people that have
   1558    contributed new features, improvements, bug fixes, and other changes as
   1559    well as test results to GCC. This [10]amazing group of volunteers is
   1560    what makes GCC successful.
   1561 
   1562    For additional information about GCC please refer to the [11]GCC
   1563    project web site or contact the [12]GCC development mailing list.
   1564 
   1565    To obtain GCC please use [13]our mirror sites or [14]our SVN server.
   1566 
   1567 
   1568     For questions related to the use of GCC, please consult these web
   1569     pages and the [15]GCC manuals. If that fails, the
   1570     [16]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   1571     web pages and the development of GCC are welcome on our developer
   1572     list at [17]gcc (a] gcc.gnu.org. All of [18]our lists have public
   1573     archives.
   1574 
   1575    Copyright (C) [19]Free Software Foundation, Inc. Verbatim copying and
   1576    distribution of this entire article is permitted in any medium,
   1577    provided this notice is preserved.
   1578 
   1579    These pages are [20]maintained by the GCC team. Last modified
   1580    2011-06-27[21].
   1581 
   1582 References
   1583 
   1584    1. http://www.gnu.org/
   1585    2. http://gcc.gnu.org/gcc-4.3/changes.html
   1586    3. http://gcc.gnu.org/gcc-4.3/changes.html
   1587    4. http://gcc.gnu.org/gcc-4.3/changes.html
   1588    5. http://gcc.gnu.org/gcc-4.3/changes.html
   1589    6. http://gcc.gnu.org/gcc-4.3/changes.html
   1590    7. http://gcc.gnu.org/gcc-4.3/changes.html
   1591    8. http://gcc.gnu.org/gcc-4.3/changes.html
   1592    9. http://gcc.gnu.org/gcc-4.3/buildstat.html
   1593   10. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   1594   11. http://gcc.gnu.org/index.html
   1595   12. mailto:gcc (a] gcc.gnu.org
   1596   13. http://gcc.gnu.org/mirrors.html
   1597   14. http://gcc.gnu.org/svn.html
   1598   15. http://gcc.gnu.org/onlinedocs/
   1599   16. mailto:gcc-help (a] gcc.gnu.org
   1600   17. mailto:gcc (a] gcc.gnu.org
   1601   18. http://gcc.gnu.org/lists.html
   1602   19. http://www.fsf.org/
   1603   20. http://gcc.gnu.org/about.html
   1604   21. http://validator.w3.org/check/referer
   1605 ======================================================================
   1606 http://gcc.gnu.org/gcc-4.3/changes.html
   1607 
   1608                              GCC 4.3 Release Series
   1609                         Changes, New Features, and Fixes
   1610 
   1611    The latest release in the 4.3 release series is [1]GCC 4.3.5.
   1612 
   1613 Caveats
   1614 
   1615      * GCC requires the [2]GMP and [3]MPFR libraries for building all the
   1616        various front-end languages it supports. See the [4]prerequisites
   1617        page for version requirements.
   1618      * ColdFire targets now treat long double as having the same format as
   1619        double. In earlier versions of GCC, they used the 68881 long double
   1620        format instead.
   1621      * The m68k-uclinux target now uses the same calling conventions as
   1622        m68k-linux-gnu. You can select the original calling conventions by
   1623        configuring for m68k-uclinuxoldabi instead. Note that
   1624        m68k-uclinuxoldabi also retains the original 80-bit long double on
   1625        ColdFire targets.
   1626      * The -fforce-mem option has been removed because it has had no
   1627        effect in the last few GCC releases.
   1628      * The i386 -msvr3-shlib option has been removed since it is no longer
   1629        used.
   1630      * Fastcall for i386 has been changed not to pass aggregate arguments
   1631        in registers, following Microsoft compilers.
   1632      * Support for the AOF assembler has been removed from the ARM back
   1633        end; this affects only the targets arm-semi-aof and armel-semi-aof,
   1634        which are no longer recognized. We removed these targets without a
   1635        deprecation period because we discovered that they have been
   1636        unusable since GCC 4.0.0.
   1637      * Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*)
   1638        has been removed. This support had been deprecated since GCC 4.0.0.
   1639      * Support for a number of older systems and recently unmaintained or
   1640        untested target ports of GCC has been declared obsolete in GCC 4.3.
   1641        Unless there is activity to revive them, the next release of GCC
   1642        will have their sources permanently removed.
   1643        All GCC ports for the following processor architectures have been
   1644        declared obsolete:
   1645           + Morpho MT (mt-*)
   1646        The following aliases for processor architectures have been
   1647        declared obsolete. Users should use the indicated generic target
   1648        names instead, with compile-time options such as -mcpu or
   1649        configure-time options such as --with-cpu to control the
   1650        configuration more precisely.
   1651           + strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-*
   1652             instead).
   1653           + parisc*-*-* (use hppa*-*-* instead).
   1654           + m680[012]0-*-* (use m68k-*-* instead).
   1655        All GCC ports for the following operating systems have been
   1656        declared obsolete:
   1657           + BeOS (*-*-beos*)
   1658           + kaOS (*-*-kaos*)
   1659           + GNU/Linux using the a.out object format (*-*-linux*aout*)
   1660           + GNU/Linux using version 1 of the GNU C Library
   1661             (*-*-linux*libc1*)
   1662           + Solaris versions before Solaris 7 (*-*-solaris2.[0-6],
   1663             *-*-solaris2.[0-6].*)
   1664           + Miscellaneous System V (*-*-sysv*)
   1665           + WindISS (*-*-windiss*)
   1666        Also, those for some individual systems on particular architectures
   1667        have been obsoleted:
   1668           + UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*)
   1669           + CRIS with a.out object format (cris-*-aout)
   1670           + BSD 4.3 on PA-RISC (hppa1.1-*-bsd*)
   1671           + OSF/1 on PA-RISC (hppa1.1-*-osf*)
   1672           + PRO on PA-RISC (hppa1.1-*-pro*)
   1673           + Sequent PTX on IA32 (i[34567]86-sequent-ptx4*,
   1674             i[34567]86-sequent-sysv4*)
   1675           + SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*)
   1676           + UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host
   1677             was previously [5]removed in 2001, leaving only the support
   1678             for UWIN as a target now being deprecated)
   1679           + ChorusOS on PowerPC (powerpc-*-chorusos*)
   1680           + All VAX configurations apart from NetBSD and OpenBSD
   1681             (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*)
   1682      * The [6]-Wconversion option has been modified. Its purpose now is to
   1683        warn for implicit conversions that may alter a value. This new
   1684        behavior is available for both C and C++. Warnings about
   1685        conversions between signed and unsigned integers can be disabled by
   1686        using -Wno-sign-conversion. In C++, they are disabled by default
   1687        unless -Wsign-conversion is explicitly requested. The old behavior
   1688        of -Wconversion, that is, warn for prototypes causing a type
   1689        conversion that is different from what would happen to the same
   1690        argument in the absence of a prototype, has been moved to a new
   1691        option -Wtraditional-conversion, which is only available for C.
   1692      * The -m386, -m486, -mpentium and -mpentiumpro tuning options have
   1693        been removed because they were deprecated for more than 3 GCC major
   1694        releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or
   1695        -mtune=pentiumpro as a replacement.
   1696      * The -funsafe-math-optimizations option now automatically turns on
   1697        -fno-trapping-math in addition to -fno-signed-zeros, as it enables
   1698        reassociation and thus may introduce or remove traps.
   1699      * The -ftree-vectorize option is now on by default under -O3. In
   1700        order to generate code for a SIMD extension, it has to be enabled
   1701        as well: use -maltivec for PowerPC platforms and -msse/-msse2 for
   1702        i?86 and x86_64.
   1703      * More information on porting to GCC 4.3 from previous versions of
   1704        GCC can be found in the [7]porting guide for this release.
   1705 
   1706 General Optimizer Improvements
   1707 
   1708      * The GCC middle-end has been integrated with the [8]MPFR library.
   1709        This allows GCC to evaluate and replace at compile-time calls to
   1710        built-in math functions having constant arguments with their
   1711        mathematically equivalent results. In making use of [9]MPFR, GCC
   1712        can generate correct results regardless of the math library
   1713        implementation or floating point precision of the host platform.
   1714        This also allows GCC to generate identical results regardless of
   1715        whether one compiles in native or cross-compile configurations to a
   1716        particular target. The following built-in functions take advantage
   1717        of this new capability: acos, acosh, asin, asinh, atan2, atan,
   1718        atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1,
   1719        fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10,
   1720        log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh,
   1721        tan, tanh, tgamma, y0, y1 and yn. The float and long double
   1722        variants of these functions (e.g. sinf and sinl) are also handled.
   1723        The sqrt and cabs functions with constant arguments were already
   1724        optimized in prior GCC releases. Now they also use [10]MPFR.
   1725      * A new forward propagation pass on RTL was added. The new pass
   1726        replaces several slower transformations, resulting in compile-time
   1727        improvements as well as better code generation in some cases.
   1728      * A new command-line switch -frecord-gcc-switches has been added to
   1729        GCC, although it is only enabled for some targets. The switch
   1730        causes the command line that was used to invoke the compiler to be
   1731        recorded into the object file that is being created. The exact
   1732        format of this recording is target and binary file format
   1733        dependent, but it usually takes the form of a note section
   1734        containing ASCII text. The switch is related to the -fverbose-asm
   1735        switch, but that one only records the information in the assembler
   1736        output file as comments, so the information never reaches the
   1737        object file.
   1738      * The inliner heuristic is now aware of stack frame consumption. New
   1739        command-line parameters --param large-stack-frame and --param
   1740        large-stack-frame-growth can be used to limit stack frame size
   1741        growth caused by inlining.
   1742      * During feedback directed optimizations, the expected block size the
   1743        memcpy, memset and bzero functions operate on is discovered and for
   1744        cases of commonly used small sizes, specialized inline code is
   1745        generated.
   1746      * __builtin_expect no longer requires its argument to be a compile
   1747        time constant.
   1748      * Interprocedural optimization was reorganized to work on functions
   1749        in SSA form. This enables more precise and cheaper dataflow
   1750        analysis and makes writing interprocedural optimizations easier.
   1751        The following improvements have been implemented on top of this
   1752        framework:
   1753           + Pre-inline optimization: Selected local optimization passes
   1754             are run before the inliner (and other interprocedural passes)
   1755             are executed. This significantly improves the accuracy of code
   1756             growth estimates used by the inliner and reduces the overall
   1757             memory footprint for large compilation units.
   1758           + Early inlining (a simple bottom-up inliner pass inlining only
   1759             functions whose body is smaller than the expected call
   1760             overhead) is now executed with the early optimization passes,
   1761             thus inlining already optimized function bodies into an
   1762             unoptimized function that is subsequently optimized by early
   1763             optimizers. This enables the compiler to quickly eliminate
   1764             abstraction penalty in C++ programs.
   1765           + Interprocedural constant propagation now operate on SSA form
   1766             increasing accuracy of the analysis.
   1767      * A new internal representation for GIMPLE statements has been
   1768        contributed, resulting in compile-time memory savings.
   1769      * The vectorizer was enhanced to support vectorization of outer
   1770        loops, intra-iteration parallelism (loop-aware SLP), vectorization
   1771        of strided accesses and loops with multiple data-types. Run-time
   1772        dependency testing using loop versioning was added. The cost model,
   1773        turned on by -fvect-cost-model, was developed.
   1774 
   1775 New Languages and Language specific improvements
   1776 
   1777      * We have added new command-line options
   1778        -finstrument-functions-exclude-function-list and
   1779        -finstrument-functions-exclude-file-list. They provide more control
   1780        over which functions are annotated by the -finstrument-functions
   1781        option.
   1782 
   1783   C family
   1784 
   1785      * Implicit conversions between generic vector types are now only
   1786        permitted when the two vectors in question have the same number of
   1787        elements and compatible element types. (Note that the restriction
   1788        involves compatible element types, not implicitly-convertible
   1789        element types: thus, a vector type with element type int may not be
   1790        implicitly converted to a vector type with element type unsigned
   1791        int.) This restriction, which is in line with specifications for
   1792        SIMD architectures such as AltiVec, may be relaxed using the flag
   1793        -flax-vector-conversions. This flag is intended only as a
   1794        compatibility measure and should not be used for new code.
   1795      * -Warray-bounds has been added and is now enabled by default for
   1796        -Wall . It produces warnings for array subscripts that can be
   1797        determined at compile time to be always out of bounds.
   1798        -Wno-array-bounds will disable the warning.
   1799      * The constructor and destructor function attributes now accept
   1800        optional priority arguments which control the order in which the
   1801        constructor and destructor functions are run.
   1802      * New [11]command-line options -Wtype-limits,
   1803        -Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body,
   1804        -Wclobbered and -Wignored-qualifiers have been added for finer
   1805        control of the diverse warnings enabled by -Wextra.
   1806      * A new function attribute alloc_size has been added to mark up
   1807        malloc style functions. For constant sized allocations this can be
   1808        used to find out the size of the returned pointer using the
   1809        __builtin_object_size() function for buffer overflow checking and
   1810        similar. This supplements the already built-in malloc and calloc
   1811        constant size handling.
   1812      * Integer constants written in binary are now supported as a GCC
   1813        extension. They consist of a prefix 0b or 0B, followed by a
   1814        sequence of 0 and 1 digits.
   1815      * A new predefined macro __COUNTER__ has been added. It expands to
   1816        sequential integral values starting from 0. In conjunction with the
   1817        ## operator, this provides a convenient means to generate unique
   1818        identifiers.
   1819      * A new command-line option -fdirectives-only has been added. It
   1820        enables a special preprocessing mode which improves the performance
   1821        of applications like distcc and ccache.
   1822      * Fixed-point data types and operators have been added. They are
   1823        based on Chapter 4 of the Embedded-C specification (n1169.pdf).
   1824        Currently, only MIPS targets are supported.
   1825      * Decimal floating-point arithmetic based on draft ISO/IEC TR 24732,
   1826        N1241, is now supported as a GCC extension to C for targets
   1827        i[34567]86-*-linux-gnu, powerpc*-*-linux-gnu, s390*-ibm-linux-gnu,
   1828        and x86_64-*-linux-gnu. The feature introduces new data types
   1829        _Decimal32, _Decimal64, and _Decimal128 with constant suffixes DF,
   1830        DD, and DL.
   1831 
   1832   C++
   1833 
   1834      * [12]Experimental support for the upcoming ISO C++ standard, C++0x.
   1835      * -Wc++0x-compat has been added and is now enabled by default for
   1836        -Wall. It produces warnings for constructs whose meaning differs
   1837        between ISO C++ 1998 and C++0x.
   1838      * The -Wparentheses option now works for C++ as it does for C. It
   1839        warns if parentheses are omitted when operators with confusing
   1840        precedence are nested. It also warns about ambiguous else
   1841        statements. Since -Wparentheses is enabled by -Wall, this may cause
   1842        additional warnings with existing C++ code which uses -Wall. These
   1843        new warnings may be disabled by using -Wall -Wno-parentheses.
   1844      * The -Wmissing-declarations now works for C++ as it does for C.
   1845      * The -fvisibility-ms-compat flag was added, to make it easier to
   1846        port larger projects using shared libraries from Microsoft's Visual
   1847        Studio to ELF and Mach-O systems.
   1848      * C++ attribute handling has been overhauled for template arguments
   1849        (ie dependent types). In particular, __attribute__((aligned(T)));
   1850        works for C++ types.
   1851 
   1852     Runtime Library (libstdc++)
   1853 
   1854      * [13]Experimental support for the upcoming ISO C++ standard, C++0x.
   1855      * Support for TR1 mathematical special functions and regular
   1856        expressions. ([14]Implementation status of TR1)
   1857      * Default what implementations give more elaborate exception strings
   1858        for bad_cast, bad_typeid, bad_exception, and bad_alloc.
   1859      * Header dependencies have been streamlined, reducing unnecessary
   1860        includes and pre-processed bloat.
   1861      * Variadic template implementations of items in <tuple> and
   1862        <functional>.
   1863      * An experimental [15]parallel mode has been added. This is a
   1864        parallel implementation of many C++ Standard library algorithms,
   1865        like std::accumulate, std::for_each, std::transform, or std::sort,
   1866        to give but four examples. These algorithms can be substituted for
   1867        the normal (sequential) libstdc++ algorithms on a piecemeal basis,
   1868        or all existing algorithms can be transformed via the
   1869        -D_GLIBCXX_PARALLEL macro.
   1870      * Debug mode versions of classes in <unordered_set> and
   1871        <unordered_map>.
   1872      * Formal deprecation of <ext/hash_set> and <ext/hash_map>, which are
   1873        now <backward/hash_set> and <backward/hash_map>. This code:
   1874     #include <ext/hash_set>
   1875     __gnu_cxx::hash_set<int> s;
   1876 
   1877        Can be transformed (in order of preference) to:
   1878     #include <tr1/unordered_set>
   1879     std::tr1::unordered_set<int> s;
   1880 
   1881        or
   1882     #include <backward/hash_set>
   1883     __gnu_cxx::hash_set<int> s;
   1884 
   1885        Similar transformations apply to __gnu_cxx::hash_map,
   1886        __gnu_cxx::hash_multimap, __gnu_cxx::hash_set,
   1887        __gnu_cxx::hash_multiset.
   1888 
   1889   Fortran
   1890 
   1891      * Due to the fact that the [16]GMP and [17]MPFR libraries are
   1892        required for all languages, Fortran is no longer special in this
   1893        regard and is available by default.
   1894      * The [18]-fexternal-blas option has been added, which generates
   1895        calls to BLAS routines for intrinsic matrix operations such as
   1896        matmul rather than using the built-in algorithms.
   1897      * Support to give a backtrace (compiler flag -fbacktrace or
   1898        environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems
   1899        only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a
   1900        run-time error occured.
   1901      * GNU Fortran now defines __GFORTRAN__ when it runs the C
   1902        preprocessor (CPP).
   1903      * The [19]-finit-local-zero, -finit-real, -finit-integer,
   1904        -finit-character, and -finit-logical options have been added, which
   1905        can be used to initialize local variables.
   1906      * The intrinsic procedures [20]GAMMA and [21]LGAMMA have been added,
   1907        which calculate the Gamma function and its logarithm. Use EXTERNAL
   1908        gamma if you want to use your own gamma function.
   1909      * GNU Fortran now regards the backslash character as literal (as
   1910        required by the Fortran 2003 standard); using [22]-fbackslash GNU
   1911        Fortran interprets backslashes as C-style escape characters.
   1912      * The [23]interpretation of binary, octal and hexadecimal (BOZ)
   1913        literal constants has been changed. Before they were always
   1914        interpreted as integer; now they are bit-wise transferred as
   1915        argument of INT, REAL, DBLE and CMPLX as required by the Fortran
   1916        2003 standard, and for real and complex variables in DATA
   1917        statements or when directly assigned to real and complex variables.
   1918        Everywhere else and especially in expressions they are still
   1919        regarded as integer constants.
   1920      * Fortran 2003 support has been extended:
   1921           + Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE
   1922           + Pointer intent
   1923           + Intrinsic module ISO_ENV_FORTRAN
   1924           + Interoperability with C (ISO C Bindings)
   1925           + ABSTRACT INTERFACES and PROCEDURE statements (without POINTER
   1926             attribute)
   1927           + Fortran 2003 BOZ
   1928 
   1929   Java (GCJ)
   1930 
   1931      * GCJ now uses the Eclipse Java compiler for its Java parsing needs.
   1932        This enables the use of all 1.5 language features, and fixes most
   1933        existing front end bugs.
   1934      * libgcj now supports all 1.5 language features which require runtime
   1935        support: foreach, enum, annotations, generics, and auto-boxing.
   1936      * We've made many changes to the tools shipped with gcj.
   1937           + The old jv-scan tool has been removed. This tool never really
   1938             worked properly. There is no replacement.
   1939           + gcjh has been rewritten. Some of its more obscure options no
   1940             longer work, but are still recognized in an attempt at
   1941             compatibility. gjavah is a new program with similar
   1942             functionality but different command-line options.
   1943           + grmic and grmiregistry have been rewritten. grmid has been
   1944             added.
   1945           + gjar replaces the old fastjar.
   1946           + gjarsigner (used for signing jars), gkeytool (used for key
   1947             management), gorbd (for CORBA), gserialver (computes
   1948             serialization UIDs), and gtnameserv (also for CORBA) are now
   1949             installed.
   1950      * The ability to dump the contents of the java run time heap to a
   1951        file for off-line analysis has been added. The heap dumps may be
   1952        analyzed with the new gc-analyze tool. They may be generated on
   1953        out-of-memory conditions or on demand and are controlled by the new
   1954        run time class gnu.gcj.util.GCInfo.
   1955      * java.util.TimeZone can now read files from /usr/share/zoneinfo to
   1956        provide correct, updated, timezone information. This means that
   1957        packagers no longer have to update libgcj when a time zone change
   1958        is published.
   1959 
   1960 New Targets and Target Specific Improvements
   1961 
   1962   IA-32/x86-64
   1963 
   1964      * Tuning for Intel Core 2 processors is available via -mtune=core2
   1965        and -march=core2.
   1966      * Tuning for AMD Geode processors is available via -mtune=geode and
   1967        -march=geode.
   1968      * Code generation of block move (memcpy) and block set (memset) was
   1969        rewritten. GCC can now pick the best algorithm (loop, unrolled
   1970        loop, instruction with rep prefix or a library call) based on the
   1971        size of the block being copied and the CPU being optimized for. A
   1972        new option -minline-stringops-dynamically has been added. With this
   1973        option string operations of unknown size are expanded such that
   1974        small blocks are copied by in-line code, while for large blocks a
   1975        library call is used. This results in faster code than
   1976        -minline-all-stringops when the library implementation is capable
   1977        of using cache hierarchy hints. The heuristic choosing the
   1978        particular algorithm can be overwritten via -mstringop-strategy.
   1979        Newly also memset of values different from 0 is inlined.
   1980      * GCC no longer places the cld instruction before string operations.
   1981        Both i386 and x86-64 ABI documents mandate the direction flag to be
   1982        clear at the entry of a function. It is now invalid to set the flag
   1983        in asm statement without reseting it afterward.
   1984      * Support for SSSE3 built-in functions and code generation are
   1985        available via -mssse3.
   1986      * Support for SSE4.1 built-in functions and code generation are
   1987        available via -msse4.1.
   1988      * Support for SSE4.2 built-in functions and code generation are
   1989        available via -msse4.2.
   1990      * Both SSE4.1 and SSE4.2 support can be enabled via -msse4.
   1991      * A new set of options -mpc32, -mpc64 and -mpc80 have been added to
   1992        allow explicit control of x87 floating point precision.
   1993      * Support for __float128 (TFmode) IEEE quad type and corresponding
   1994        TCmode IEEE complex quad type is available via the soft-fp library
   1995        on x86_64 targets. This includes basic arithmetic operations
   1996        (addition, subtraction, negation, multiplication and division) on
   1997        __float128 real and TCmode complex values, the full set of IEEE
   1998        comparisons between __float128 values, conversions to and from
   1999        float, double and long double floating point types, as well as
   2000        conversions to and from signed or unsigned integer, signed or
   2001        unsigned long integer and signed or unsigned quad (TImode) integer
   2002        types. Additionally, all operations generate the full set of IEEE
   2003        exceptions and support the full set of IEEE rounding modes.
   2004      * GCC can now utilize the ACML library for vectorizing calls to a set
   2005        of C99 functions on x86_64 if -mveclibabi=acml is specified and you
   2006        link to an ACML ABI compatible library.
   2007 
   2008   ARM
   2009 
   2010      * Compiler and Library support for Thumb-2 and the ARMv7 architecture
   2011        has been added.
   2012 
   2013   CRIS
   2014 
   2015     New features
   2016 
   2017      * Compiler and Library support for the CRIS v32 architecture, as
   2018        found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been
   2019        added.
   2020 
   2021     Configuration changes
   2022 
   2023      * The cris-*-elf target now includes support for CRIS v32, including
   2024        libraries, through the -march=v32 option.
   2025      * A new crisv32-*-elf target defaults to generate code for CRIS v32.
   2026      * A new crisv32-*-linux* target defaults to generate code for CRIS
   2027        v32.
   2028      * The cris-*-aout target has been obsoleted.
   2029 
   2030     Improved support for built-in functions
   2031 
   2032      * GCC can now use the lz and swapwbr instructions to implement the
   2033        __builtin_clz, __builtin_ctz and __builtin_ffs family of functions.
   2034      * __builtin_bswap32 is now implemented using the swapwb instruction,
   2035        when available.
   2036 
   2037   m68k and ColdFire
   2038 
   2039     New features
   2040 
   2041      * Support for several new ColdFire processors has been added. You can
   2042        generate code for them using the new -mcpu option.
   2043      * All targets now support ColdFire processors.
   2044      * m68k-uclinux targets have improved support for C++ constructors and
   2045        destructors, and for shared libraries.
   2046      * It is now possible to set breakpoints on the first or last line of
   2047        a function, even if there are no statements on that line.
   2048 
   2049     Optimizations
   2050 
   2051      * Support for sibling calls has been added.
   2052      * More use is now made of the ColdFire mov3q instruction.
   2053      * __builtin_clz is now implemented using the ff1 ColdFire
   2054        instruction, when available.
   2055      * GCC now honors the -m68010 option. 68010 code now uses clr rather
   2056        than move to zero volatile memory.
   2057      * 68020 targets and above can now use symbol(index.size*scale)
   2058        addresses for indexed array accesses. Earlier compilers would
   2059        always load the symbol into a base register first.
   2060 
   2061     Configuration changes
   2062 
   2063      * All m68k and ColdFire targets now allow the default processor to be
   2064        set at configure time using --with-cpu.
   2065      * A --with-arch configuration option has been added. This option
   2066        allows you to restrict a target to ColdFire or non-ColdFire
   2067        processors.
   2068 
   2069     Preprocessor macros
   2070 
   2071      * An __mcfv*__ macro is now defined for all ColdFire targets.
   2072        (Earlier versions of GCC only defined __mcfv4e__.)
   2073      * __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added.
   2074      * All targets now define __mc68010 and __mc68010__ when generating
   2075        68010 code.
   2076 
   2077     Command-line changes
   2078 
   2079      * New command-line options -march, -mcpu, -mtune and -mhard-float
   2080        have been added. These options apply to both m68k and ColdFire
   2081        targets.
   2082      * -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative
   2083        versions of -mshort, etc.
   2084      * -fforce-addr has been removed. It is now ignored by the compiler.
   2085 
   2086     Other improvements
   2087 
   2088      * ColdFire targets now try to maintain a 4-byte-aligned stack where
   2089        possible.
   2090      * m68k-uclinux targets now try to avoid situations that lead to the
   2091        load-time error: BINFMT_FLAT: reloc outside program.
   2092 
   2093   MIPS
   2094 
   2095     Changes to existing configurations
   2096 
   2097      * libffi and libjava now support all three GNU/Linux ABIs: o32, n32
   2098        and n64. Every GNU/Linux configuration now builds these libraries
   2099        by default.
   2100      * GNU/Linux configurations now generate -mno-shared code unless
   2101        overridden by -fpic, -fPIC, -fpie or -fPIE.
   2102      * mipsisa32*-linux-gnu configurations now generate hard-float code by
   2103        default, just like other mipsisa32* and mips*-linux-gnu
   2104        configurations. You can build a soft-float version of any
   2105        mips*-linux-gnu configuration by passing --with-float=soft to
   2106        configure.
   2107      * mips-wrs-vxworks now supports run-time processes (RTPs).
   2108 
   2109     Changes to existing command-line options
   2110 
   2111      * The -march and -mtune options no longer accept 24k as a processor
   2112        name. Please use 24kc, 24kf2_1 or 24kf1_1 instead.
   2113      * The -march and -mtune options now accept 24kf2_1, 24kef2_1 and
   2114        34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The
   2115        options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for
   2116        24kx, 24kex and 34kx.
   2117 
   2118     New configurations
   2119 
   2120    GCC now supports the following configurations:
   2121      * mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by
   2122        default. Earlier releases also recognized this configuration, but
   2123        they treated it in the same way as mipsisa32*-linux-gnu*. Note that
   2124        you can customize any mips*-linux-gnu* configuration to a
   2125        particular ISA or processor by passing an appropriate --with-arch
   2126        option to configure.
   2127      * mipsisa*-sde-elf*, which provides compatibility with MIPS
   2128        Technologies' SDE toolchains. The configuration uses the SDE
   2129        libraries by default, but you can use it like other newlib-based
   2130        ELF configurations by passing --with-newlib to configure. It is the
   2131        only configuration besides mips64vr*-elf* to build MIPS16 as well
   2132        as non-MIPS16 libraries.
   2133      * mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf*
   2134        configuration, but uses the o32 and o64 ABIs instead of the 32-bit
   2135        and 64-bit forms of the EABI.
   2136 
   2137     New processors and application-specific extensions
   2138 
   2139      * Support for the SmartMIPS ASE is available through the new
   2140        -msmartmips option.
   2141      * Support for revision 2 of the DSP ASE is available through the new
   2142        -mdspr2 option. A new preprocessor macro called __mips_dsp_rev
   2143        indicates the revision of the ASE in use.
   2144      * Support for the 4KS and 74K families of processors is available
   2145        through the -march and -mtune options.
   2146 
   2147     Improved support for built-in functions
   2148 
   2149      * GCC can now use load-linked, store-conditional and sync
   2150        instructions to implement atomic built-in functions such as
   2151        __sync_fetch_and_add. The memory reference must be 4 bytes wide for
   2152        32-bit targets and either 4 or 8 bytes wide for 64-bit targets.
   2153      * GCC can now use the clz and dclz instructions to implement the
   2154        __builtin_ctz and __builtin_ffs families of functions.
   2155      * There is a new __builtin___clear_cache function for flushing the
   2156        instruction cache. GCC expands this function inline on MIPS32
   2157        revision 2 targets, otherwise it calls the function specified by
   2158        -mcache-flush-func.
   2159 
   2160     MIPS16 improvements
   2161 
   2162      * GCC can now compile objects that contain a mixture of MIPS16 and
   2163        non-MIPS16 code. There are two new attributes, mips16 and nomips16,
   2164        for specifying which mode a function should use.
   2165      * A new option called -minterlink-mips16 makes non-MIPS16 code
   2166        link-compatible with MIPS16 code.
   2167      * After many bug fixes, the long-standing MIPS16 -mhard-float support
   2168        should now work fairly reliably.
   2169      * GCC can now use the MIPS16e save and restore instructions.
   2170      * -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled
   2171        with -G0 -fsection-anchors is often smaller than code compiled with
   2172        -G8. However, please note that you must usually compile all objects
   2173        in your application with the same -G option; see the documentation
   2174        of -G for details.
   2175      * A new option called-mcode-readable specifies which instructions are
   2176        allowed to load from the code segment. -mcode-readable=yes is the
   2177        default and says that any instruction may load from the code
   2178        segment. The other alternatives are -mcode-readable=pcrel, which
   2179        says that only PC-relative MIPS16 instructions may load from the
   2180        code segment, and -mcode-readable=no, which says that no
   2181        instruction may do so. Please see the documentation for more
   2182        details, including example uses.
   2183 
   2184     Small-data improvements
   2185 
   2186    There are three new options for controlling small data:
   2187      * -mno-extern-sdata, which disables small-data accesses for
   2188        externally-defined variables. Code compiled with -Gn
   2189        -mno-extern-sdata will be link-compatible with any -G setting
   2190        between -G0 and -Gn inclusive.
   2191      * -mno-local-sdata, which disables the use of small-data sections for
   2192        data that is not externally visible. This option can be a useful
   2193        way of reducing small-data usage in less performance-critical parts
   2194        of an application.
   2195      * -mno-gpopt, which disables the use of the $gp register while still
   2196        honoring the -G limit when placing externally-visible data. This
   2197        option implies -mno-extern-sdata and -mno-local-sdata and it can be
   2198        useful in situations where $gp does not necessarily hold the
   2199        expected value.
   2200 
   2201     Miscellaneous improvements
   2202 
   2203      * There is a new option called -mbranch-cost for tweaking the
   2204        perceived cost of branches.
   2205      * If GCC is configured to use a version of GAS that supports the
   2206        .gnu_attribute directive, it will use that directive to record
   2207        certain properties of the output code. .gnu_attribute is new to GAS
   2208        2.18.
   2209      * There are two new function attributes, near and far, for overriding
   2210        the command-line setting of -mlong-calls on a function-by-function
   2211        basis.
   2212      * -mfp64, which previously required a 64-bit target, now works with
   2213        MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and
   2214        mipsisa*-sde-elf* configurations provide suitable library support.
   2215      * GCC now recognizes the -mdmx and -mmt options and passes them down
   2216        to the assembler. It does nothing else with the options at present.
   2217 
   2218   SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture
   2219   (BEA)
   2220 
   2221      * Support has been added for this new architecture.
   2222 
   2223   RS6000 (POWER/PowerPC)
   2224 
   2225      * Support for the PowerPC 750CL paired-single instructions has been
   2226        added with a new powerpc-*-linux*paired* target configuration. It
   2227        is enabled by an associated -mpaired option and can be accessed
   2228        using new built-in functions.
   2229      * Support for auto-detecting architecture and system configuration to
   2230        auto-select processor optimization tuning.
   2231      * Support for VMX on AIX 5.3 has been added.
   2232      * Support for AIX Version 6.1 has been added.
   2233 
   2234   S/390, zSeries and System z9
   2235 
   2236      * Support for the IBM System z9 EC/BC processor (z9 GA3) has been
   2237        added. When using the -march=z9-ec option, the compiler will
   2238        generate code making use of instructions provided by the decimal
   2239        floating point facility and the floating point conversion facility
   2240        (pfpo). Besides the instructions used to implement decimal floating
   2241        point operations these facilities also contain instructions to move
   2242        between general purpose and floating point registers and to modify
   2243        and copy the sign-bit of floating point values.
   2244      * When the -march=z9-ec option is used the new
   2245        -mhard-dfp/-mno-hard-dfp options can be used to specify whether the
   2246        decimal floating point hardware instructions will be used or not.
   2247        If none of them is given the hardware support is enabled by
   2248        default.
   2249      * The -mstack-guard option can now be omitted when using stack
   2250        checking via -mstack-size in order to let GCC choose a sensible
   2251        stack guard value according to the frame size of each function.
   2252      * Various changes to improve performance of generated code have been
   2253        implemented, including:
   2254           + The condition code set by an add logical with carry
   2255             instruction is now available for overflow checks like: a + b +
   2256             carry < b.
   2257           + The test data class instruction is now used to implement
   2258             sign-bit and infinity checks of binary and decimal floating
   2259             point numbers.
   2260 
   2261   SPARC
   2262 
   2263      * Support for the Sun UltraSPARC T2 (Niagara 2) processor has been
   2264        added.
   2265 
   2266   Xtensa
   2267 
   2268      * Stack unwinding for exception handling now uses by default a
   2269        specialized version of DWARF unwinding. This is not
   2270        binary-compatible with the setjmp/longjmp (sjlj) unwinding used for
   2271        Xtensa with previous versions of GCC.
   2272      * For Xtensa processors that include the Conditional Store option,
   2273        the built-in functions for atomic memory access are now implemented
   2274        using S32C1I instructions.
   2275      * If the Xtensa NSA option is available, GCC will use it to implement
   2276        the __builtin_ctz and __builtin_clz functions.
   2277 
   2278 Documentation improvements
   2279 
   2280      * Existing libstdc++ documentation has been edited and restructured
   2281        into a single DocBook XML manual. The results can be viewed online
   2282        [24]here.
   2283 
   2284 Other significant improvements
   2285 
   2286      * The compiler's --help command-line option has been extended so that
   2287        it now takes an optional set of arguments. These arguments restrict
   2288        the information displayed to specific classes of command-line
   2289        options, and possibly only a subset of those options. It is also
   2290        now possible to replace the descriptive text associated with each
   2291        displayed option with an indication of its current value, or for
   2292        binary options, whether it has been enabled or disabled.
   2293        Here are some examples. The following will display all the options
   2294        controlling warning messages:
   2295       --help=warnings
   2296 
   2297        Whereas this will display all the undocumented, target specific
   2298        options:
   2299       --help=target,undocumented
   2300 
   2301        This sequence of commands will display the binary optimizations
   2302        that are enabled by -O3:
   2303       gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
   2304       gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
   2305       diff /tmp/O2-opts /tmp/O3-opts | grep enabled
   2306 
   2307      * The configure options --with-pkgversion and --with-bugurl have been
   2308        added. These allow distributors of GCC to include a
   2309        distributor-specific string in manuals and --version output and to
   2310        specify the URL for reporting bugs in their versions of GCC.
   2311 
   2312 GCC 4.3.1
   2313 
   2314    This is the [25]list of problem reports (PRs) from GCC's bug tracking
   2315    system that are known to be fixed in the 4.3.1 release. This list might
   2316    not be complete (that is, it is possible that some PRs that have been
   2317    fixed are not listed here).
   2318 
   2319 Target Specific Changes
   2320 
   2321   IA-32/x86-64
   2322 
   2323     ABI changes
   2324 
   2325      * Starting with GCC 4.3.1, decimal floating point variables are
   2326        aligned to their natural boundaries when they are passed on the
   2327        stack for i386.
   2328 
   2329     Command-line changes
   2330 
   2331      * Starting with GCC 4.3.1, the -mcld option has been added to
   2332        automatically generate a cld instruction in the prologue of
   2333        functions that use string instructions. This option is used for
   2334        backward compatibility on some operating systems and can be enabled
   2335        by default for 32-bit x86 targets by configuring GCC with the
   2336        --enable-cld configure option.
   2337 
   2338 GCC 4.3.2
   2339 
   2340    This is the [26]list of problem reports (PRs) from GCC's bug tracking
   2341    system that are known to be fixed in the 4.3.2 release. This list might
   2342    not be complete (that is, it is possible that some PRs that have been
   2343    fixed are not listed here).
   2344 
   2345 GCC 4.3.3
   2346 
   2347    This is the [27]list of problem reports (PRs) from GCC's bug tracking
   2348    system that are known to be fixed in the 4.3.3 release. This list might
   2349    not be complete (that is, it is possible that some PRs that have been
   2350    fixed are not listed here).
   2351 
   2352 GCC 4.3.4
   2353 
   2354    This is the [28]list of problem reports (PRs) from GCC's bug tracking
   2355    system that are known to be fixed in the 4.3.4 release. This list might
   2356    not be complete (that is, it is possible that some PRs that have been
   2357    fixed are not listed here).
   2358 
   2359 GCC 4.3.5
   2360 
   2361    This is the [29]list of problem reports (PRs) from GCC's bug tracking
   2362    system that are known to be fixed in the 4.3.5 release. This list might
   2363    not be complete (that is, it is possible that some PRs that have been
   2364    fixed are not listed here).
   2365 
   2366 GCC 4.3.6
   2367 
   2368    This is the [30]list of problem reports (PRs) from GCC's bug tracking
   2369    system that are known to be fixed in the 4.3.6 release. This list might
   2370    not be complete (that is, it is possible that some PRs that have been
   2371    fixed are not listed here).
   2372 
   2373 
   2374     For questions related to the use of GCC, please consult these web
   2375     pages and the [31]GCC manuals. If that fails, the
   2376     [32]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   2377     web pages and the development of GCC are welcome on our developer
   2378     list at [33]gcc (a] gcc.gnu.org. All of [34]our lists have public
   2379     archives.
   2380 
   2381    Copyright (C) [35]Free Software Foundation, Inc. Verbatim copying and
   2382    distribution of this entire article is permitted in any medium,
   2383    provided this notice is preserved.
   2384 
   2385    These pages are [36]maintained by the GCC team. Last modified
   2386    2011-09-12[37].
   2387 
   2388 References
   2389 
   2390    1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5
   2391    2. http://gmplib.org/
   2392    3. http://www.mpfr.org/
   2393    4. http://gcc.gnu.org/install/prerequisites.html
   2394    5. http://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
   2395    6. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
   2396    7. http://gcc.gnu.org/gcc-4.3/porting_to.html
   2397    8. http://www.mpfr.org/
   2398    9. http://www.mpfr.org/
   2399   10. http://www.mpfr.org/
   2400   11. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
   2401   12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
   2402   13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
   2403   14. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#m anual.intro.status.standard.tr1
   2404   15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
   2405   16. http://gmplib.org/
   2406   17. http://www.mpfr.org/
   2407   18. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
   2408   19. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
   2409   20. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
   2410   21. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
   2411   22. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
   2412   23. http://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
   2413   24. http://gcc.gnu.org/onlinedocs/libstdc++/
   2414   25. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
   2415   26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
   2416   27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
   2417   28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
   2418   29. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
   2419   30. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6
   2420   31. http://gcc.gnu.org/onlinedocs/
   2421   32. mailto:gcc-help (a] gcc.gnu.org
   2422   33. mailto:gcc (a] gcc.gnu.org
   2423   34. http://gcc.gnu.org/lists.html
   2424   35. http://www.fsf.org/
   2425   36. http://gcc.gnu.org/about.html
   2426   37. http://validator.w3.org/check/referer
   2427 ======================================================================
   2428 http://gcc.gnu.org/gcc-4.2/index.html
   2429 
   2430                              GCC 4.2 Release Series
   2431 
   2432    May 19, 2008
   2433 
   2434    The [1]GNU project and the GCC developers are pleased to announce the
   2435    release of GCC 4.2.4.
   2436 
   2437    This release is a bug-fix release, containing fixes for regressions in
   2438    GCC 4.2.3 relative to previous releases of GCC.
   2439 
   2440 Release History
   2441 
   2442    GCC 4.2.4
   2443           May 19, 2008 ([2]changes)
   2444 
   2445    GCC 4.2.3
   2446           February 1, 2008 ([3]changes)
   2447 
   2448    GCC 4.2.2
   2449           October 7, 2007 ([4]changes)
   2450 
   2451    GCC 4.2.1
   2452           July 18, 2007 ([5]changes)
   2453 
   2454    GCC 4.2.0
   2455           May 13, 2007 ([6]changes)
   2456 
   2457 References and Acknowledgements
   2458 
   2459    GCC used to stand for the GNU C Compiler, but since the compiler
   2460    supports several other languages aside from C, it now stands for the
   2461    GNU Compiler Collection.
   2462 
   2463    A list of [7]successful builds is updated as new information becomes
   2464    available.
   2465 
   2466    The GCC developers would like to thank the numerous people that have
   2467    contributed new features, improvements, bug fixes, and other changes as
   2468    well as test results to GCC. This [8]amazing group of volunteers is
   2469    what makes GCC successful.
   2470 
   2471    For additional information about GCC please refer to the [9]GCC project
   2472    web site or contact the [10]GCC development mailing list.
   2473 
   2474    To obtain GCC please use [11]our mirror sites or [12]our SVN server.
   2475 
   2476 
   2477     For questions related to the use of GCC, please consult these web
   2478     pages and the [13]GCC manuals. If that fails, the
   2479     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   2480     web pages and the development of GCC are welcome on our developer
   2481     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
   2482     archives.
   2483 
   2484    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
   2485    distribution of this entire article is permitted in any medium,
   2486    provided this notice is preserved.
   2487 
   2488    These pages are [18]maintained by the GCC team. Last modified
   2489    2011-04-25[19].
   2490 
   2491 References
   2492 
   2493    1. http://www.gnu.org/
   2494    2. http://gcc.gnu.org/gcc-4.2/changes.html
   2495    3. http://gcc.gnu.org/gcc-4.2/changes.html
   2496    4. http://gcc.gnu.org/gcc-4.2/changes.html
   2497    5. http://gcc.gnu.org/gcc-4.2/changes.html
   2498    6. http://gcc.gnu.org/gcc-4.2/changes.html
   2499    7. http://gcc.gnu.org/gcc-4.2/buildstat.html
   2500    8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   2501    9. http://gcc.gnu.org/index.html
   2502   10. mailto:gcc (a] gcc.gnu.org
   2503   11. http://gcc.gnu.org/mirrors.html
   2504   12. http://gcc.gnu.org/svn.html
   2505   13. http://gcc.gnu.org/onlinedocs/
   2506   14. mailto:gcc-help (a] gcc.gnu.org
   2507   15. mailto:gcc (a] gcc.gnu.org
   2508   16. http://gcc.gnu.org/lists.html
   2509   17. http://www.fsf.org/
   2510   18. http://gcc.gnu.org/about.html
   2511   19. http://validator.w3.org/check/referer
   2512 ======================================================================
   2513 http://gcc.gnu.org/gcc-4.2/changes.html
   2514 
   2515                              GCC 4.2 Release Series
   2516                         Changes, New Features, and Fixes
   2517 
   2518 Caveats
   2519 
   2520      * GCC no longer accepts the -fshared-data option. This option has had
   2521        no effect in any GCC 4 release; the targets to which the option
   2522        used to apply had been removed before GCC 4.0.
   2523 
   2524 General Optimizer Improvements
   2525 
   2526      * New command-line options specify the possible relationships among
   2527        parameters and between parameters and global data. For example,
   2528        -fargument-noalias-anything specifies that arguments do not alias
   2529        any other storage.
   2530        Each language will automatically use whatever option is required by
   2531        the language standard. You should not need to use these options
   2532        yourself.
   2533 
   2534 New Languages and Language specific improvements
   2535 
   2536      * [1]OpenMP is now supported for the C, C++ and Fortran compilers.
   2537      * New command-line options -fstrict-overflow and -Wstrict-overflow
   2538        have been added. -fstrict-overflow tells the compiler that it may
   2539        assume that the program follows the strict signed overflow
   2540        semantics permitted for the language: for C and C++ this means that
   2541        the compiler may assume that signed overflow does not occur. For
   2542        example, a loop like
   2543       for (i = 1; i > 0; i *= 2)
   2544 
   2545        is presumably intended to continue looping until i overflows. With
   2546        -fstrict-overflow, the compiler may assume that signed overflow
   2547        will not occur, and transform this into an infinite loop.
   2548        -fstrict-overflow is turned on by default at -O2, and may be
   2549        disabled via -fno-strict-overflow. The -Wstrict-overflow option may
   2550        be used to warn about cases where the compiler assumes that signed
   2551        overflow will not occur. It takes five different levels:
   2552        -Wstrict-overflow=1 to 5. See the [2]documentation for details.
   2553        -Wstrict-overflow=1 is enabled by -Wall.
   2554      * The new command-line option -fno-toplevel-reorder directs GCC to
   2555        emit top-level functions, variables, and asm statements in the same
   2556        order that they appear in the input file. This is intended to
   2557        support existing code which relies on a particular ordering (for
   2558        example, code which uses top-level asm statements to switch
   2559        sections). For new code, it is generally better to use function and
   2560        variable attributes. The -fno-toplevel-reorder option may be used
   2561        for most cases which currently use -fno-unit-at-a-time. The
   2562        -fno-unit-at-a-time option will be removed in some future version
   2563        of GCC. If you know of a case which requires -fno-unit-at-a-time
   2564        which is not fixed by -fno-toplevel-reorder, please open a bug
   2565        report.
   2566 
   2567   C family
   2568 
   2569      * The pragma redefine_extname will now macro expand its tokens for
   2570        compatibility with SunPRO.
   2571      * In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct
   2572        GCC to handle inline functions as specified in the C99 standard. In
   2573        preparation for this, GCC 4.2 will warn about any use of non-static
   2574        inline functions in gnu99 or c99 mode. This new warning may be
   2575        disabled with the new gnu_inline function attribute or the new
   2576        -fgnu89-inline command-line option. Also, GCC 4.2 and later will
   2577        define one of the preprocessor macros __GNUC_GNU_INLINE__ or
   2578        __GNUC_STDC_INLINE__ to indicate the semantics of inline functions
   2579        in the current compilation.
   2580      * A new command-line option -Waddress has been added to warn about
   2581        suspicious uses of memory addresses as, for example, using the
   2582        address of a function in a conditional expression, and comparisons
   2583        against the memory address of a string literal. This warning is
   2584        enabled by -Wall.
   2585 
   2586   C++
   2587 
   2588      * C++ visibility handling has been overhauled.
   2589        Restricted visiblity is propagated from classes to members, from
   2590        functions to local statics, and from templates and template
   2591        arguments to instantiations, unless the latter has explicitly
   2592        declared visibility.
   2593        The visibility attribute for a class must come between the
   2594        class-key and the name, not after the closing brace.
   2595        Attributes are now allowed for enums and elaborated-type-specifiers
   2596        that only declare a type.
   2597        Members of the anonymous namespace are now local to a particular
   2598        translation unit, along with any other declarations which use them,
   2599        though they are still treated as having external linkage for
   2600        language semantics.
   2601      * The (undocumented) extension which permitted templates with default
   2602        arguments to be bound to template template parameters with fewer
   2603        parameters has been removed. For example:
   2604         template <template <typename> class C>
   2605         void f(C<double>) {}
   2606 
   2607         template <typename T, typename U = int>
   2608         struct S {};
   2609 
   2610         template void f(S<double>);
   2611 
   2612        is no longer accepted by G++. The reason this code is not accepted
   2613        is that S is a template with two parameters; therefore, it cannot
   2614        be bound to C which has only one parameter.
   2615      * The <?, >?, <?=, and >?= operators, deprecated in previous GCC
   2616        releases, have been removed.
   2617      * The command-line option -fconst-strings, deprecated in previous GCC
   2618        releases, has been removed.
   2619      * The configure variable enable-__cxa_atexit is now enabled by
   2620        default for more targets. Enabling this variable is necessary in
   2621        order for static destructors to be executed in the correct order,
   2622        but it depends upon the presence of a non-standard C library in the
   2623        target library in order to work. The variable is now enabled for
   2624        more targets which are known to have suitable C libraries.
   2625      * -Wextra will produce warnings for if statements with a semicolon as
   2626        the only body, to catch code like:
   2627          if (a);
   2628             return 1;
   2629          return 0;
   2630 
   2631        To suppress the warning in valid cases, use { } instead.
   2632      * The C++ frontend now also produces strict aliasing warnings when
   2633        -fstrict-aliasing -Wstrict-aliasing is in effect.
   2634 
   2635     Runtime Library (libstdc++)
   2636 
   2637      * Added support for TR1 <random>, <complex>, and C compatibility
   2638        headers. In addition, a lock-free version of shared_ptr was
   2639        contributed as part of Phillip Jordan's Google Summer of Code
   2640        project on lock-free containers. ([3]Implementation status of TR1)
   2641      * In association with the Summer of Code work on lock-free
   2642        containers, the interface for atomic builtins was adjusted,
   2643        creating simpler alternatives for non-threaded code paths. Also,
   2644        usage was consolidated and all elements were moved from namespace
   2645        std to namespace__gnu_cxx. Affected interfaces are the functions
   2646        __exchange_and_add, __atomic_add, and the objects __mutex,
   2647        __recursive_mutex, and __scoped_lock.
   2648      * Support for versioning weak symbol names via namespace association
   2649        was added. However, as this changes the names of exported symbols,
   2650        this is turned off by default in the current ABI. Intrepid users
   2651        can enable this feature by using
   2652        --enable-symvers=gnu-versioned-namespace during configuration.
   2653      * Revised, simplified, and expanded policy-based associative
   2654        containers, including data types for tree and trie forms
   2655        (basic_tree, tree, trie), lists (list_update), and both
   2656        collision-chaining and probing hash-based containers
   2657        (basic_hash_table, cc_hash_table, gp_hash_table). More details per
   2658        the [4]documentation.
   2659      * The implementation of the debug mode was modified, whereby the
   2660        debug namespaces were nested inside of namespace std and namespace
   2661        __gnu_cxx in order to resolve some long standing corner cases
   2662        involving name lookup. Debug functionality from the policy-based
   2663        data structures was consolidated and enabled with the single macro,
   2664        _GLIBCXX_DEBUG. See PR 26142 for more information.
   2665      * Added extensions for type traits: __conditional_type,
   2666        __numeric_traits, __add_unsigned, __removed_unsigned, __enable_if.
   2667      * Added a typelist implementation for compile-time meta-programming.
   2668        Elements for typelist construction and operation can be found
   2669        within namespace __gnu_cxx::typelist.
   2670      * Added a new allocator, __gnu_cxx::throw_allocator, for testing
   2671        exception-safety.
   2672      * Enabled library-wide visibility control, allowing -fvisibility to
   2673        be used.
   2674      * Consolidated all nested namespaces and the conversion of
   2675        __gnu_internal implementation-private details to anonymous
   2676        namespaces whenever possible.
   2677      * Implemented LWG resolutions DR 431 and DR 538.
   2678 
   2679   Fortran
   2680 
   2681      * Support for allocatable components has been added (TR 15581 and
   2682        Fortran 2003).
   2683      * Support for the Fortran 2003 streaming IO extension has been added.
   2684      * The GNU Fortran compiler now uses 4-byte record markers by default
   2685        for unformatted files to be compatible with g77 and most other
   2686        compilers. The implementation allows for records greater than 2 GB
   2687        and is compatible with several other compilers. Older versions of
   2688        gfortran used 8-byte record markers by default (on most systems).
   2689        In order to change the length of the record markers, e.g. to read
   2690        unformatted files created by older gfortran versions, the
   2691        [5]-frecord-marker=8 option can be used.
   2692 
   2693   Java (GCJ)
   2694 
   2695      * A new command-line option -static-libgcj has been added for targets
   2696        that use a linker compatible with GNU Binutils. As its name
   2697        implies, this causes libgcj to be linked statically. In some cases
   2698        this causes the resulting executable to start faster and use less
   2699        memory than if the shared version of libgcj were used. However
   2700        caution should be used as it can also cause essential parts of the
   2701        library to be omitted. Some of these issues are discussed in:
   2702        [6]http://gcc.gnu.org/wiki/Statically_linking_libgcj
   2703      * fastjar is no longer bundled with GCC. To build libgcj, you will
   2704        need either InfoZIP (both zip and unzip) or an external jar
   2705        program. In the former case, the GCC build will install a jar shell
   2706        script that is based on InfoZIP and provides the same functionality
   2707        as fastjar.
   2708 
   2709 New Targets and Target Specific Improvements
   2710 
   2711   IA-32/x86-64
   2712 
   2713      * -mtune=generic can now be used to generate code running well on
   2714        common x86 chips. This includes AMD Athlon, AMD Opteron, Intel
   2715        Pentium-M, Intel Pentium 4 and Intel Core 2.
   2716      * -mtune=native and -march=native will produce code optimized for the
   2717        host architecture as detected using the cpuid instruction.
   2718      * Added a new command-line option -fstackrealign and and
   2719        __attribute__ ((force_align_arg_pointer)) to realign the stack at
   2720        runtime. This allows functions compiled with a vector-aligned stack
   2721        to be invoked from legacy objects that keep only word-alignment.
   2722 
   2723   SPARC
   2724 
   2725      * The default CPU setting has been changed from V7 to V9 in 32-bit
   2726        mode on Solaris 7 and above. This is already the case in 64-bit
   2727        mode. It can be overridden by specifying --with-cpu at configure
   2728        time.
   2729      * Back-end support of built-in functions for atomic memory access has
   2730        been implemented.
   2731      * Support for the Sun UltraSPARC T1 (Niagara) processor has been
   2732        added.
   2733 
   2734   M32C
   2735 
   2736      * Various bug fixes have made some functions (notably, functions
   2737        returning structures) incompatible with previous releases.
   2738        Recompiling all libraries is recommended. Note that code quality
   2739        has considerably improved since 4.1, making a recompile even more
   2740        beneficial.
   2741 
   2742   MIPS
   2743 
   2744      * Added support for the Broadcom SB-1A core.
   2745 
   2746   IA-64
   2747 
   2748      * Added support for IA-64 data and control speculation. By default
   2749        speculation is enabled only during second scheduler pass. A number
   2750        of machine flags was introduced to control the usage of speculation
   2751        for both scheduler passes.
   2752 
   2753   HPPA
   2754 
   2755      * Added Java language support (libffi and libjava) for 32-bit HP-UX
   2756        11 target.
   2757 
   2758 Obsolete Systems
   2759 
   2760 Documentation improvements
   2761 
   2762   PDF Documentation
   2763 
   2764      * A make pdf target has been added to the top-level makefile,
   2765        enabling automated production of PDF documentation files.
   2766        (Front-ends external to GCC should modify their Make-lang.in file
   2767        to add a lang.pdf: target.)
   2768 
   2769 Other significant improvements
   2770 
   2771   Build system improvements
   2772 
   2773      * All the components of the compiler are now bootstrapped by default.
   2774        This improves the resilience to bugs in the system compiler or
   2775        binary compatibility problems, as well as providing better testing
   2776        of GCC 4.2 itself. In addition, if you build the compiler from a
   2777        combined tree, the assembler, linker, etc. will also be
   2778        bootstrapped (i.e. built with themselves).
   2779        You can disable this behavior, and go back to the pre-GCC 4.2 set
   2780        up, by configuring GCC with --disable-bootstrap.
   2781      * The rules that configure follows to find target tools resemble more
   2782        closely the locations that the built compiler will search. In
   2783        addition, you can use the new configure option --with-target-tools
   2784        to specify where to find the target tools used during the build,
   2785        without affecting what the built compiler will use.
   2786        This can be especially useful when building packages of GCC. For
   2787        example, you may want to build GCC with GNU as or ld, even if the
   2788        resulting compiler to work with the native assembler and linker. To
   2789        do so, you can use --with-target-tools to point to the native
   2790        tools.
   2791 
   2792   Incompatible changes to the build system
   2793 
   2794      * Front-ends external to GCC should modify their Make-lang.in file to
   2795        replace double-colon rules (e.g. dvi::) with normal rules (like
   2796        lang.dvi:). Front-end makefile hooks do not use double-colon rules
   2797        anymore.
   2798      * Up to GCC 4.1, a popular way to specify the target tools used
   2799        during the build was to create directories named gas, binutils,
   2800        etc. in the build tree, and create links to the tools from there.
   2801        This does not work any more when the compiler is bootstrapped. The
   2802        new configure option --with-target-tools provides a better way to
   2803        achieve the same effect, and works for all native and cross
   2804        settings.
   2805 
   2806 
   2807     For questions related to the use of GCC, please consult these web
   2808     pages and the [7]GCC manuals. If that fails, the
   2809     [8]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   2810     web pages and the development of GCC are welcome on our developer
   2811     list at [9]gcc (a] gcc.gnu.org. All of [10]our lists have public
   2812     archives.
   2813 
   2814    Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and
   2815    distribution of this entire article is permitted in any medium,
   2816    provided this notice is preserved.
   2817 
   2818    These pages are [12]maintained by the GCC team. Last modified
   2819    2011-04-25[13].
   2820 
   2821 References
   2822 
   2823    1. http://gcc.gnu.org/projects/gomp/
   2824    2. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
   2825    3. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.tr1
   2826    4. http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html
   2827    5. http://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html
   2828    6. http://gcc.gnu.org/wiki/Statically_linking_libgcj
   2829    7. http://gcc.gnu.org/onlinedocs/
   2830    8. mailto:gcc-help (a] gcc.gnu.org
   2831    9. mailto:gcc (a] gcc.gnu.org
   2832   10. http://gcc.gnu.org/lists.html
   2833   11. http://www.fsf.org/
   2834   12. http://gcc.gnu.org/about.html
   2835   13. http://validator.w3.org/check/referer
   2836 ======================================================================
   2837 http://gcc.gnu.org/gcc-4.1/index.html
   2838 
   2839                              GCC 4.1 Release Series
   2840 
   2841    February 13, 2007
   2842 
   2843    The [1]GNU project and the GCC developers are pleased to announce the
   2844    release of GCC 4.1.2.
   2845 
   2846    This release is a bug-fix release, containing fixes for regressions in
   2847    GCC 4.1.1 relative to previous releases of GCC.
   2848 
   2849 Release History
   2850 
   2851    GCC 4.1.2
   2852           February 13, 2007 ([2]changes)
   2853 
   2854    GCC 4.1.1
   2855           May 24, 2006 ([3]changes)
   2856 
   2857    GCC 4.1.0
   2858           February 28, 2006 ([4]changes)
   2859 
   2860 References and Acknowledgements
   2861 
   2862    GCC used to stand for the GNU C Compiler, but since the compiler
   2863    supports several other languages aside from C, it now stands for the
   2864    GNU Compiler Collection.
   2865 
   2866    A list of [5]successful builds is updated as new information becomes
   2867    available.
   2868 
   2869    The GCC developers would like to thank the numerous people that have
   2870    contributed new features, improvements, bug fixes, and other changes as
   2871    well as test results to GCC. This [6]amazing group of volunteers is
   2872    what makes GCC successful.
   2873 
   2874    For additional information about GCC please refer to the [7]GCC project
   2875    web site or contact the [8]GCC development mailing list.
   2876 
   2877    To obtain GCC please use [9]our mirror sites or [10]our SVN server.
   2878 
   2879 
   2880     For questions related to the use of GCC, please consult these web
   2881     pages and the [11]GCC manuals. If that fails, the
   2882     [12]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   2883     web pages and the development of GCC are welcome on our developer
   2884     list at [13]gcc (a] gcc.gnu.org. All of [14]our lists have public
   2885     archives.
   2886 
   2887    Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
   2888    distribution of this entire article is permitted in any medium,
   2889    provided this notice is preserved.
   2890 
   2891    These pages are [16]maintained by the GCC team. Last modified
   2892    2011-04-25[17].
   2893 
   2894 References
   2895 
   2896    1. http://www.gnu.org/
   2897    2. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
   2898    3. http://gcc.gnu.org/gcc-4.1/changes.html
   2899    4. http://gcc.gnu.org/gcc-4.1/changes.html
   2900    5. http://gcc.gnu.org/gcc-4.1/buildstat.html
   2901    6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   2902    7. http://gcc.gnu.org/index.html
   2903    8. mailto:gcc (a] gcc.gnu.org
   2904    9. http://gcc.gnu.org/mirrors.html
   2905   10. http://gcc.gnu.org/svn.html
   2906   11. http://gcc.gnu.org/onlinedocs/
   2907   12. mailto:gcc-help (a] gcc.gnu.org
   2908   13. mailto:gcc (a] gcc.gnu.org
   2909   14. http://gcc.gnu.org/lists.html
   2910   15. http://www.fsf.org/
   2911   16. http://gcc.gnu.org/about.html
   2912   17. http://validator.w3.org/check/referer
   2913 ======================================================================
   2914 http://gcc.gnu.org/gcc-4.1/changes.html
   2915 
   2916                              GCC 4.1 Release Series
   2917                         Changes, New Features, and Fixes
   2918 
   2919    The latest release in the 4.1 release series is [1]GCC 4.1.2.
   2920 
   2921 Caveats
   2922 
   2923 General Optimizer Improvements
   2924 
   2925      * GCC now has infrastructure for inter-procedural optimizations and
   2926        the following inter-procedural optimizations are implemented:
   2927           + Profile guided inlining. When doing profile feedback guided
   2928             optimization, GCC can now use the profile to make better
   2929             informed decisions on whether inlining of a function is
   2930             profitable or not. This means that GCC will no longer inline
   2931             functions at call sites that are not executed very often, and
   2932             that functions at hot call sites are more likely to be
   2933             inlined.
   2934             A new parameter min-inline-recursive-probability is also now
   2935             available to throttle recursive inlining of functions with
   2936             small average recursive depths.
   2937           + Discovery of pure and const functions, a form of side-effects
   2938             analysis. While older GCC releases could also discover such
   2939             special functions, the new IPA-based pass runs earlier so that
   2940             the results are available to more optimizers. The pass is also
   2941             simply more powerful than the old one.
   2942           + Analysis of references to static variables and type escape
   2943             analysis, also forms of side-effects analysis. The results of
   2944             these passes allow the compiler to be less conservative about
   2945             call-clobbered variables and references. This results in more
   2946             redundant loads being eliminated and in making static
   2947             variables candidates for register promotion.
   2948           + Improvement of RTL-based alias analysis. The results of type
   2949             escape analysis are fed to the RTL type-based alias analyzer,
   2950             allowing it to disambiguate more memory references.
   2951           + Interprocedural constant propagation and function versioning.
   2952             This pass looks for functions that are always called with the
   2953             same constant value for one or more of the function arguments,
   2954             and propagates those constants into those functions.
   2955           + GCC will now eliminate static variables whose usage was
   2956             optimized out.
   2957           + -fwhole-program --combine can now be used to make all
   2958             functions in program static allowing whole program
   2959             optimization. As an exception, the main function and all
   2960             functions marked with the new externally_visible attribute are
   2961             kept global so that programs can link with runtime libraries.
   2962      * GCC can now do a form of partial dead code elimination (PDCE) that
   2963        allows code motion of expressions to the paths where the result of
   2964        the expression is actually needed. This is not always a win, so the
   2965        pass has been limited to only consider profitable cases. Here is an
   2966        example:
   2967     int foo (int *, int *);
   2968     int
   2969     bar (int d)
   2970     {
   2971       int a, b, c;
   2972       b = d + 1;
   2973       c = d + 2;
   2974       a = b + c;
   2975       if (d)
   2976         {
   2977           foo (&b, &c);
   2978           a = b + c;
   2979         }
   2980       printf ("%d\n", a);
   2981     }
   2982 
   2983        The a = b + c can be sunk to right before the printf. Normal code
   2984        sinking will not do this, it will sink the first one above into the
   2985        else-branch of the conditional jump, which still gives you two
   2986        copies of the code.
   2987      * GCC now has a value range propagation pass. This allows the
   2988        compiler to eliminate bounds checks and branches. The results of
   2989        the pass can also be used to accurately compute branch
   2990        probabilities.
   2991      * The pass to convert PHI nodes to straight-line code (a form of
   2992        if-conversion for GIMPLE) has been improved significantly. The two
   2993        most significant improvements are an improved algorithm to
   2994        determine the order in which the PHI nodes are considered, and an
   2995        improvement that allow the pass to consider if-conversions of basic
   2996        blocks with more than two predecessors.
   2997      * Alias analysis improvements. GCC can now differentiate between
   2998        different fields of structures in Tree-SSA's virtual operands form.
   2999        This lets stores/loads from non-overlapping structure fields not
   3000        conflict. A new algorithm to compute points-to sets was contributed
   3001        that can allows GCC to see now that p->a and p->b, where p is a
   3002        pointer to a structure, can never point to the same field.
   3003      * Various enhancements to auto-vectorization:
   3004           + Incrementally preserve SSA form when vectorizing.
   3005           + Incrementally preserve loop-closed form when vectorizing.
   3006           + Improvements to peeling for alignment: generate better code
   3007             when the misalignment of an access is known at compile time,
   3008             or when different accesses are known to have the same
   3009             misalignment, even if the misalignment amount itself is
   3010             unknown.
   3011           + Consider dependence distance in the vectorizer.
   3012           + Externalize generic parts of data reference analysis to make
   3013             this analysis available to other passes.
   3014           + Vectorization of conditional code.
   3015           + Reduction support.
   3016      * GCC can now partition functions in sections of hot and cold code.
   3017        This can significantly improve performance due to better
   3018        instruction cache locality. This feature works best together with
   3019        profile feedback driven optimization.
   3020      * A new pass to avoid saving of unneeded arguments to the stack in
   3021        vararg functions if the compiler can prove that they will not be
   3022        needed.
   3023      * Transition of basic block profiling to tree level implementation
   3024        has been completed. The new implementation should be considerably
   3025        more reliable (hopefully avoiding profile mismatch errors when
   3026        using -fprofile-use or -fbranch-probabilities) and can be used to
   3027        drive higher level optimizations, such as inlining.
   3028        The -ftree-based-profiling command-line option was removed and
   3029        -fprofile-use now implies disabling old RTL level loop optimizer
   3030        (-fno-loop-optimize). Speculative prefetching optimization
   3031        (originally enabled by -fspeculative-prefetching) was removed.
   3032 
   3033 New Languages and Language specific improvements
   3034 
   3035   C and Objective-C
   3036 
   3037      * The old Bison-based C and Objective-C parser has been replaced by a
   3038        new, faster hand-written recursive-descent parser.
   3039 
   3040   Ada
   3041 
   3042      * The build infrastructure for the Ada runtime library and tools has
   3043        been changed to be better integrated with the rest of the build
   3044        infrastructure of GCC. This should make doing cross builds of Ada a
   3045        bit easier.
   3046 
   3047   C++
   3048 
   3049      * ARM-style name-injection of friend declarations is no longer the
   3050        default. For example:
   3051           struct S {
   3052             friend void f();
   3053           };
   3054 
   3055           void g() { f(); }
   3056        will not be accepted; instead a declaration of f will need to be
   3057        present outside of the scope of S. The new -ffriend-injection
   3058        option will enable the old behavior.
   3059      * The (undocumented) extension which permitted templates with default
   3060        arguments to be bound to template template parameters with fewer
   3061        parameters has been deprecated, and will be removed in the next
   3062        major release of G++. For example:
   3063        template <template <typename> class C>
   3064        void f(C<double>) {}
   3065 
   3066        template <typename T, typename U = int>
   3067        struct S {};
   3068 
   3069        template void f(S<double>);
   3070 
   3071        makes use of the deprecated extension. The reason this code is not
   3072        valid ISO C++ is that S is a template with two parameters;
   3073        therefore, it cannot be bound to C which has only one parameter.
   3074 
   3075     Runtime Library (libstdc++)
   3076 
   3077      * Optimization work:
   3078           + A new implementation of std::search_n is provided, better
   3079             performing in case of random access iterators.
   3080           + Added further efficient specializations of istream functions,
   3081             i.e., character array and string extractors.
   3082           + Other smaller improvements throughout.
   3083      * Policy-based associative containers, designed for high-performance,
   3084        flexibility and semantic safety are delivered in ext/pb_assoc.
   3085      * A versatile string class, __gnu_cxx::__versa_string, providing
   3086        facilities conforming to the standard requirements for
   3087        basic_string, is delivered in <ext/vstring.h>. In particular:
   3088           + Two base classes are provided: the default one avoids
   3089             reference counting and is optimized for short strings; the
   3090             alternate one, still uses it while improving in a few low
   3091             level areas (e.g., alignment). See vstring_fwd.h for some
   3092             useful typedefs.
   3093           + Various algorithms have been rewritten (e.g., replace), the
   3094             code streamlined and simple optimizations added.
   3095           + Option 3 of DR 431 is implemented for both available bases,
   3096             thus improving the support for stateful allocators.
   3097      * As usual, many bugs have been fixed (e.g., libstdc++/13583,
   3098        libstdc++/23953) and LWG resolutions put into effect for the first
   3099        time (e.g., DR 280, DR 464, N1780 recommendations for DR 233, TR1
   3100        Issue 6.19). The implementation status of TR1 is now tracked in the
   3101        docs in tr1.html.
   3102 
   3103   Objective-C++
   3104 
   3105      * A new language front end for Objective-C++ has been added. This
   3106        language allows users to mix the object oriented features of
   3107        Objective-C with those of C++.
   3108 
   3109   Java (GCJ)
   3110 
   3111      * Core library (libgcj) updates based on GNU Classpath 0.15 - 0.19
   3112        features (plus some 0.20 bug-fixes)
   3113           + Networking
   3114                o The java.net.HttpURLConnection implementation no longer
   3115                  buffers the entire response body in memory. This means
   3116                  that response bodies larger than available memory can now
   3117                  be handled.
   3118           + (N)IO
   3119                o NIO FileChannel.map implementation, fast bulk put
   3120                  implementation for DirectByteBuffer (speeds up this
   3121                  method 10x).
   3122                o FileChannel.lock() and FileChannel.force() implemented.
   3123           + XML
   3124                o gnu.xml fix for nodes created outside a namespace
   3125                  context.
   3126                o Add support for output indenting and
   3127                  cdata-section-elements output instruction in
   3128                  xml.transform.
   3129                o xml.xpath corrections for cases where elements/attributes
   3130                  might have been created in non-namespace-aware mode.
   3131                  Corrections to handling of XSL variables and minor
   3132                  conformance updates.
   3133           + AWT
   3134                o GNU JAWT implementation, the AWT Native Interface, which
   3135                  allows direct access to native screen resources from
   3136                  within a Canvas's paint method. GNU Classpath Examples
   3137                  comes with a Demo, see libjava/classpath/examples/README.
   3138                o awt.datatransfer updated to 1.5 with support for
   3139                  FlavorEvents. The gtk+ awt peers now allow copy/paste of
   3140                  text, images, URIs/files and serialized objects with
   3141                  other applications and tracking clipboard change events
   3142                  with gtk+ 2.6 (for gtk+ 2.4 only text and serialized
   3143                  objects are supported). A GNU Classpath Examples
   3144                  datatransfer Demo was added to show the new
   3145                  functionality.
   3146                o Split gtk+ awt peers event handling in two threads and
   3147                  improve gdk lock handling (solves several awt lock ups).
   3148                o Speed up awt Image loading.
   3149                o Better gtk+ scrollbar peer implementation when using gtk+
   3150                  >= 2.6.
   3151                o Handle image loading errors correctly for gdkpixbuf and
   3152                  MediaTracker.
   3153                o Better handle GDK lock. Properly prefix gtkpeer native
   3154                  functions (cp_gtk).
   3155                o GdkGraphics2D has been updated to use Cairo 0.5.x or
   3156                  higher.
   3157                o BufferedImage and GtkImage rewrites. All image drawing
   3158                  operations should now work correctly (flipping requires
   3159                  gtk+ >= 2.6)
   3160                o Future Graphics2D, image and text work is documented at:
   3161                  [2]http://developer.classpath.org/mediation/ClasspathGrap
   3162                  hicsImagesText
   3163                o When gtk+ 2.6 or higher is installed the default log
   3164                  handler will produce stack traces whenever a WARNING,
   3165                  CRITICAL or ERROR message is produced.
   3166           + Free Swing
   3167                o The RepaintManager has been reworked for more efficient
   3168                  painting, especially for large GUIs.
   3169                o The layout manager OverlayLayout has been implemented,
   3170                  the BoxLayout has been rewritten to make use of the
   3171                  SizeRequirements utility class and caching for more
   3172                  efficient layout.
   3173                o Improved accessibility support.
   3174                o Significant progress has been made in the implementation
   3175                  of the javax.swing.plaf.metal package, with most UI
   3176                  delegates in a working state now. Please test this with
   3177                  your own applications and provide feedback that will help
   3178                  us to improve this package.
   3179                o The GUI demo (gnu.classpath.examples.swing.Demo) has been
   3180                  extended to highlight various features in our Free Swing
   3181                  implementation. And it includes a look and feel switcher
   3182                  for Metal (default), Ocean and GNU themes.
   3183                o The javax.swing.plaf.multi package is now implemented.
   3184                o Editing and several key actions for JTree and JTable were
   3185                  implemented.
   3186                o Lots of icons and look and feel improvements for Free
   3187                  Swing basic and metal themes were added. Try running the
   3188                  GNU Classpath Swing Demo in examples
   3189                  (gnu.classpath.examples.swing.Demo) with:
   3190                  -Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFee
   3191                  l or
   3192                  -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFee
   3193                  l
   3194                o Start of styled text capabilites for java.swing.text.
   3195                o DefaultMutableTreeNode pre-order, post-order, depth-first
   3196                  and breadth-first traversal enumerations implemented.
   3197                o JInternalFrame colors and titlebar draw properly.
   3198                o JTree is working up to par (icons, selection and keyboard
   3199                  traversal).
   3200                o JMenus were made more compatible in visual and
   3201                  programmatic behavior.
   3202                o JTable changeSelection and multiple selections
   3203                  implemented.
   3204                o JButton and JToggleButton change states work properly
   3205                  now.
   3206                o JFileChooser fixes.
   3207                o revalidate() and repaint() fixes which make Free Swing
   3208                  much more responsive.
   3209                o MetalIconFactory implemented.
   3210                o Free Swing Top-Level Compatibility. JFrame, JDialog,
   3211                  JApplet, JInternalFrame, and JWindow are now 1.5
   3212                  compatible in the sense that you can call add() and
   3213                  setLayout() directly on them, which will have the same
   3214                  effect as calling getContentPane().add() and
   3215                  getContentPane().setLayout().
   3216                o The JTree interface has been completed. JTrees now
   3217                  recognizes mouse clicks and selections work.
   3218                o BoxLayout works properly now.
   3219                o Fixed GrayFilter to actually work.
   3220                o Metal SplitPane implemented.
   3221                o Lots of Free Swing text and editor stuff work now.
   3222           + Free RMI and Corba
   3223                o Andrew Watson, Vice President and Technical Director of
   3224                  the Object Management Group, has officially assigned us
   3225                  20 bit Vendor Minor Code Id: 0x47430 ("GC") that will
   3226                  mark remote classpath-specific system exceptions.
   3227                  Obtaining the VMCID means that GNU Classpath now is a
   3228                  recogniseable type of node in a highly interoperable
   3229                  CORBA world.
   3230                o GNU Classpath now includes the first working draft to
   3231                  support the RMI over IIOP protocol. The current
   3232                  implementation is capable of remote invocations,
   3233                  transferring various Serializables and Externalizables
   3234                  via RMI-IIOP protocol. It can flatten graphs and, at
   3235                  least for the simple cases, is interoperable with 1.5
   3236                  JDKs.
   3237                o org.omg.PortableInterceptor and related functionality in
   3238                  other packages is now implemented:
   3239                     # The sever and client interceptors work as required
   3240                       since 1.4.
   3241                     # The IOR interceptor works as needed for 1.5.
   3242                o The org.omg.DynamicAny package is completed and passes
   3243                  the prepared tests.
   3244                o The Portable Object Adapter should now support the output
   3245                  of the recent IDL to java compilers. These compilers now
   3246                  generate servants and not CORBA objects as before, making
   3247                  the output depend on the existing POA implementation.
   3248                  Completing POA means that such code can already be tried
   3249                  to run on Classpath. Our POA is tested for the following
   3250                  usager scenarios:
   3251                     # POA converts servant to the CORBA object.
   3252                     # Servant provides to the CORBA object.
   3253                     # POA activates new CORBA object with the given Object
   3254                       Id (byte array) that is later accessible for the
   3255                       servant.
   3256                     # During the first call, the ServantActivator provides
   3257                       servant for this and all subsequent calls on the
   3258                       current object.
   3259                     # During each call, the ServantLocator provides
   3260                       servant for this call only.
   3261                     # ServantLocator or ServantActivator forwards call to
   3262                       another server.
   3263                     # POA has a single servant, responsible for all
   3264                       objects.
   3265                     # POA has a default servant, but some objects are
   3266                       explicitly connected to they specific servants.
   3267                  The POA is verified using tests from the former
   3268                  cost.omg.org.
   3269                o The CORBA implementation is now a working prototype that
   3270                  should support features up to 1.3 inclusive. We invite
   3271                  groups writing CORBA dependent applications to try
   3272                  Classpath implementation, reporting any possible bugs.
   3273                  The CORBA prototype is interoperable with Sun's
   3274                  implementation v 1.4, transferring object references,
   3275                  primitive types, narrow and wide strings, arrays,
   3276                  structures, trees, abstract interfaces and value types
   3277                  (feature of CORBA 2.3) between these two platforms.
   3278                  Remote exceptions are transferred and handled correctly.
   3279                  The stringified object references (IORs) from various
   3280                  sources are parsed as required. The transient (for
   3281                  current session) and permanent (till jre restart)
   3282                  redirections work. Both Little and Big Endian encoded
   3283                  messages are accepted. The implementation is verified
   3284                  using tests from the former cost.omg.org. The current
   3285                  release includes working examples (see the examples
   3286                  directory), demonstrating the client-server
   3287                  communication, using either CORBA Request or IDL-based
   3288                  stub (usually generated by a IDL to java compiler). These
   3289                  examples also show how to use the Classpath CORBA naming
   3290                  service. The IDL to java compiler is not yet written, but
   3291                  as our library must be compatible, it naturally accepts
   3292                  the output of other idlj implementations.
   3293           + Misc
   3294                o Updated TimeZone data against Olson tzdata2005l.
   3295                o Make zip and jar packages UTF-8 clean.
   3296                o "native" code builds and compiles (warning free) on
   3297                  Darwin and Solaris.
   3298                o java.util.logging.FileHandler now rotates files.
   3299                o Start of a generic JDWP framework in gnu/classpath/jdwp.
   3300                  This is unfinished, but feedback (at classpath (a] gnu.org)
   3301                  from runtime hackers is greatly appreciated. Although
   3302                  most of the work is currently being done around gcj/gij
   3303                  we want this framework to be as VM neutral as possible.
   3304                  Early design is described in:
   3305                  [3]http://gcc.gnu.org/ml/java/2005-05/msg00260.html
   3306                o QT4 AWT peers, enable by giving configure
   3307                  --enable-qt-peer. Included, but not ready for production
   3308                  yet. They are explicitly disabled and not supported. But
   3309                  if you want to help with the development of these new
   3310                  features we are interested in feedback. You will have to
   3311                  explicitly enable them to try them out (and they will
   3312                  most likely contain bugs).
   3313                o Documentation fixes all over the place. See
   3314                  [4]http://developer.classpath.org/doc/
   3315 
   3316 New Targets and Target Specific Improvements
   3317 
   3318   IA-32/x86-64
   3319 
   3320      * The x86-64 medium model (that allows building applications whose
   3321        data segment exceeds 4GB) was redesigned to match latest ABI draft.
   3322        New implementation split large datastructures into separate segment
   3323        improving performance of accesses to small datastructures and also
   3324        allows linking of small model libraries into medium model programs
   3325        as long as the libraries are not accessing the large datastructures
   3326        directly. Medium model is also supported in position independent
   3327        code now.
   3328        The ABI change results in partial incompatibility among medium
   3329        model objects. Linking medium model libraries (or objects) compiled
   3330        with new compiler into medium model program compiled with older
   3331        will likely result in exceeding ranges of relocations.
   3332        Binutils 2.16.91 or newer are required for compiling medium model
   3333        now.
   3334 
   3335   RS6000 (POWER/PowerPC)
   3336 
   3337      * The AltiVec vector primitives in <altivec.h> are now implemented in
   3338        a way that puts a smaller burden on the preprocessor, instead
   3339        processing the "overloading" in the front ends. This should benefit
   3340        compilation speed on AltiVec vector code.
   3341      * AltiVec initializers now are generated more efficiently.
   3342      * The popcountb instruction available on POWER5 now is generated.
   3343      * The floating point round to integer instructions available on
   3344        POWER5+ now is generated.
   3345      * Floating point divides can be synthesized using the floating point
   3346        reciprocal estimate instructions.
   3347      * Double precision floating point constants are initialized as single
   3348        precision values if they can be represented exactly.
   3349 
   3350   S/390, zSeries and System z9
   3351 
   3352      * Support for the IBM System z9 109 processor has been added. When
   3353        using the -march=z9-109 option, the compiler will generate code
   3354        making use of instructions provided by the extended immediate
   3355        facility.
   3356      * Support for 128-bit IEEE floating point has been added. When using
   3357        the -mlong-double-128 option, the compiler will map the long double
   3358        data type to 128-bit IEEE floating point. Using this option
   3359        constitutes an ABI change, and requires glibc support.
   3360      * Various changes to improve performance of generated code have been
   3361        implemented, including:
   3362           + In functions that do not require a literal pool, register %r13
   3363             (which is traditionally reserved as literal pool pointer), can
   3364             now be freely used for other purposes by the compiler.
   3365           + More precise tracking of register use allows the compiler to
   3366             generate more efficient function prolog and epilog code in
   3367             certain cases.
   3368           + The SEARCH STRING, COMPARE LOGICAL STRING, and MOVE STRING
   3369             instructions are now used to implement C string functions.
   3370           + The MOVE CHARACTER instruction with single byte overlap is now
   3371             used to implement the memset function with non-zero fill byte.
   3372           + The LOAD ZERO instructions are now used where appropriate.
   3373           + The INSERT CHARACTERS UNDER MASK, STORE CHARACTERS UNDER MASK,
   3374             and INSERT IMMEDIATE instructions are now used more frequently
   3375             to optimize bitfield operations.
   3376           + The BRANCH ON COUNT instruction is now used more frequently.
   3377             In particular, the fact that a loop contains a subroutine call
   3378             no longer prevents the compiler from using this instruction.
   3379           + The compiler is now aware that all shift and rotate
   3380             instructions implicitly truncate the shift count to six bits.
   3381      * Back-end support for the following generic features has been
   3382        implemented:
   3383           + The full set of [5]built-in functions for atomic memory
   3384             access.
   3385           + The -fstack-protector feature.
   3386           + The optimization pass avoiding unnecessary stores of incoming
   3387             argument registers in functions with variable argument list.
   3388 
   3389   SPARC
   3390 
   3391      * The default code model in 64-bit mode has been changed from
   3392        Medium/Anywhere to Medium/Middle on Solaris.
   3393      * TLS support is disabled by default on Solaris prior to release 10.
   3394        It can be enabled on TLS-capable Solaris 9 versions (4/04 release
   3395        and later) by specifying --enable-tls at configure time.
   3396 
   3397   MorphoSys
   3398 
   3399      * Support has been added for this new architecture.
   3400 
   3401 Obsolete Systems
   3402 
   3403 Documentation improvements
   3404 
   3405 Other significant improvements
   3406 
   3407      * GCC can now emit code for protecting applications from
   3408        stack-smashing attacks. The protection is realized by buffer
   3409        overflow detection and reordering of stack variables to avoid
   3410        pointer corruption.
   3411      * Some built-in functions have been fortified to protect them against
   3412        various buffer overflow (and format string) vulnerabilities.
   3413        Compared to the mudflap bounds checking feature, the safe builtins
   3414        have far smaller overhead. This means that programs built using
   3415        safe builtins should not experience any measurable slowdown.
   3416 
   3417 GCC 4.1.2
   3418 
   3419    This is the [6]list of problem reports (PRs) from GCC's bug tracking
   3420    system that are known to be fixed in the 4.1.2 release. This list might
   3421    not be complete (that is, it is possible that some PRs that have been
   3422    fixed are not listed here).
   3423 
   3424    When generating code for a shared library, GCC now recognizes that
   3425    global functions may be replaced when the program runs. Therefore, it
   3426    is now more conservative in deducing information from the bodies of
   3427    functions. For example, in this example:
   3428     void f() {}
   3429     void g() {
   3430      try { f(); }
   3431      catch (...) {
   3432        cout << "Exception";
   3433      }
   3434     }
   3435 
   3436    G++ would previously have optimized away the catch clause, since it
   3437    would have concluded that f cannot throw exceptions. Because users may
   3438    replace f with another function in the main body of the program, this
   3439    optimization is unsafe, and is no longer performed. If you wish G++ to
   3440    continue to optimize as before, you must add a throw() clause to the
   3441    declaration of f to make clear that it does not throw exceptions.
   3442 
   3443 
   3444     For questions related to the use of GCC, please consult these web
   3445     pages and the [7]GCC manuals. If that fails, the
   3446     [8]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   3447     web pages and the development of GCC are welcome on our developer
   3448     list at [9]gcc (a] gcc.gnu.org. All of [10]our lists have public
   3449     archives.
   3450 
   3451    Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and
   3452    distribution of this entire article is permitted in any medium,
   3453    provided this notice is preserved.
   3454 
   3455    These pages are [12]maintained by the GCC team. Last modified
   3456    2011-04-25[13].
   3457 
   3458 References
   3459 
   3460    1. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
   3461    2. http://developer.classpath.org/mediation/ClasspathGraphicsImagesText
   3462    3. http://gcc.gnu.org/ml/java/2005-05/msg00260.html
   3463    4. http://developer.classpath.org/doc/
   3464    5. http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
   3465    6. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2
   3466    7. http://gcc.gnu.org/onlinedocs/
   3467    8. mailto:gcc-help (a] gcc.gnu.org
   3468    9. mailto:gcc (a] gcc.gnu.org
   3469   10. http://gcc.gnu.org/lists.html
   3470   11. http://www.fsf.org/
   3471   12. http://gcc.gnu.org/about.html
   3472   13. http://validator.w3.org/check/referer
   3473 ======================================================================
   3474 http://gcc.gnu.org/gcc-4.0/index.html
   3475 
   3476                              GCC 4.0 Release Series
   3477 
   3478    January 31, 2007
   3479 
   3480    The [1]GNU project and the GCC developers are pleased to announce the
   3481    release of GCC 4.0.4.
   3482 
   3483    This release is a bug-fix release, containing fixes for regressions in
   3484    GCC 4.0.3 relative to previous releases of GCC.
   3485 
   3486 Release History
   3487 
   3488    GCC 4.0.4
   3489           January 31, 2007 ([2]changes)
   3490 
   3491    GCC 4.0.3
   3492           March 10, 2006 ([3]changes)
   3493 
   3494    GCC 4.0.2
   3495           September 28, 2005 ([4]changes)
   3496 
   3497    GCC 4.0.1
   3498           July 7, 2005 ([5]changes)
   3499 
   3500    GCC 4.0.0
   3501           April 20, 2005 ([6]changes)
   3502 
   3503 References and Acknowledgements
   3504 
   3505    GCC used to stand for the GNU C Compiler, but since the compiler
   3506    supports several other languages aside from C, it now stands for the
   3507    GNU Compiler Collection.
   3508 
   3509    A list of [7]successful builds is updated as new information becomes
   3510    available.
   3511 
   3512    The GCC developers would like to thank the numerous people that have
   3513    contributed new features, improvements, bug fixes, and other changes as
   3514    well as test results to GCC. This [8]amazing group of volunteers is
   3515    what makes GCC successful.
   3516 
   3517    For additional information about GCC please refer to the [9]GCC project
   3518    web site or contact the [10]GCC development mailing list.
   3519 
   3520    To obtain GCC please use [11]our mirror sites, or [12]our SVN server.
   3521 
   3522 
   3523     For questions related to the use of GCC, please consult these web
   3524     pages and the [13]GCC manuals. If that fails, the
   3525     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   3526     web pages and the development of GCC are welcome on our developer
   3527     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
   3528     archives.
   3529 
   3530    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
   3531    distribution of this entire article is permitted in any medium,
   3532    provided this notice is preserved.
   3533 
   3534    These pages are [18]maintained by the GCC team. Last modified
   3535    2011-04-25[19].
   3536 
   3537 References
   3538 
   3539    1. http://www.gnu.org/
   3540    2. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
   3541    3. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.3
   3542    4. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.2
   3543    5. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.1
   3544    6. http://gcc.gnu.org/gcc-4.0/changes.html
   3545    7. http://gcc.gnu.org/gcc-4.0/buildstat.html
   3546    8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   3547    9. http://gcc.gnu.org/index.html
   3548   10. mailto:gcc (a] gcc.gnu.org
   3549   11. http://gcc.gnu.org/mirrors.html
   3550   12. http://gcc.gnu.org/svn.html
   3551   13. http://gcc.gnu.org/onlinedocs/
   3552   14. mailto:gcc-help (a] gcc.gnu.org
   3553   15. mailto:gcc (a] gcc.gnu.org
   3554   16. http://gcc.gnu.org/lists.html
   3555   17. http://www.fsf.org/
   3556   18. http://gcc.gnu.org/about.html
   3557   19. http://validator.w3.org/check/referer
   3558 ======================================================================
   3559 http://gcc.gnu.org/gcc-4.0/changes.html
   3560 
   3561                              GCC 4.0 Release Series
   3562                         Changes, New Features, and Fixes
   3563 
   3564    The latest release in the 4.0 release series is [1]GCC 4.0.4.
   3565 
   3566 Caveats
   3567 
   3568      * GCC now generates location lists by default when compiling with
   3569        debug info and optimization.
   3570           + GDB 6.0 and older crashes when it sees location lists. GDB 6.1
   3571             or later is needed to debug binaries containing location
   3572             lists.
   3573           + When you are trying to view a value of a variable in a part of
   3574             a function where it has no location (for example when the
   3575             variable is no longer used and thus its location was used for
   3576             something else) GDB will say that it is not available.
   3577        You can disable generating location lists by -fno-var-tracking.
   3578      * GCC no longer accepts the -fwritable-strings option. Use named
   3579        character arrays when you need a writable string.
   3580      * The options -freduce-all-givs and -fmove-all-movables have been
   3581        discontinued. They were used to circumvent a shortcoming in the
   3582        heuristics of the old loop optimization code with respect to common
   3583        Fortran constructs. The new (tree) loop optimizer works differently
   3584        and doesn't need those work-arounds.
   3585      * The graph-coloring register allocator, formerly enabled by the
   3586        option -fnew-ra, has been discontinued.
   3587      * -I- has been deprecated. -iquote is meant to replace the need for
   3588        this option.
   3589      * The MIPS -membedded-pic and -mrnames options have been removed.
   3590      * All MIPS targets now require the GNU assembler. In particular, IRIX
   3591        configurations can no longer use the MIPSpro assemblers, although
   3592        they do still support the MIPSpro linkers.
   3593      * The SPARC option -mflat has been removed.
   3594      * English-language diagnostic messages will now use Unicode quotation
   3595        marks in UTF-8 locales. (Non-English messages already used the
   3596        quotes appropriate for the language in previous releases.) If your
   3597        terminal does not support UTF-8 but you are using a UTF-8 locale
   3598        (such locales are the default on many GNU/Linux systems) then you
   3599        should set LC_CTYPE=C in the environment to disable that locale.
   3600        Programs that parse diagnostics and expect plain ASCII
   3601        English-language messages should set LC_ALL=C. See [2]Markus Kuhn's
   3602        explanation of Unicode quotation marks for more information.
   3603      * The specs file is no longer installed on most platforms. Most users
   3604        will be totally unaffected. However, if you are accustomed to
   3605        editing the specs file yourself, you will now have to use the
   3606        -dumpspecs option to generate the specs file, and then edit the
   3607        resulting file.
   3608 
   3609 General Optimizer Improvements
   3610 
   3611      * The [3]tree ssa branch has been merged. This merge has brought in a
   3612        completely new optimization framework based on a higher level
   3613        intermediate representation than the existing RTL representation.
   3614        Numerous new code transformations based on the new framework are
   3615        available in GCC 4.0, including:
   3616           + Scalar replacement of aggregates
   3617           + Constant propagation
   3618           + Value range propagation
   3619           + Partial redundancy elimination
   3620           + Load and store motion
   3621           + Strength reduction
   3622           + Dead store elimination
   3623           + Dead and unreachable code elimination
   3624           + [4]Autovectorization
   3625           + Loop interchange
   3626           + Tail recursion by accumulation
   3627        Many of these passes outperform their counterparts from previous
   3628        GCC releases.
   3629      * [5]Swing Modulo Scheduling (SMS). An RTL level instruction
   3630        scheduling optimization intended for loops that perform heavy
   3631        computations.
   3632 
   3633 New Languages and Language specific improvements
   3634 
   3635   C family
   3636 
   3637      * The sentinel attribute has been added to GCC. This function
   3638        attribute allows GCC to warn when variadic functions such as execl
   3639        are not NULL terminated. See the GCC manual for a complete
   3640        description of its behavior.
   3641      * Given __attribute__((alias("target"))) it is now an error if target
   3642        is not a symbol, defined in the same translation unit. This also
   3643        applies to aliases created by #pragma weak alias=target. This is
   3644        because it's meaningless to define an alias to an undefined symbol.
   3645        On Solaris, the native assembler would have caught this error, but
   3646        GNU as does not.
   3647 
   3648   C and Objective-C
   3649 
   3650      * The -Wstrict-aliasing=2 option has been added. This warning catches
   3651        all unsafe cases, but it may also give a warning for some cases
   3652        that are safe.
   3653      * The cast-as-lvalue, conditional-expression-as-lvalue and
   3654        compound-expression-as-lvalue extensions, which were deprecated in
   3655        3.3.4 and 3.4, have been removed.
   3656      * The -fwritable-strings option, which was deprecated in 3.4, has
   3657        been removed.
   3658      * #pragma pack() semantics have been brought closer to those used by
   3659        other compilers. This also applies to C++.
   3660      * Taking the address of a variable with register storage is invalid
   3661        in C. GCC now issues an error instead of a warning.
   3662      * Arrays of incomplete element type are invalid in C. GCC now issues
   3663        an error for such arrays. Declarations such as extern struct s x[];
   3664        (where struct s has not been defined) can be moved after the
   3665        definition of struct s. Function parameters declared as arrays of
   3666        incomplete type can instead be declared as pointers.
   3667 
   3668   C++
   3669 
   3670      * When compiling without optimizations (-O0), the C++ frontend is
   3671        much faster than in any previous versions of GCC. Independent
   3672        testers have measured speed-ups up to 25% in real-world production
   3673        code, compared to the 3.4 family (which was already the fastest
   3674        version to date). Upgrading from older versions might show even
   3675        bigger improvements.
   3676      * ELF visibility attributes can now be applied to a class type, so
   3677        that it affects every member function of a class at once, without
   3678        having to specify each individually:
   3679 class __attribute__ ((visibility("hidden"))) Foo
   3680 {
   3681    int foo1();
   3682    void foo2();
   3683 };
   3684        The syntax is deliberately similar to the __declspec() system used
   3685        by Microsoft Windows based compilers, allowing cross-platform
   3686        projects to easily reuse their existing macro system for denoting
   3687        exports and imports. By explicitly marking internal classes never
   3688        used outside a binary as hidden, one can completely avoid PLT
   3689        indirection overheads during their usage by the compiler. You can
   3690        find out more about the advantages of this at
   3691        [6]http://www.akkadia.org/drepper/dsohowto.pdf
   3692      * The -fvisibility-inlines-hidden option has been added which marks
   3693        all inlineable functions as having hidden ELF visibility, thus
   3694        removing their symbol and typeinfo from the exported symbol table
   3695        of the output ELF binary. Using this option can reduce the exported
   3696        symbol count of template-heavy code by up to 40% with no code
   3697        change at all, thus notably improving link and load times for the
   3698        binary as well as a reduction in size of up to 10%. Also, check the
   3699        new [7]-fvisibility option.
   3700      * The compiler now uses the library interface specified by the [8]C++
   3701        ABI for thread-safe initialization of function-scope static
   3702        variables. Most users should leave this alone, but embedded
   3703        programmers may want to disable this by specifying
   3704        -fno-threadsafe-statics for a small savings in code size.
   3705      * Taking the address of an explicit register variable is no longer
   3706        supported. Note that C++ allows taking the address of variables
   3707        with register storage so this will continue to compile with a
   3708        warning. For example, assuming that r0 is a machine register:
   3709 register int foo asm ("r0");
   3710 register int bar;
   3711 &foo; // error, no longer accepted
   3712 &bar; // OK, with a warning
   3713      * G++ has an undocumented extension to virtual function covariancy
   3714        rules that allowed the overrider to return a type that was
   3715        implicitly convertable to the overridden function's return type.
   3716        For instance a function returning void * could be overridden by a
   3717        function returning T *. This is now deprecated and will be removed
   3718        in a future release.
   3719      * The G++ minimum and maximum operators (<? and >?) and their
   3720        compound forms (<?=) and >?=) have been deprecated and will be
   3721        removed in a future version. Code using these operators should be
   3722        modified to use std::min and std::max instead.
   3723      * Declaration of nested classes of class templates as friends are
   3724        supported:
   3725 template <typename T> struct A {
   3726   class B {};
   3727 };
   3728 class C {
   3729   template <typename T> friend class A<T>::B;
   3730 };
   3731        This complements the feature member functions of class templates as
   3732        friends introduced in GCC 3.4.0.
   3733      * When declaring a friend class using an unqualified name, classes
   3734        outside the innermost non-class scope are not searched:
   3735 class A;
   3736 namespace N {
   3737   class B {
   3738     friend class A;   // Refer to N::A which has not been declared yet
   3739                       // because name outside namespace N are not searched
   3740     friend class ::A; // Refer to ::A
   3741   };
   3742 }
   3743        Hiding the friend name until declaration is still not implemented.
   3744      * Friends of classes defined outside their namespace are correctly
   3745        handled:
   3746 namespace N {
   3747   class A;
   3748 }
   3749 class N::A {
   3750   friend class B; // Refer to N::B in GCC 4.0.0
   3751                   // but ::B in earlier versions of GCC
   3752 };
   3753 
   3754     Runtime Library (libstdc++)
   3755 
   3756      * Optimization work:
   3757           + Added efficient specializations of istream functions for char
   3758             and wchar_t.
   3759           + Further performance tuning of strings, in particular wrt
   3760             single-char append and getline.
   3761           + iter_swap - and therefore most of the mutating algorithms -
   3762             now makes an unqualified call to swap when the value_type of
   3763             the two iterators is the same.
   3764      * A large subset of the features in Technical Report 1 (TR1 for
   3765        short) is experimentally delivered (i.e., no guarantees about the
   3766        implementation are provided. In particular it is not promised that
   3767        the library will remain link-compatible when code using TR1 is
   3768        used):
   3769           + General utilities such as reference_wrapper and shared_ptr.
   3770           + Function objects, i.e., result_of, mem_fn, bind, function.
   3771           + Support for metaprogramming.
   3772           + New containers such as tuple, array, unordered_set,
   3773             unordered_map, unordered_multiset, unordered_multimap.
   3774      * As usual, many bugs have been fixed and LWG resolutions implemented
   3775        for the first time (e.g., DR 409).
   3776 
   3777   Java
   3778 
   3779      * In order to prevent naming conflicts with other implementations of
   3780        these tools, some GCJ binaries have been renamed:
   3781           + rmic is now grmic,
   3782           + rmiregistry is now grmiregistry, and
   3783           + jar is now fastjar.
   3784        In particular, these names were problematic for the jpackage.org
   3785        packaging conventions which install symlinks in /usr/bin that point
   3786        to the preferred versions of these tools.
   3787      * The -findirect-dispatch argument to the compiler now works and
   3788        generates code following a new "binary compatibility" ABI. Code
   3789        compiled this way follows the binary compatibility rules of the
   3790        Java Language Specification.
   3791      * libgcj now has support for using GCJ as a JIT, using the
   3792        gnu.gcj.jit family of system properties.
   3793      * libgcj can now find a shared library corresponding to the bytecode
   3794        representation of a class. See the documentation for the new
   3795        gcj-dbtool program, and the new gnu.gcj.precompiled.db.path system
   3796        property.
   3797      * There have been many improvements to the class library. Here are
   3798        some highlights:
   3799           + Much more of AWT and Swing exist.
   3800           + Many new packages and classes were added, including
   3801             java.util.regex, java.net.URI, javax.crypto,
   3802             javax.crypto.interfaces, javax.crypto.spec, javax.net,
   3803             javax.net.ssl, javax.security.auth,
   3804             javax.security.auth.callback, javax.security.auth.login,
   3805             javax.security.auth.x500, javax.security.sasl, org.ietf.jgss,
   3806             javax.imageio, javax.imageio.event, javax.imageio.spi,
   3807             javax.print, javax.print.attribute,
   3808             javax.print.attribute.standard, javax.print.event, and
   3809             javax.xml
   3810           + Updated SAX and DOM, and imported GNU JAXP
   3811 
   3812   Fortran
   3813 
   3814      * A new [9]Fortran front end has replaced the aging GNU Fortran 77
   3815        front end. The new front end supports Fortran 90 and Fortran 95. It
   3816        may not yet be as stable as the old Fortran front end.
   3817 
   3818   Ada
   3819 
   3820      * Ada (with tasking and Zero Cost Exceptions) is now available on
   3821        many more targets, including but not limited to: alpha-linux,
   3822        hppa-hpux, hppa-linux, powerpc-darwin, powerpc-linux, s390-linux,
   3823        s390x-linux, sparc-linux.
   3824      * Some of the new Ada 2005 features are now implemented like
   3825        Wide_Wide_Character and Ada.Containers.
   3826      * Many bugs have been fixed, tools and documentation improved.
   3827      * To compile Ada from the sources, install an older working Ada
   3828        compiler and then use --enable-languages=ada at configuration time,
   3829        since the Ada frontend is not currently activated by default. See
   3830        the [10]Installing GCC for details.
   3831 
   3832 New Targets and Target Specific Improvements
   3833 
   3834   H8/300
   3835 
   3836      * The frame layout has changed. In the new layout, the prologue of a
   3837        function first saves registers and then allocate space for locals,
   3838        resulting in an 1% improvement on code size.
   3839 
   3840   IA-32/x86-64 (AMD64)
   3841 
   3842      * The acos, asin, drem, exp10, exp2, expm1, fmod, ilogb, log10,
   3843        log1p, log2, logb and tan mathematical builtins (and their float
   3844        and long double variants) are now implemented as inline x87
   3845        intrinsics when using -ffast-math.
   3846      * The ceil, floor, nearbyint, rint and trunc mathematical builtins
   3847        (and their float and long double variants) are now implemented as
   3848        inline x87 intrinsics when using -ffast-math.
   3849      * The x87's fsincos instruction is now used automatically with
   3850        -ffast-math when calculating both the sin and cos of the same
   3851        argument.
   3852      * Instruction selection for multiplication and division by constants
   3853        has been improved.
   3854 
   3855   IA-64
   3856 
   3857      * Floating point division, integer division and sqrt are now inlined,
   3858        resulting in significant performance improvements on some codes.
   3859 
   3860   MIPS
   3861 
   3862      * Division by zero checks now use conditional traps if the target
   3863        processor supports them. This decreases code size by one word per
   3864        division operation. The old behavior (branch and break) can be
   3865        obtained either at configure time by passing --with-divide=breaks
   3866        to configure or at runtime by passing -mdivide-breaks to GCC.
   3867      * Support for MIPS64 paired-single instructions has been added. It is
   3868        enabled by -mpaired-single and can be accessed using both the
   3869        target-independent vector extensions and new MIPS-specific built-in
   3870        functions.
   3871      * Support for the MIPS-3D ASE has been added. It is enabled by
   3872        -mips3d and provides new MIPS-3D-specific built-in functions.
   3873      * The -mexplicit-relocs option now supports static n64 code (as is
   3874        used, for example, in 64-bit linux kernels). -mexplicit-relocs
   3875        should now be feature-complete and is enabled by default when GCC
   3876        is configured to use a compatible assembler.
   3877      * Support for the NEC VR4130 series has been added. This support
   3878        includes the use of VR-specific instructions and a new VR4130
   3879        scheduler. Full VR4130 support can be selected with -march=vr4130
   3880        while code for any ISA can be tuned for the VR4130 using
   3881        -mtune=vr4130. There is also a new -mvr4130-align option that
   3882        produces better schedules at the cost of increased code size.
   3883      * Support for the Broadcom SB-1 has been extended. There is now an
   3884        SB-1 scheduler as well as support for the SB-1-specific
   3885        paired-single instructions. Full SB-1 support can be selected with
   3886        -march=sb1 while code for any ISA can be optimized for the SB-1
   3887        using -mtune=sb1.
   3888      * The compiler can now work around errata in R4000, R4400, VR4120 and
   3889        VR4130 processors. These workarounds are enabled by -mfix-r4000,
   3890        -mfix-r4400, -mfix-vr4120 and -mfix-vr4130 respectively. The VR4120
   3891        and VR4130 workarounds need binutils 2.16 or above.
   3892      * IRIX shared libraries are now installed into the standard library
   3893        directories: o32 libraries go into lib/, n32 libraries go into
   3894        lib32/ and n64 libraries go into lib64/.
   3895      * The compiler supports a new -msym32 option. It can be used to
   3896        optimize n64 code in which all symbols are known to have 32-bit
   3897        values.
   3898 
   3899   S/390 and zSeries
   3900 
   3901      * New command-line options help to generate code intended to run in
   3902        an environment where stack space is restricted, e.g. Linux kernel
   3903        code:
   3904           + -mwarn-framesize and -mwarn-dynamicstack trigger compile-time
   3905             warnings for single functions that require large or dynamic
   3906             stack frames.
   3907           + -mstack-size and -mstack-guard generate code that checks for
   3908             stack overflow at run time.
   3909           + -mpacked-stack generates code that reduces the stack frame
   3910             size of many functions by reusing unneeded parts of the stack
   3911             bias area.
   3912      * The -msoft-float option now ensures that generated code never
   3913        accesses floating point registers.
   3914      * The s390x-ibm-tpf target now fully supports C++, including
   3915        exceptions and threads.
   3916      * Various changes to improve performance of the generated code have
   3917        been implemented, including:
   3918           + GCC now uses sibling calls where possible.
   3919           + Condition code handling has been optimized, allowing GCC to
   3920             omit redundant comparisons in certain cases.
   3921           + The cost function guiding many optimizations has been refined
   3922             to more accurately represent the z900 and z990 processors.
   3923           + The ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL WITH BORROW
   3924             instructions are now used to avoid conditional branches in
   3925             certain cases.
   3926           + The back end now uses the LEGITIMIZE_RELOAD_ADDRESS feature to
   3927             optimize address arithmetic required to access large stack
   3928             frames.
   3929           + GCC now makes more efficient use of memory-to-memory type
   3930             instructions (MVC, CLC, ...).
   3931           + More precise tracking of special register use allows better
   3932             instruction scheduling, in particular of the function prologue
   3933             and epilogue sequences.
   3934           + The Java front end now generates inline code to implement
   3935             integer division, instead of calling library routines.
   3936 
   3937   SPARC
   3938 
   3939      * The options -mv8, -msparclite, -mcypress, -msupersparc, -mf930 and
   3940        -mf934 have been removed. They have been replaced with -mcpu=xxx.
   3941      * The internal model used to estimate the relative cost of each
   3942        instruction has been updated. It is expected to give better results
   3943        on recent UltraSPARC processors.
   3944      * Code generation for function prologues and epilogues has been
   3945        improved, resulting in better scheduling and allowing multiple exit
   3946        points in functions.
   3947      * Support for Sun's Visual Instruction Set (VIS) has been enhanced.
   3948        It is enabled by -mvis and provides new built-in functions for VIS
   3949        instructions on UltraSPARC processors.
   3950      * The option -mapp-regs has been turned on by default on Solaris too.
   3951 
   3952   NetWare
   3953 
   3954      * Novell NetWare (on ix86, no other hardware platform was ever really
   3955        supported by this OS) has been re-enabled and the ABI supported by
   3956        GCC has been brought into sync with that of MetroWerks CodeWarrior
   3957        (the ABI previously supported was that of some Unix systems, which
   3958        NetWare never tried to support).
   3959 
   3960 Obsolete Systems
   3961 
   3962    Support for a number of older systems has been declared obsolete in GCC
   3963    4.0. Unless there is activity to revive them, the next release of GCC
   3964    will have their sources permanently removed.
   3965 
   3966    All GCC ports for the following processor architectures have been
   3967    declared obsolete:
   3968      * Intel i860
   3969      * Ubicom IP2022
   3970      * National Semiconductor NS32K
   3971      * Texas Instruments TMS320C[34]x
   3972 
   3973    Also, those for some individual systems have been obsoleted:
   3974      * SPARC family
   3975           + SPARClite-based systems (sparclite-*-coff, sparclite-*-elf,
   3976             sparc86x-*-elf)
   3977           + OpenBSD 32-bit (sparc-*-openbsd*)
   3978 
   3979 Documentation improvements
   3980 
   3981 Other significant improvements
   3982 
   3983      * Location lists are now generated by default when compiling with
   3984        debug info and optimization. Location lists provide more accurate
   3985        debug info about locations of variables and they allow debugging
   3986        code compiled with -fomit-frame-pointer.
   3987      * The -fvisibility option has been added which allows the default ELF
   3988        visibility of all symbols to be set per compilation and the new
   3989        #pragma GCC visibility preprocessor command allows the setting of
   3990        default ELF visibility for a region of code. Using
   3991        -fvisibility=hidden especially in combination with the new
   3992        -fvisibility-inlines-hidden can yield substantial improvements in
   3993        output binary quality including avoiding PLT indirection overheads,
   3994        reduction of the exported symbol count by up to 60% (with resultant
   3995        improvements to link and load times), better scope for the
   3996        optimizer to improve code and up to a 20% reduction in binary size.
   3997        Using these options correctly yields a binary with a similar symbol
   3998        count to a Windows DLL.
   3999        Perhaps more importantly, this new feature finally allows (with
   4000        careful planning) complete avoidance of symbol clashes when
   4001        manually loading shared objects with RTLD_GLOBAL, thus finally
   4002        solving problems many projects such as python were forced to use
   4003        RTLD_LOCAL for (with its resulting issues for C++ correctness). You
   4004        can find more information about using these options at
   4005        [11]http://gcc.gnu.org/wiki/Visibility.
   4006      __________________________________________________________________
   4007 
   4008 GCC 4.0.1
   4009 
   4010    This is the [12]list of problem reports (PRs) from GCC's bug tracking
   4011    system that are known to be fixed in the 4.0.1 release. This list might
   4012    not be complete (that is, it is possible that some PRs that have been
   4013    fixed are not listed here).
   4014 
   4015 GCC 4.0.2
   4016 
   4017    This is the [13]list of problem reports (PRs) from GCC's bug tracking
   4018    system that are known to be fixed in the 4.0.2 release. This list might
   4019    not be complete (that is, it is possible that some PRs that have been
   4020    fixed are not listed here).
   4021 
   4022    Unfortunately, due to a release engineering failure, this release has a
   4023    regression on Solaris that will affect some C++ programs. We suggest
   4024    that Solaris users apply a [14]patch that corrects the problem. Users
   4025    who do not wish to apply the patch should explicitly link C++ programs
   4026    with the -pthreads option, even if they do not use threads. This
   4027    problem has been corrected in the current 4.0 branch sources and will
   4028    not be present in GCC 4.0.3.
   4029 
   4030 GCC 4.0.3
   4031 
   4032    Starting with this release, the function getcontext is recognized by
   4033    the compiler as having the same semantics as the setjmp function. In
   4034    particular, the compiler will ensure that all registers are dead before
   4035    calling such a function and will emit a warning about the variables
   4036    that may be clobbered after the second return from the function.
   4037 
   4038 GCC 4.0.4
   4039 
   4040    This is the [15]list of problem reports (PRs) from GCC's bug tracking
   4041    system that are known to be fixed in the 4.0.4 release. This list might
   4042    not be complete (that is, it is possible that some PRs that have been
   4043    fixed are not listed here).
   4044 
   4045    The 4.0.4 release is provided for those that require a high degree of
   4046    binary compatibility with previous 4.0.x releases. For most users, the
   4047    GCC team recommends that version 4.1.1 or later be used instead."
   4048 
   4049 
   4050     For questions related to the use of GCC, please consult these web
   4051     pages and the [16]GCC manuals. If that fails, the
   4052     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   4053     web pages and the development of GCC are welcome on our developer
   4054     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
   4055     archives.
   4056 
   4057    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
   4058    distribution of this entire article is permitted in any medium,
   4059    provided this notice is preserved.
   4060 
   4061    These pages are [21]maintained by the GCC team. Last modified
   4062    2012-02-20[22].
   4063 
   4064 References
   4065 
   4066    1. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
   4067    2. http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
   4068    3. http://gcc.gnu.org/projects/tree-ssa/
   4069    4. http://gcc.gnu.org/projects/tree-ssa/vectorization.html
   4070    5. http://gcc.gnu.org/news/sms.html
   4071    6. http://www.akkadia.org/drepper/dsohowto.pdf
   4072    7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility
   4073    8. http://sourcery.mentor.com/public/cxx-abi/
   4074    9. http://gcc.gnu.org/fortran/
   4075   10. http://gcc.gnu.org/install/
   4076   11. http://gcc.gnu.org/wiki/Visibility
   4077   12. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.1
   4078   13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.2
   4079   14. http://gcc.gnu.org/ml/gcc-cvs/2005-09/msg00984.html
   4080   15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.4
   4081   16. http://gcc.gnu.org/onlinedocs/
   4082   17. mailto:gcc-help (a] gcc.gnu.org
   4083   18. mailto:gcc (a] gcc.gnu.org
   4084   19. http://gcc.gnu.org/lists.html
   4085   20. http://www.fsf.org/
   4086   21. http://gcc.gnu.org/about.html
   4087   22. http://validator.w3.org/check/referer
   4088 ======================================================================
   4089 http://gcc.gnu.org/gcc-3.4/index.html
   4090 
   4091                              GCC 3.4 Release Series
   4092 
   4093    May 26, 2006
   4094 
   4095    The [1]GNU project and the GCC developers are pleased to announce the
   4096    release of GCC 3.4.6.
   4097 
   4098    This release is a bug-fix release, containing fixes for regressions in
   4099    GCC 3.4.4 relative to previous releases of GCC. This is the last of the
   4100    3.4.x series.
   4101 
   4102    The GCC 3.4 release series includes numerous [2]new features,
   4103    improvements, bug fixes, and other changes, thanks to an [3]amazing
   4104    group of volunteers.
   4105 
   4106 Release History
   4107 
   4108    GCC 3.4.6
   4109           March 6, 2006 ([4]changes)
   4110 
   4111    GCC 3.4.5
   4112           November 30, 2005 ([5]changes)
   4113 
   4114    GCC 3.4.4
   4115           May 18, 2005 ([6]changes)
   4116 
   4117    GCC 3.4.3
   4118           November 4, 2004 ([7]changes)
   4119 
   4120    GCC 3.4.2
   4121           September 6, 2004 ([8]changes)
   4122 
   4123    GCC 3.4.1
   4124           July 1, 2004 ([9]changes)
   4125 
   4126    GCC 3.4.0
   4127           April 18, 2004 ([10]changes)
   4128 
   4129 References and Acknowledgements
   4130 
   4131    GCC used to stand for the GNU C Compiler, but since the compiler
   4132    supports several other languages aside from C, it now stands for the
   4133    GNU Compiler Collection.
   4134 
   4135    A list of [11]successful builds is updated as new information becomes
   4136    available.
   4137 
   4138    The GCC developers would like to thank the numerous people that have
   4139    contributed new features, improvements, bug fixes, and other changes as
   4140    well as test results to GCC. This [12]amazing group of volunteers is
   4141    what makes GCC successful.
   4142 
   4143    For additional information about GCC please refer to the [13]GCC
   4144    project web site or contact the [14]GCC development mailing list.
   4145 
   4146    To obtain GCC please use [15]our mirror sites, or [16]our SVN server.
   4147 
   4148 
   4149     For questions related to the use of GCC, please consult these web
   4150     pages and the [17]GCC manuals. If that fails, the
   4151     [18]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   4152     web pages and the development of GCC are welcome on our developer
   4153     list at [19]gcc (a] gcc.gnu.org. All of [20]our lists have public
   4154     archives.
   4155 
   4156    Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
   4157    distribution of this entire article is permitted in any medium,
   4158    provided this notice is preserved.
   4159 
   4160    These pages are [22]maintained by the GCC team. Last modified
   4161    2011-04-25[23].
   4162 
   4163 References
   4164 
   4165    1. http://www.gnu.org/
   4166    2. http://gcc.gnu.org/gcc-3.4/changes.html
   4167    3. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   4168    4. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
   4169    5. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.5
   4170    6. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.4
   4171    7. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.3
   4172    8. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.2
   4173    9. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.1
   4174   10. http://gcc.gnu.org/gcc-3.4/changes.html
   4175   11. http://gcc.gnu.org/gcc-3.4/buildstat.html
   4176   12. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   4177   13. http://gcc.gnu.org/index.html
   4178   14. mailto:gcc (a] gcc.gnu.org
   4179   15. http://gcc.gnu.org/mirrors.html
   4180   16. http://gcc.gnu.org/svn.html
   4181   17. http://gcc.gnu.org/onlinedocs/
   4182   18. mailto:gcc-help (a] gcc.gnu.org
   4183   19. mailto:gcc (a] gcc.gnu.org
   4184   20. http://gcc.gnu.org/lists.html
   4185   21. http://www.fsf.org/
   4186   22. http://gcc.gnu.org/about.html
   4187   23. http://validator.w3.org/check/referer
   4188 ======================================================================
   4189 http://gcc.gnu.org/gcc-3.4/changes.html
   4190 
   4191                              GCC 3.4 Release Series
   4192                         Changes, New Features, and Fixes
   4193 
   4194    The final release in the 3.4 release series is [1]GCC 3.4.6. The series
   4195    is now closed.
   4196 
   4197    GCC 3.4 has [2]many improvements in the C++ frontend. Before reporting
   4198    a bug, please make sure it's really GCC, and not your code, that is
   4199    broken.
   4200 
   4201 Caveats
   4202 
   4203      * GNU Make is now required to build GCC.
   4204      * With -nostdinc the preprocessor used to ignore both standard
   4205        include paths and include paths contained in environment variables.
   4206        It was neither documented nor intended that environment variable
   4207        paths be ignored, so this has been corrected.
   4208      * GCC no longer accepts the options -fvolatile, -fvolatile-global and
   4209        -fvolatile-static. It is unlikely that they worked correctly in any
   4210        3.x release.
   4211      * GCC no longer ships <varargs.h>. Use <stdarg.h> instead.
   4212      * Support for all the systems [3]obsoleted in GCC 3.3 has been
   4213        removed from GCC 3.4. See below for a [4]list of systems which are
   4214        obsoleted in this release.
   4215      * GCC now requires an ISO C90 (ANSI C89) C compiler to build. K&R C
   4216        compilers will not work.
   4217      * The implementation of the [5]MIPS ABIs has changed. As a result,
   4218        the code generated for certain MIPS targets will not be binary
   4219        compatible with earlier releases.
   4220      * In previous releases, the MIPS port had a fake "hilo" register with
   4221        the user-visible name accum. This register has been removed.
   4222      * The implementation of the [6]SPARC ABIs has changed. As a result,
   4223        the code generated will not be binary compatible with earlier
   4224        releases in certain cases.
   4225      * The configure option --enable-threads=pthreads has been removed;
   4226        use --enable-threads=posix instead, which should have the same
   4227        effect.
   4228      * Code size estimates used by inlining heuristics for C, Objective-C,
   4229        C++ and Java have been redesigned significantly. As a result the
   4230        parameters of -finline-insns, --param max-inline-insns-single and
   4231        --param max-inline-insns-auto need to be reconsidered.
   4232      * --param max-inline-slope and --param min-inline-insns have been
   4233        removed; they are not needed for the new bottom-up inlining
   4234        heuristics.
   4235      * The new unit-at-a-time compilation scheme has several compatibility
   4236        issues:
   4237           + The order in which functions, variables, and top-level asm
   4238             statements are emitted may have changed. Code relying on some
   4239             particular ordering needs to be updated. The majority of such
   4240             top-level asm statements can be replaced by section
   4241             attributes.
   4242           + Unreferenced static variables and functions are removed. This
   4243             may result in undefined references when an asm statement
   4244             refers to the variable/function directly. In that case either
   4245             the variable/function shall be listed in asm statement operand
   4246             or in the case of top-level asm statements the attribute used
   4247             shall be used to force function/variable to be always output
   4248             and considered as a possibly used by unknown code.
   4249             For variables the attribute is accepted only by GCC 3.4 and
   4250             newer, while for earlier versions it is sufficient to use
   4251             unused to silence warnings about the variables not being
   4252             referenced. To keep code portable across different GCC
   4253             versions, you can use appropriate preprocessor conditionals.
   4254           + Static functions now can use non-standard passing conventions
   4255             that may break asm statements calling functions directly.
   4256             Again the attribute used shall be used to prevent this
   4257             behavior.
   4258        As a temporary workaround, -fno-unit-at-a-time can be used, but
   4259        this scheme may not be supported by future releases of GCC.
   4260      * GCC 3.4 automatically places zero-initialized variables in the .bss
   4261        section on some operating systems. Versions of GNU Emacs up to (and
   4262        including) 21.3 will not work correctly when using this
   4263        optimization; you can use -fno-zero-initialized-in-bss to disable
   4264        it.
   4265      * If GCC 3.4 is configured with --enable-threads=posix (the default
   4266        on most targets that support pthreads) then _REENTRANT will be
   4267        defined unconditionally by some libstdc++ headers. C++ code which
   4268        relies on that macro to detect whether multi-threaded code is being
   4269        compiled might change in meaning, possibly resulting in linker
   4270        errors for single-threaded programs. Affected users of [7]Boost
   4271        should compile single-threaded code with -DBOOST_DISABLE_THREADS.
   4272        See Bugzilla for [8]more information.
   4273 
   4274 General Optimizer Improvements
   4275 
   4276      * Usability of the profile feedback and coverage testing has been
   4277        improved.
   4278           + Performance of profiled programs has been improved by faster
   4279             profile merging code.
   4280           + Better use of the profile feedback for optimization (loop
   4281             unrolling and loop peeling).
   4282           + File locking support allowing fork() calls and parallel runs
   4283             of profiled programs.
   4284           + Coverage file format has been redesigned.
   4285           + gcov coverage tool has been improved.
   4286           + make profiledbootstrap available to build a faster compiler.
   4287             Experiments made on i386 hardware showed an 11% speedup on -O0
   4288             and a 7.5% speedup on -O2 compilation of a [9]large C++
   4289             testcase.
   4290           + New value profiling pass enabled via -fprofile-values
   4291           + New value profile transformations pass enabled via -fvpt aims
   4292             to optimize some code sequences by exploiting knowledge about
   4293             value ranges or other properties of the operands. At the
   4294             moment a conversion of expensive divisions into cheaper
   4295             operations has been implemented.
   4296           + New -fprofile-generate and -fprofile-use command-line options
   4297             to simplify the use of profile feedback.
   4298      * A new unit-at-a-time compilation scheme for C, Objective-C, C++ and
   4299        Java which is enabled via -funit-at-a-time (and implied by -O2). In
   4300        this scheme a whole file is parsed first and optimized later. The
   4301        following basic inter-procedural optimizations are implemented:
   4302           + Removal of unreachable functions and variables
   4303           + Discovery of local functions (functions with static linkage
   4304             whose address is never taken)
   4305           + On i386, these local functions use register parameter passing
   4306             conventions.
   4307           + Reordering of functions in topological order of the call graph
   4308             to enable better propagation of optimizing hints (such as the
   4309             stack alignments needed by functions) in the back end.
   4310           + Call graph based out-of-order inlining heuristics which allows
   4311             to limit overall compilation unit growth (--param
   4312             inline-unit-growth).
   4313        Overall, the unit-at-a-time scheme produces a 1.3% improvement for
   4314        the SPECint2000 benchmark on the i386 architecture (AMD Athlon
   4315        CPU).
   4316      * More realistic code size estimates used by inlining for C,
   4317        Objective-C, C++ and Java. The growth of large functions can now be
   4318        limited via --param large-function-insns and --param
   4319        large-function-growth.
   4320      * A new cfg-level loop optimizer pass replaces the old loop unrolling
   4321        pass and adds two other loop transformations -- loop peeling and
   4322        loop unswitching -- and also uses the profile feedback to limit
   4323        code growth. (The three optimizations are enabled by
   4324        -funroll-loops, -fpeel-loops and -funswitch-loops flags,
   4325        respectively).
   4326        The old loop unroller still can be enabled by -fold-unroll-loops
   4327        and may produce better code in some cases, especially when the
   4328        webizer optimization pass is not run.
   4329      * A new web construction pass enabled via -fweb (and implied by -O3)
   4330        improves the quality of register allocation, CSE, first scheduling
   4331        pass and some other optimization passes by avoiding re-use of
   4332        pseudo registers with non-overlapping live ranges. The pass almost
   4333        always improves code quality but does make debugging difficult and
   4334        thus is not enabled by default by -O2
   4335        The pass is especially effective as cleanup after code duplication
   4336        passes, such as the loop unroller or the tracer.
   4337      * Experimental implementations of superblock or trace scheduling in
   4338        the second scheduling pass can be enabled via
   4339        -fsched2-use-superblocks and -fsched2-use-traces, respectively.
   4340 
   4341 New Languages and Language specific improvements
   4342 
   4343   Ada
   4344 
   4345      * The Ada front end has been updated to include numerous bug fixes
   4346        and enhancements. These include:
   4347           + Improved project file support
   4348           + Additional set of warnings about potential wrong code
   4349           + Improved error messages
   4350           + Improved code generation
   4351           + Improved cross reference information
   4352           + Improved inlining
   4353           + Better run-time check elimination
   4354           + Better error recovery
   4355           + More efficient implementation of unbounded strings
   4356           + Added features in GNAT.Sockets, GNAT.OS_Lib, GNAT.Debug_Pools,
   4357             ...
   4358           + New GNAT.xxxx packages (e.g. GNAT.Strings,
   4359             GNAT.Exception_Action)
   4360           + New pragmas
   4361           + New -gnatS switch replacing gnatpsta
   4362           + Implementation of new Ada features (in particular limited
   4363             with, limited aggregates)
   4364 
   4365   C/Objective-C/C++
   4366 
   4367      * Precompiled headers are now supported. Precompiled headers can
   4368        dramatically speed up compilation of some projects. There are some
   4369        known defects in the current precompiled header implementation that
   4370        will result in compiler crashes in relatively rare situations.
   4371        Therefore, precompiled headers should be considered a "technology
   4372        preview" in this release. Read the manual for details about how to
   4373        use precompiled headers.
   4374      * File handling in the preprocessor has been rewritten. GCC no longer
   4375        gets confused by symlinks and hardlinks, and now has a correct
   4376        implementation of #import and #pragma once. These two directives
   4377        have therefore been un-deprecated.
   4378      * The undocumented extension that allowed C programs to have a label
   4379        at the end of a compound statement, which has been deprecated since
   4380        GCC 3.0, has been removed.
   4381      * The cast-as-lvalue extension has been removed for C++ and
   4382        deprecated for C and Objective-C. In particular, code like this:
   4383         int i;
   4384         (char) i = 5;
   4385 
   4386        or this:
   4387         char *p;
   4388         ((int *) p)++;
   4389 
   4390        is no longer accepted for C++ and will not be accepted for C and
   4391        Objective-C in a future version.
   4392      * The conditional-expression-as-lvalue extension has been deprecated
   4393        for C and Objective-C. In particular, code like this:
   4394         int a, b, c;
   4395         (a ? b : c) = 2;
   4396 
   4397        will not be accepted for C and Objective-C in a future version.
   4398      * The compound-expression-as-lvalue extension has been deprecated for
   4399        C and Objective-C. In particular, code like this:
   4400         int a, b;
   4401         (a, b) = 2;
   4402 
   4403        will not be accepted for C and Objective-C in a future version. A
   4404        possible non-intrusive workaround is the following:
   4405         (*(a, &b)) = 2;
   4406 
   4407      * Several [10]built-in functions such as __builtin_popcount for
   4408        counting bits, finding the highest and lowest bit in a word, and
   4409        parity have been added.
   4410      * The -fwritable-strings option has been deprecated and will be
   4411        removed.
   4412      * Many C math library functions are now recognized as built-ins and
   4413        optimized.
   4414      * The C, C++, and Objective-C compilers can now handle source files
   4415        written in any character encoding supported by the host C library.
   4416        The default input character set is taken from the current locale,
   4417        and may be overridden with the -finput-charset command line option.
   4418        In the future we will add support for inline encoding markers.
   4419 
   4420   C++
   4421 
   4422      * G++ is now much closer to full conformance to the ISO/ANSI C++
   4423        standard. This means, among other things, that a lot of invalid
   4424        constructs which used to be accepted in previous versions will now
   4425        be rejected. It is very likely that existing C++ code will need to
   4426        be fixed. This document lists some of the most common issues.
   4427      * A hand-written recursive-descent C++ parser has replaced the
   4428        YACC-derived C++ parser from previous GCC releases. The new parser
   4429        contains much improved infrastructure needed for better parsing of
   4430        C++ source codes, handling of extensions, and clean separation
   4431        (where possible) between proper semantics analysis and parsing. The
   4432        new parser fixes many bugs that were found in the old parser.
   4433      * You must now use the typename and template keywords to disambiguate
   4434        dependent names, as required by the C++ standard.
   4435         struct K {
   4436           typedef int mytype_t;
   4437         };
   4438 
   4439         template <class T1> struct A {
   4440           template <class T2> struct B {
   4441               void callme(void);
   4442             };
   4443 
   4444           template <int N> void bar(void)
   4445           {
   4446             // Use 'typename' to tell the parser that T1::mytype_t names
   4447             //  a type. This is needed because the name is dependent (in
   4448             //  this case, on template parameter T1).
   4449             typename T1::mytype_t x;
   4450             x = 0;
   4451           }
   4452         };
   4453 
   4454         template <class T> void template_func(void)
   4455         {
   4456           // Use 'template' to prefix member templates within
   4457           //  dependent types (a has type A<T>, which depends on
   4458           //  the template parameter T).
   4459           A<T> a;
   4460           a.template bar<0>();
   4461 
   4462           // Use 'template' to tell the parser that B is a nested
   4463           //  template class (dependent on template parameter T), and
   4464           //  'typename' because the whole A<T>::B<int> is
   4465           //  the name of a type (again, dependent).
   4466           typename A<T>::template B<int> b;
   4467           b.callme();
   4468         }
   4469 
   4470         void non_template_func(void)
   4471         {
   4472           // Outside of any template class or function, no names can be
   4473           //  dependent, so the use of the keyword 'typename' and 'template'
   4474           //  is not needed (and actually forbidden).
   4475           A<K> a;
   4476           a.bar<0>();
   4477           A<K>::B<float> b;
   4478           b.callme();
   4479         }
   4480      * In a template definition, unqualified names will no longer find
   4481        members of a dependent base (as specified by [temp.dep]/3 in the
   4482        C++ standard). For example,
   4483         template <typename T> struct B {
   4484           int m;
   4485           int n;
   4486           int f ();
   4487           int g ();
   4488         };
   4489         int n;
   4490         int g ();
   4491         template <typename T> struct C : B<T> {
   4492           void h ()
   4493           {
   4494             m = 0; // error
   4495             f ();  // error
   4496             n = 0; // ::n is modified
   4497             g ();  // ::g is called
   4498           }
   4499         };
   4500        You must make the names dependent, e.g. by prefixing them with
   4501        this->. Here is the corrected definition of C<T>::h,
   4502         template <typename T> void C<T>::h ()
   4503         {
   4504           this->m = 0;
   4505           this->f ();
   4506           this->n = 0
   4507           this->g ();
   4508         }
   4509        As an alternative solution (unfortunately not backwards compatible
   4510        with GCC 3.3), you may use using declarations instead of this->:
   4511         template <typename T> struct C : B<T> {
   4512           using B<T>::m;
   4513           using B<T>::f;
   4514           using B<T>::n;
   4515           using B<T>::g;
   4516           void h ()
   4517           {
   4518             m = 0;
   4519             f ();
   4520             n = 0;
   4521             g ();
   4522           }
   4523         };
   4524      * In templates, all non-dependent names are now looked up and bound
   4525        at definition time (while parsing the code), instead of later when
   4526        the template is instantiated. For instance:
   4527         void foo(int);
   4528 
   4529         template <int> struct A {
   4530           static void bar(void){
   4531             foo('a');
   4532           }
   4533         };
   4534 
   4535         void foo(char);
   4536 
   4537         int main()
   4538         {
   4539           A<0>::bar();    // Calls foo(int), used to call foo(char).
   4540         }
   4541 
   4542      * In an explicit instantiation of a class template, you must use
   4543        class or struct before the template-id:
   4544         template <int N>
   4545         class A {};
   4546 
   4547         template A<0>;         // error, not accepted anymore
   4548         template class A<0>;   // OK
   4549      * The "named return value" and "implicit typename" extensions have
   4550        been removed.
   4551      * Default arguments in function types have been deprecated and will
   4552        be removed.
   4553      * ARM-style name-injection of friend declarations has been deprecated
   4554        and will be removed. For example: struct S { friend void f(); };
   4555        void g() { f(); } will not be accepted by future versions of G++;
   4556        instead a declaration of "f" will need to be present outside of the
   4557        scope of "S".
   4558      * Covariant returns are implemented for all but varadic functions
   4559        that require an adjustment.
   4560      * When -pedantic is used, G++ now issues errors about spurious
   4561        semicolons. For example,
   4562         namespace N {}; // Invalid semicolon.
   4563         void f() {}; // Invalid semicolon.
   4564      * G++ no longer accepts attributes for a declarator after the
   4565        initializer associated with that declarator. For example,
   4566         X x(1) __attribute__((...));
   4567        is no longer accepted. Instead, use:
   4568         X x __attribute__((...)) (1);
   4569      * Inside the scope of a template class, the name of the class itself
   4570        can be treated as either a class or a template. So GCC used to
   4571        accept the class name as argument of type template, and template
   4572        template parameter. However this is not C++ standard compliant. Now
   4573        the name is not treated as a valid template template argument
   4574        unless you qualify the name by its scope. For example, the code
   4575        below no longer compiles.
   4576         template <template <class> class TT> class X {};
   4577         template <class T> class Y {
   4578           X<Y> x; // Invalid, Y is always a type template parameter.
   4579         };
   4580        The valid code for the above example is
   4581           X< ::Y> x; // Valid.
   4582        (Notice the space between < and : to prevent GCC to interpret this
   4583        as a digraph for [.)
   4584      * Friend declarations that refer to template specializations are
   4585        rejected if the template has not already been declared. For
   4586        example,
   4587         template <typename T>
   4588         class C {
   4589           friend void f<> (C&);
   4590         };
   4591        is rejected. You must first declare f as a template,
   4592         template <typename T>
   4593         void f(T);
   4594      * In case of friend declarations, every name used in the friend
   4595        declaration must be accessible at the point of that declaration.
   4596        Previous versions of G++ used to be less strict about this and
   4597        allowed friend declarations for private class members, for example.
   4598        See the ISO C++ Standard Committee's [11]defect report #209 for
   4599        details.
   4600      * Declaration of member functions of class templates as friends are
   4601        supported. For example,
   4602         template <typename T> struct A {
   4603           void f();
   4604         };
   4605         class C {
   4606           template <typename T> friend void A<T>::f();
   4607         };
   4608      * You must use template <> to introduce template specializations, as
   4609        required by the standard. For example,
   4610         template <typename T>
   4611         struct S;
   4612 
   4613         struct S<int> { };
   4614        is rejected. You must write,
   4615         template <> struct S<int> {};
   4616      * G++ used to accept code like this,
   4617         struct S {
   4618           int h();
   4619           void f(int i = g());
   4620           int g(int i = h());
   4621         };
   4622        This behavior is not mandated by the standard. Now G++ issues an
   4623        error about this code. To avoid the error, you must move the
   4624        declaration of g before the declaration of f. The default arguments
   4625        for g must be visible at the point where it is called.
   4626      * The C++ ABI Section 3.3.3 specifications for the array construction
   4627        routines __cxa_vec_new2 and __cxa_vec_new3 were changed to return
   4628        NULL when the allocator argument returns NULL. These changes are
   4629        incorporated into the libstdc++ runtime library.
   4630      * Using a name introduced by a typedef in a friend declaration or in
   4631        an explicit instantiation is now rejected, as specified by the ISO
   4632        C++ standard.
   4633         class A;
   4634         typedef A B;
   4635         class C {
   4636           friend class B;      // error, no typedef name here
   4637           friend B;            // error, friend always needs class/struct/enum
   4638           friend class A;      // OK
   4639         };
   4640 
   4641         template <int> class Q {};
   4642         typedef Q<0> R;
   4643         template class R;      // error, no typedef name here
   4644         template class Q<0>;   // OK
   4645      * When allocating an array with a new expression, GCC used to allow
   4646        parentheses around the type name. This is actually ill-formed and
   4647        it is now rejected:
   4648         int* a = new (int)[10];    // error, not accepted anymore
   4649         int* a = new int[10];      // OK
   4650      * When binding an rvalue of class type to a reference, the copy
   4651        constructor of the class must be accessible. For instance, consider
   4652        the following code:
   4653         class A
   4654         {
   4655         public:
   4656           A();
   4657 
   4658         private:
   4659           A(const A&);   // private copy ctor
   4660         };
   4661 
   4662         A makeA(void);
   4663         void foo(const A&);
   4664 
   4665         void bar(void)
   4666         {
   4667           foo(A());       // error, copy ctor is not accessible
   4668           foo(makeA());   // error, copy ctor is not accessible
   4669 
   4670           A a1;
   4671           foo(a1);        // OK, a1 is a lvalue
   4672         }
   4673        This might be surprising at first sight, especially since most
   4674        popular compilers do not correctly implement this rule ([12]further
   4675        details).
   4676      * When forming a pointer to member or a pointer to member function,
   4677        access checks for class visibility (public, protected, private) are
   4678        now performed using the qualifying scope of the name itself. This
   4679        is better explained with an example:
   4680         class A
   4681         {
   4682         public:
   4683           void pub_func();
   4684         protected:
   4685           void prot_func();
   4686         private:
   4687           void priv_func();
   4688         };
   4689 
   4690         class B : public A
   4691         {
   4692         public:
   4693           void foo()
   4694           {
   4695             &A::pub_func;   // OK, pub_func is accessible through A
   4696             &A::prot_func;  // error, cannot access prot_func through A
   4697             &A::priv_func;  // error, cannot access priv_func through A
   4698 
   4699             &B::pub_func;   // OK, pub_func is accessible through B
   4700             &B::prot_func;  // OK, can access prot_func through B (within B)
   4701             &B::priv_func;  // error, cannot access priv_func through B
   4702           }
   4703         };
   4704 
   4705     Runtime Library (libstdc++)
   4706 
   4707      * Optimization work:
   4708           + Streamlined streambuf, filebuf, separate synched with C
   4709             Standard I/O streambuf.
   4710           + All formatted I/O now uses cached locale information.
   4711           + STL optimizations (memory/speed for list, red-black trees as
   4712             used by sets and maps).
   4713           + More use of GCC builtins.
   4714           + String optimizations (avoid contention on
   4715             increment/decrement-and-test of the reference count in the
   4716             empty-string object, constructor from input_iterators
   4717             speedup).
   4718      * Static linkage size reductions.
   4719      * Large File Support (files larger than 2 GB on 32-bit systems).
   4720      * Wide character and variable encoding filebuf work (UTF-8, Unicode).
   4721      * Generic character traits.
   4722      * Also support wchar_t specializations on Mac OS 10.3.x, FreeBSD 5.x,
   4723        Solaris 2.7 and above, AIX 5.x, Irix 6.5.
   4724      * The allocator class is now standard-conformant, and two additional
   4725        extension allocators have been added, mt_alloc and
   4726        bitmap_allocator.
   4727      * PCH support: -include bits/stdc++.h (2x compile speedup).
   4728      * Rewrote __cxa_demangle with support for C++ style allocators.
   4729      * New debug modes for STL containers and iterators.
   4730      * Testsuite rewrite: five times as many tests, plus increasingly
   4731        sophisticated tests, including I/O, MT, multi-locale, wide and
   4732        narrow characters.
   4733      * Use current versions of GNU "autotools" for build/configuration.
   4734 
   4735   Objective-C
   4736 
   4737      * The Objective-C front end has been updated to include the numerous
   4738        bug fixes and enhancements previously available only in Apple's
   4739        version of GCC. These include:
   4740           + Structured exception (@try... @catch... @finally, @throw) and
   4741             synchronization (@synchronized) support. These are accessible
   4742             via the -fobjc-exceptions switch; as of this writing, they may
   4743             only be used in conjunction with -fnext-runtime on Mac OS X
   4744             10.3 and later. See [13]Options Controlling Objective-C
   4745             Dialect for more information.
   4746           + An overhaul of @encode logic. The C99 _Bool and C++ bool type
   4747             may now be encoded as 'B'. In addition, the back-end/codegen
   4748             dependencies have been removed.
   4749           + An overhaul of message dispatch construction, ensuring that
   4750             the various receiver types (and casts thereof) are handled
   4751             properly, and that correct diagnostics are issued.
   4752           + Support for "Zero-Link" (-fzero-link) and "Fix-and-Continue"
   4753             (-freplace-objc-classes) debugging modes, currently available
   4754             on Mac OS X 10.3 and later. See [14]Options Controlling
   4755             Objective-C Dialect for more information.
   4756           + Access to optimized runtime entry points (-fno-nil-receivers )
   4757             on the assumption that message receivers are never nil. This
   4758             is currently available on Mac OS X 10.3 and later. See
   4759             [15]Options Controlling Objective-C Dialect for more
   4760             information.
   4761 
   4762   Java
   4763 
   4764      * Compiling a .jar file will now cause non-.class entries to be
   4765        automatically compiled as resources.
   4766      * libgcj has been ported to Darwin.
   4767      * Jeff Sturm has adapted Jan Hubicka's call graph optimization code
   4768        to gcj.
   4769      * libgcj has a new gcjlib URL type; this lets URLClassLoader load
   4770        code from shared libraries.
   4771      * libgcj has been much more completely merged with [16]GNU Classpath.
   4772      * Class loading is now much more correct; in particular the caller's
   4773        class loader is now used when that is required.
   4774      * [17]Eclipse 2.x will run out of the box using gij.
   4775      * Parts of java.nio have been implemented. Direct and indirect
   4776        buffers work, as do fundamental file and socket operations.
   4777      * java.awt has been improved, though it is still not ready for
   4778        general use.
   4779      * The HTTP protocol handler now uses HTTP/1.1 and can handle the POST
   4780        method.
   4781      * The MinGW port has matured. Enhancements include socket timeout
   4782        support, thread interruption, improved Runtime.exec() handling and
   4783        support for accented characters in filenames.
   4784 
   4785   Fortran
   4786 
   4787      * Fortran improvements are listed in the [18]Fortran documentation.
   4788 
   4789 New Targets and Target Specific Improvements
   4790 
   4791   Alpha
   4792 
   4793      * Several [19]built-in functions have been added such as
   4794        __builtin_alpha_zap to allow utilizing the more obscure
   4795        instructions of the CPU.
   4796      * Parameter passing of complex arguments has changed to match the
   4797        [20]ABI. This change is incompatible with previous GCC versions,
   4798        but does fix compatibility with the Tru64 compiler and several
   4799        corner cases where GCC was incompatible with itself.
   4800 
   4801   ARM
   4802 
   4803      * Nicolas Pitre has contributed his hand-coded floating-point support
   4804        code for ARM. It is both significantly smaller and faster than the
   4805        existing C-based implementation, even when building applications
   4806        for Thumb. The arm-elf configuration has been converted to use the
   4807        new code.
   4808      * Support for the Intel's iWMMXt architecture, a second generation
   4809        XScale processor, has been added. Enabled at run time with the
   4810        -mcpu=iwmmxt command line switch.
   4811      * A new ARM target has been added: arm-wince-pe. This is similar to
   4812        the arm-pe target, but it defaults to using the APCS32 ABI.
   4813      * The existing ARM pipeline description has been converted to the use
   4814        the [21]DFA processor pipeline model. There is not much change in
   4815        code performance, but the description is now [22]easier to
   4816        understand.
   4817      * Support for the Cirrus EP9312 Maverick floating point co-processor
   4818        added. Enabled at run time with the -mcpu=ep9312 command line
   4819        switch. Note however that the multilibs to support this chip are
   4820        currently disabled in gcc/config/arm/t-arm-elf, so if you want to
   4821        enable their production you will have to uncomment the entries in
   4822        that file.
   4823 
   4824   H8/300
   4825 
   4826      * Support for long long has been added.
   4827      * Support for saveall attribute has been added.
   4828      * Pavel Pisa contributed hand-written 32-bit-by-32-bit division code
   4829        for H8/300H and H8S, which is much faster than the previous
   4830        implementation.
   4831      * A lot of small performance improvements.
   4832 
   4833   IA-32/AMD64 (x86-64)
   4834 
   4835      * Tuning for K8 (AMD Opteron/Athlon64) core is available via
   4836        -march=k8 and -mcpu=k8.
   4837      * Scalar SSE code generation carefully avoids reformatting penalties,
   4838        hidden dependencies and minimizes the number of uops generated on
   4839        both Intel and AMD CPUs.
   4840      * Vector MMX and SSE operands are now passed in registers to improve
   4841        performance and match the argument passing convention used by the
   4842        Intel C++ Compiler. As a result it is not possible to call
   4843        functions accepting vector arguments compiled by older GCC version.
   4844      * Conditional jump elimination is now more aggressive on modern CPUs.
   4845      * The Athlon ports has been converted to use the DFA processor
   4846        pipeline description.
   4847      * Optimization of indirect tail calls is now possible in a similar
   4848        fashion as direct sibcall optimization.
   4849      * Further small performance improvements.
   4850      * -m128bit-long-double is now less buggy.
   4851      * __float128 support in 64-bit compilation.
   4852      * Support for data structures exceeding 2GB in 64-bit mode.
   4853      * -mcpu has been renamed to -mtune.
   4854 
   4855   IA-64
   4856 
   4857      * Tuning code for the Itanium 2 processor has been added. The
   4858        generation of code tuned for Itanium 2 (option -mtune=itanium2) is
   4859        enabled by default now. To generate code tuned for Itanium 1 the
   4860        option -mtune=itanium1 should be used.
   4861      * [23]DFA processor pipeline descriptions for the IA-64 processors
   4862        have been added. This resulted in about 3% improvement on the
   4863        SPECInt2000 benchmark for Itanium 2.
   4864      * Instruction bundling for the IA-64 processors has been rewritten
   4865        using the DFA pipeline hazard recognizer. It resulted in about 60%
   4866        compiler speedup on the SPECInt2000 C programs.
   4867 
   4868   M32R
   4869 
   4870      * Support for the M32R/2 processor has been added by Renesas.
   4871      * Support for an M32R GNU/Linux target and PIC code generation has
   4872        been added by Renesas.
   4873 
   4874   M68000
   4875 
   4876      * Bernardo Innocenti (Develer S.r.l.) has contributed the
   4877        m68k-uclinux target, based on former work done by Paul Dale
   4878        (SnapGear Inc.). Code generation for the ColdFire processors family
   4879        has been enhanced and extended to support the MCF 53xx and MCF 54xx
   4880        cores, integrating former work done by Peter Barada (Motorola).
   4881 
   4882   MIPS
   4883 
   4884     Processor-specific changes
   4885 
   4886      * Support for the RM7000 and RM9000 processors has been added. It can
   4887        be selected using the -march compiler option and should work with
   4888        any MIPS I (mips-*) or MIPS III (mips64-*) configuration.
   4889      * Support for revision 2 of the MIPS32 ISA has been added. It can be
   4890        selected with the command-line option -march=mips32r2.
   4891      * There is a new option, -mfix-sb1, to work around certain SB-1
   4892        errata.
   4893 
   4894     Configuration
   4895 
   4896      * It is possible to customize GCC using the following configure-time
   4897        options:
   4898           + --with-arch, which specifies the default value of the -march
   4899             option.
   4900           + --with-tune, which specifies the default value of the -mtune
   4901             option.
   4902           + --with-abi, which specifies the default ABI.
   4903           + --with-float=soft, which tells GCC to use software floating
   4904             point by default.
   4905           + --with-float=hard, which tells GCC to use hardware floating
   4906             point by default.
   4907      * A 64-bit GNU/Linux port has been added. The associated
   4908        configurations are mips64-linux-gnu and mips64el-linux-gnu.
   4909      * The 32-bit GNU/Linux port now supports Java.
   4910      * The IRIX 6 configuration now supports the o32 ABI and will build
   4911        o32 multilibs by default. This support is compatible with both
   4912        binutils and the SGI tools, but note that several features,
   4913        including debugging information and DWARF2 exception handling, are
   4914        only available when using the GNU assembler. Use of the GNU
   4915        assembler and linker (version 2.15 or above) is strongly
   4916        recommended.
   4917      * The IRIX 6 configuration now supports 128-bit long doubles.
   4918      * There are two new RTEMS-specific configurations, mips-rtems and
   4919        mipsel-rtems.
   4920      * There are two new *-elf configurations, mipsisa32r2-elf and
   4921        mipsisa32r2el-elf.
   4922 
   4923     General
   4924 
   4925      * Several [24]ABI bugs have been fixed. Unfortunately, these changes
   4926        will break binary compatibility with earlier releases.
   4927      * GCC can now use explicit relocation operators when generating
   4928        -mabicalls code. This behavior is controlled by -mexplicit-relocs
   4929        and can have several performance benefits. For example:
   4930           + It allows for more optimization of GOT accesses, including
   4931             better scheduling and redundancy elimination.
   4932           + It allows sibling calls to be implemented as jumps.
   4933           + n32 and n64 leaf functions can use a call-clobbered global
   4934             pointer instead of $28.
   4935           + The code to set up $gp can be removed from functions that
   4936             don't need it.
   4937      * A new option, -mxgot, allows the GOT to be bigger than 64k. This
   4938        option is equivalent to the assembler's -xgot option and should be
   4939        used instead of -Wa,-xgot.
   4940      * Frame pointer elimination is now supported when generating 64-bit
   4941        MIPS16 code.
   4942      * Inline block moves have been optimized to take more account of
   4943        alignment information.
   4944      * Many internal changes have been made to the MIPS port, mostly aimed
   4945        at reducing the reliance on assembler macros.
   4946 
   4947   PowerPC
   4948 
   4949      * GCC 3.4 releases have a number of fixes for PowerPC and PowerPC64
   4950        [25]ABI incompatibilities regarding the way parameters are passed
   4951        during functions calls. These changes may result in incompatibility
   4952        between code compiled with GCC 3.3 and GCC 3.4.
   4953 
   4954     PowerPC Darwin
   4955 
   4956      * Support for shared/dylib gcc libraries has been added. It is
   4957        enabled by default on powerpc-apple-darwin7.0.0 and up.
   4958      * Libgcj is enabled by default. On systems older than
   4959        powerpc-apple-darwin7.0.0 you need to install dlcompat.
   4960      * 128-bit IBM extended precision format support added for long
   4961        double.
   4962 
   4963     PowerPC64 GNU/Linux
   4964 
   4965      * By default, PowerPC64 GNU/Linux now uses natural alignment of
   4966        structure elements. The old four byte alignment for double, with
   4967        special rules for a struct starting with a double, can be chosen
   4968        with -malign-power. This change may result in incompatibility
   4969        between code compiled with GCC 3.3 and GCC 3.4.
   4970      * -mabi=altivec is now the default rather than -mabi=no-altivec.
   4971      * 128-bit IBM extended precision format support added for long
   4972        double.
   4973 
   4974   S/390 and zSeries
   4975 
   4976      * New command-line options allow to specify the intended execution
   4977        environment for generated code:
   4978           + -mesa/-mzarch allows to specify whether to generate code
   4979             running in ESA/390 mode or in z/Architecture mode (this is
   4980             applicable to 31-bit code only).
   4981           + -march allows to specify a minimum processor architecture
   4982             level (g5, g6, z900, or z990).
   4983           + -mtune allows to specify which processor to tune for.
   4984      * It is possible to customize GCC using the following configure-time
   4985        options:
   4986           + --with-mode, which specifies whether to default to assuming
   4987             ESA/390 or z/Architecture mode.
   4988           + --with-arch, which specifies the default value of the -march
   4989             option.
   4990           + --with-tune, which specifies the default value of the -mtune
   4991             option.
   4992      * Support for the z990 processor has been added, and can be selected
   4993        using -march=z990 or -mtune=z990. This includes instruction
   4994        scheduling tuned for the superscalar instruction pipeline of the
   4995        z990 processor as well as support for all new instructions provided
   4996        by the long-displacement facility.
   4997      * Support to generate 31-bit code optimized for zSeries processors
   4998        (running in ESA/390 or in z/Architecture mode) has been added. This
   4999        can be selected using -march=z900 and -mzarch respectively.
   5000      * Instruction scheduling for the z900 and z990 processors now uses
   5001        the DFA pipeline hazard recognizer.
   5002      * GCC no longer generates code to maintain a stack backchain,
   5003        previously used to generate stack backtraces for debugging
   5004        purposes. As replacement that does not incur runtime overhead,
   5005        DWARF-2 call frame information is provided by GCC; this is
   5006        supported by GDB 6.1. The old behavior can be restored using the
   5007        -mbackchain option.
   5008      * The stack frame size of functions may now exceed 2 GB in 64-bit
   5009        code.
   5010      * A port for the 64-bit IBM TPF operating system has been added; the
   5011        configuration is s390x-ibm-tpf. This configuration is supported as
   5012        cross-compilation target only.
   5013      * Various changes to improve the generated code have been
   5014        implemented, including:
   5015           + GCC now uses the MULTIPLY AND ADD and MULTIPLY AND SUBTRACT
   5016             instructions to significantly speed up many floating-point
   5017             applications.
   5018           + GCC now uses the ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL
   5019             WITH BORROW instructions to speed up long long arithmetic.
   5020           + GCC now uses the SEARCH STRING instruction to implement
   5021             strlen().
   5022           + In many cases, function call overhead for 31-bit code has been
   5023             reduced by placing the literal pool after the function code
   5024             instead of after the function prolog.
   5025           + Register 14 is no longer reserved in 64-bit code.
   5026           + Handling of global register variables has been improved.
   5027 
   5028   SPARC
   5029 
   5030      * The option -mflat is deprecated.
   5031      * Support for large (> 2GB) frames has been added to the 64-bit port.
   5032      * Several [26]ABI bugs have been fixed. Unfortunately, these changes
   5033        will break binary compatibility with earlier releases.
   5034      * The default debugging format has been switched from STABS to
   5035        DWARF-2 for 32-bit code on Solaris 7 and later. DWARF-2 is already
   5036        the default debugging format for 64-bit code on Solaris.
   5037 
   5038   SuperH
   5039 
   5040      * Support for the SH2E processor has been added. Enabled at run time
   5041        with the -m2e command line switch, or at configure time by
   5042        specifying sh2e as the machine part of the target triple.
   5043 
   5044   V850
   5045 
   5046      * Support for the Mitsubishi V850E1 processor has been added. This is
   5047        a variant of the V850E processor with some additional debugging
   5048        instructions.
   5049 
   5050   Xtensa
   5051 
   5052      * Several ABI bugs have been fixed. Unfortunately, these changes
   5053        break binary compatibility with earlier releases.
   5054           + For big-endian processors, the padding of aggregate return
   5055             values larger than a word has changed. If the size of an
   5056             aggregate return value is not a multiple of 32 bits, previous
   5057             versions of GCC inserted padding in the most-significant bytes
   5058             of the first return value register. Aggregates larger than a
   5059             word are now padded in the least-significant bytes of the last
   5060             return value register used. Aggregates smaller than a word are
   5061             still padded in the most-significant bytes. The return value
   5062             padding has not changed for little-endian processors.
   5063           + Function arguments with 16-byte alignment are now properly
   5064             aligned.
   5065           + The implementation of the va_list type has changed. A va_list
   5066             value created by va_start from a previous release cannot be
   5067             used with va_arg from this release, or vice versa.
   5068      * More processor configuration options for Xtensa processors are
   5069        supported:
   5070           + the ABS instruction is now optional;
   5071           + the ADDX* and SUBX* instructions are now optional;
   5072           + an experimental CONST16 instruction can be used to synthesize
   5073             constants instead of loading them from constant pools.
   5074        These and other Xtensa processor configuration options can no
   5075        longer be enabled or disabled by command-line options; the
   5076        processor configuration must be specified by the xtensa-config.h
   5077        header file when building GCC. Additionally, the
   5078        -mno-serialize-volatile option is no longer supported.
   5079 
   5080 Obsolete Systems
   5081 
   5082    Support for a number of older systems has been declared obsolete in GCC
   5083    3.4. Unless there is activity to revive them, the next release of GCC
   5084    will have their sources permanently removed.
   5085 
   5086    All configurations of the following processor architectures have been
   5087    declared obsolete:
   5088      * Mitsubishi D30V, d30v-*
   5089      * AT&T DSP1600 and DSP1610, dsp16xx-*
   5090      * Intel 80960, i960
   5091 
   5092    Also, some individual systems have been obsoleted:
   5093      * ARM Family
   5094           + Support for generating code for operation in APCS/26 mode
   5095             (-mapcs-26).
   5096      * IBM ESA/390
   5097           + "Bigfoot" port, i370-*. (The other port, s390-*, is actively
   5098             maintained and supported.)
   5099      * Intel 386 family
   5100           + MOSS, i?86-moss-msdos and i?86-*-moss*
   5101           + NCR 3000 running System V r.4, i?86-ncr-sysv4*
   5102           + FreeBSD with a.out object format, i?86-*-freebsd*aout* and
   5103             i?86-*-freebsd2*
   5104           + GNU/Linux with a.out object format, i?86-linux*aout*
   5105           + GNU/Linux with libc5, a.k.a. glibc1, i?86-linux*libc1*
   5106           + Interix versions before Interix 3, i?86-*-interix
   5107           + Mach microkernel, i?86-mach*
   5108           + SCO UnixWare with UDK, i?86-*-udk*
   5109           + Generic System V releases 1, 2, and 3, i?86-*-sysv[123]*
   5110           + VSTa microkernel, i386-*-vsta
   5111      * Motorola M68000 family
   5112           + HPUX, m68k-hp-hpux* and m68000-hp-hpux*
   5113           + NetBSD with a.out object format (before NetBSD 1.4),
   5114             m68k-*-*-netbsd* except m68k-*-*-netbsdelf*
   5115           + Generic System V r.4, m68k-*-sysv4*
   5116      * VAX
   5117           + Generic VAX, vax-*-* (This is generic VAX only; we have not
   5118             obsoleted any VAX triples for specific operating systems.)
   5119 
   5120 Documentation improvements
   5121 
   5122 Other significant improvements
   5123 
   5124      * The build system has undergone several significant cleanups.
   5125        Subdirectories will only be configured if they are being built, and
   5126        all subdirectory configures are run from the make command. The top
   5127        level has been autoconfiscated.
   5128      * Building GCC no longer writes to its source directory. This should
   5129        help those wishing to share a read-only source directory over NFS
   5130        or build from a CD. The exceptions to this feature are if you
   5131        configure with either --enable-maintainer-mode or
   5132        --enable-generated-files-in-srcdir.
   5133      * The -W warning option has been renamed to -Wextra, which is more
   5134        easily understood. The older spelling will be retained for
   5135        backwards compatibility.
   5136      * Substantial improvements in compile time have been made,
   5137        particularly for non-optimizing compilations.
   5138      __________________________________________________________________
   5139 
   5140 GCC 3.4.0
   5141 
   5142   Bug Fixes
   5143 
   5144    A vast number of bugs have been fixed in 3.4.0, too many to publish a
   5145    complete list here. [27]Follow this link to query the Bugzilla database
   5146    for the list of over 900 bugs fixed in 3.4.0. This is the list of all
   5147    bugs marked as resolved and fixed in 3.4.0 that are not flagged as 3.4
   5148    regressions.
   5149      __________________________________________________________________
   5150 
   5151 GCC 3.4.1
   5152 
   5153   Bug Fixes
   5154 
   5155    This section lists the problem reports (PRs) from GCC's bug tracking
   5156    system that are known to be fixed in the 3.4.1 release. This list might
   5157    not be complete (that is, it is possible that some PRs that have been
   5158    fixed are not listed here).
   5159 
   5160     Bootstrap failures
   5161 
   5162      * [28]10129 Ada bootstrap fails on PPC-Darwin - invalid assembler
   5163        emitted - PIC related
   5164      * [29]14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf
   5165      * [30]14760 A bug in configure.in prevents using both
   5166        --program-suffix and --program-prefix
   5167      * [31]14671 [hppa64] bootstrap fails: ICE in
   5168        save_call_clobbered_regs, in caller_save.c
   5169      * [32]15093 [alpha][Java] make bootstrap fails to configure libffi on
   5170        Alpha
   5171      * [33]15178 Solaris 9/x86 fails linking after stage 3
   5172 
   5173     Multi-platform internal compiler errors (ICEs)
   5174 
   5175      * [34]12753 (preprocessor) Memory corruption in preprocessor on bad
   5176        input
   5177      * [35]13985 ICE in gcc.c-torture/compile/930621-1.c
   5178      * [36]14810 (c++) tree check failures with invalid code involving
   5179        templates
   5180      * [37]14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in
   5181        cp/parser.c
   5182      * [38]15044 (c++) ICE on syntax error, template header
   5183      * [39]15057 (c++) Compiling of conditional value throw constructs
   5184        cause a segmentation violation
   5185      * [40]15064 (c++) typeid of template parameter gives ICE
   5186      * [41]15142 (c++) ICE when passing a string where a char* is expected
   5187        in a throw statement
   5188      * [42]15159 ICE in rtl_verify_flow_info_1
   5189      * [43]15165 (c++) ICE in instantiate_template
   5190      * [44]15193 Unary minus using pointer to V4SF vector causes
   5191        -fforce-mem to exhaust all memory
   5192      * [45]15209 (c++) Runs out of memory with packed structs
   5193      * [46]15227 (c++) Trouble with invalid function definition
   5194      * [47]15285 (c++) instantiate_type ICE when forming pointer to
   5195        template function
   5196      * [48]15299 (c++) ICE in resolve_overloaded_unification
   5197      * [49]15329 (c++) ICE on constructor of member template
   5198      * [50]15550 ICE in extract_insn, in recog.c
   5199      * [51]15554 (c++) ICE in tsubst_copy, in cp/pt.c
   5200      * [52]15640 (c++) ICE on invalid code in arg_assoc, in
   5201        cp/name-lookup.c
   5202      * [53]15666 [unit-at-a-time] Gcc abort on valid code
   5203      * [54]15696 (c++) ICE with bad pointer-to-member code
   5204      * [55]15701 (c++) ICE with friends and template template parameter
   5205      * [56]15761 ICE in do_SUBST, in combine.c
   5206      * [57]15829 (c++) ICE on Botan-1.3.13 due to -funroll-loops
   5207 
   5208     Ada
   5209 
   5210      * [58]14538 All RTEMS targets broken for gnat
   5211 
   5212     C front end
   5213 
   5214      * [59]12391 missing warning about assigning to an incomplete type
   5215      * [60]14649 atan(1.0) should not be a constant expression
   5216      * [61]15004 [unit-at-a-time] no warning for unused paramater in
   5217        static function
   5218      * [62]15749 --pedantic-errors behaves differently from --pedantic
   5219        with C-compiler on GNU/Linux
   5220 
   5221     C++ compiler and library
   5222 
   5223      * [63]10646 non-const reference is incorrectly matched in a "const T"
   5224        partial specialization
   5225      * [64]12077 wcin.rdbuf()->in_avail() return value too high
   5226      * [65]13598 enc_filebuf doesn't work
   5227      * [66]14211 const_cast returns lvalue but should be rvalue
   5228      * [67]14220 num_put::do_put() undesired float/double behavior
   5229      * [68]14245 problem with user-defined allocators in std::basic_string
   5230      * [69]14340 libstdc++ Debug mode: failure to convert iterator to
   5231        const_iterator
   5232      * [70]14600 __gnu_cxx::stdio_sync_filebuf should expose internal
   5233        FILE*
   5234      * [71]14668 no warning anymore for reevaluation of declaration
   5235      * [72]14775 LFS (large file support) tests missing
   5236      * [73]14821 Duplicate namespace alias declaration should not conflict
   5237      * [74]14930 Friend declaration ignored
   5238      * [75]14932 cannot use offsetof to get offsets of array elements in
   5239        g++ 3.4.0
   5240      * [76]14950 [non unit-at-a-time] always_inline does not mix with
   5241        templates and -O0
   5242      * [77]14962 g++ ignores #pragma redefine_extname
   5243      * [78]14975 Segfault on low-level write error during imbue
   5244      * [79]15002 Linewise stream input is unusably slow (std::string slow)
   5245      * [80]15025 compiler accepts redeclaration of template as
   5246        non-template
   5247      * [81]15046 [arm] Math functions misdetected by cross configuration
   5248      * [82]15069 a bit test on a variable of enum type is miscompiled
   5249      * [83]15074 g++ -lsupc++ still links against libstdc++
   5250      * [84]15083 spurious "statement has no effect" warning
   5251      * [85]15096 parse error with templates and pointer to const member
   5252      * [86]15287 combination of operator[] and operator .* fails in
   5253        templates
   5254      * [87]15317 __attribute__ unused in first parameter of constructor
   5255        gives error
   5256      * [88]15337 sizeof on incomplete type diagnostic
   5257      * [89]15361 bitset<>::_Find_next fails
   5258      * [90]15412 _GLIBCXX_ symbols symbols defined and used in different
   5259        namespaces
   5260      * [91]15427 valid code results in incomplete type error
   5261      * [92]15471 Incorrect member pointer offsets in anonymous
   5262        structs/unions
   5263      * [93]15503 nested template problem
   5264      * [94]15507 compiler hangs while laying out union
   5265      * [95]15542 operator & and template definitions
   5266      * [96]15565 SLES9: leading + sign for unsigned int with showpos
   5267      * [97]15625 friend defined inside a template fails to find static
   5268        function
   5269      * [98]15629 Function templates, overloads, and friend name injection
   5270      * [99]15742 'noreturn' attribute ignored in method of template
   5271        functions.
   5272      * [100]15775 Allocator::pointer consistently ignored
   5273      * [101]15821 Duplicate namespace alias within namespace rejected
   5274      * [102]15862 'enum yn' fails (confict with undeclared builtin)
   5275      * [103]15875 rejects pointer to member in template
   5276      * [104]15877 valid code using templates and anonymous enums is
   5277        rejected
   5278      * [105]15947 Puzzling error message for wrong destructor declaration
   5279        in template class
   5280      * [106]16020 cannot copy __gnu_debug::bitset
   5281      * [107]16154 input iterator concept too restrictive
   5282      * [108]16174 deducing top-level consts
   5283 
   5284     Java
   5285 
   5286      * [109]14315 Java compiler is not parallel make safe
   5287 
   5288     Fortran
   5289 
   5290      * [110]15151 [g77] incorrect logical i/o in 64-bit mode
   5291 
   5292     Objective-C
   5293 
   5294      * [111]7993 private variables cannot be shadowed in subclasses
   5295 
   5296     Optimization bugs
   5297 
   5298      * [112]15228 useless copies of floating point operands
   5299      * [113]15345 [non-unit-at-a-time] unreferenced nested inline
   5300        functions not optimized away
   5301      * [114]15945 Incorrect floating point optimization
   5302      * [115]15526 ftrapv aborts on 0 * (-1)
   5303      * [116]14690 Miscompiled POOMA tests
   5304      * [117]15112 GCC generates code to write to unchanging memory
   5305 
   5306     Preprocessor
   5307 
   5308      * [118]15067 Minor glitch in the source of cpp
   5309 
   5310     Main driver program bugs
   5311 
   5312      * [119]1963 collect2 interprets -oldstyle_liblookup as -o
   5313        ldstyle_liblookup
   5314 
   5315     x86-specific (Intel/AMD)
   5316 
   5317      * [120]15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND*
   5318        section}
   5319 
   5320     HPPA-specific
   5321 
   5322      * [121]14782 GCC produces an unaligned data access at -O2
   5323      * [122]14828 FAIL: gcc.c-torture/execute/20030408-1.c execution, -O2
   5324      * [123]15202 ICE in reload_cse_simplify_operands, in postreload.c
   5325 
   5326     IA64-specific
   5327 
   5328      * [124]14610 __float80 constants incorrectly emitted
   5329      * [125]14813 init_array sections are initialized in the wrong order
   5330      * [126]14857 GCC segfault on duplicated asm statement
   5331      * [127]15598 Gcc 3.4 ICE on valid code
   5332      * [128]15653 Gcc 3.4 ICE on valid code
   5333 
   5334     MIPS-specific
   5335 
   5336      * [129]15189 wrong filling of delay slot with -march=mips1 -G0
   5337        -mno-split-addresses -mno-explicit-relocs
   5338      * [130]15331 Assembler error building gnatlib on IRIX 6.5 with GNU as
   5339        2.14.91
   5340      * [131]16144 Bogus reference to __divdf3 when -O1
   5341      * [132]16176 Miscompilation of unaligned data in MIPS backend
   5342 
   5343     PowerPC-specific
   5344 
   5345      * [133]11591 ICE in gcc.dg/altivec-5.c
   5346      * [134]12028 powerpc-eabispe produces bad sCOND operation
   5347      * [135]14478 rs6000 geu/ltu patterns generate incorrect code
   5348      * [136]14567 long double and va_arg complex args
   5349      * [137]14715 Altivec stack layout may overlap gpr save with stack
   5350        temps
   5351      * [138]14902 (libstdc++) Stream checking functions fail when -pthread
   5352        option is used.
   5353      * [139]14924 Compiler ICE on valid code
   5354      * [140]14960 -maltivec affects vector return with -mabi=no-altivec
   5355      * [141]15106 vector varargs failure passing from altivec to
   5356        non-altivec code for -m32
   5357      * [142]16026 ICE in function.c:4804, assign_parms, when -mpowerpc64 &
   5358        half-word operation
   5359      * [143]15191 -maltivec -mabi=no-altivec results in mis-aligned lvx
   5360        and stvx
   5361      * [144]15662 Segmentation fault when an exception is thrown - even if
   5362        try and catch are specified
   5363 
   5364     s390-specific
   5365 
   5366      * [145]15054 Bad code due to overlapping stack temporaries
   5367 
   5368     SPARC-specific
   5369 
   5370      * [146]15783 ICE with union assignment in 64-bit mode
   5371      * [147]15626 GCC 3.4 emits "ld: warning: relocation error:
   5372        R_SPARC_UA32"
   5373 
   5374     x86-64-specific
   5375 
   5376      * [148]14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64
   5377      * [149]14723 Backported -march=nocona from mainline
   5378      * [150]15290 __float128 failed to pass to function properly
   5379 
   5380     Cygwin/Mingw32-specific
   5381 
   5382      * [151]15250 Option -mms-bitfields support on GCC 3.4 is not
   5383        conformant to MS layout
   5384      * [152]15551 -mtune=pentium4 -O2 with sjlj EH breaks stack probe
   5385        worker on windows32 targets
   5386 
   5387     Bugs specific to embedded processors
   5388 
   5389      * [153]8309 [m68k] -m5200 produces erroneous SImode set of short
   5390        varaible on stack
   5391      * [154]13250 [SH] Gcc code for rotation clobbers the register, but
   5392        gcc continues to use the register as if it was not clobbered
   5393      * [155]13803 [coldfire] movqi operand constraints too restrictivefor
   5394        TARGET_COLDFIRE
   5395      * [156]14093 [SH] ICE for code when using -mhitachi option in SH
   5396      * [157]14457 [m6811hc] ICE with simple c++ source
   5397      * [158]14542 [m6811hc] ICE on simple source
   5398      * [159]15100 [SH] cc1plus got hang-up on
   5399        libstdc++-v3/testsuite/abi_check.cc
   5400      * [160]15296 [CRIS] Delayed branch scheduling causing invalid code on
   5401        cris-*
   5402      * [161]15396 [SH] ICE with -O2 -fPIC
   5403      * [162]15782 [coldfire] m68k_output_mi_thunk emits wrong code for
   5404        ColdFire
   5405 
   5406     Testsuite problems (compiler not affected)
   5407 
   5408      * [163]11610 libstdc++ testcases 27_io/* don't work properly remotely
   5409      * [164]15488 (libstdc++) possibly insufficient file permissions for
   5410        executing test suite
   5411      * [165]15489 (libstdc++) testsuite_files determined incorrectly
   5412 
   5413     Documentation bugs
   5414 
   5415      * [166]13928 (libstdc++) no whatis info in some man pages generated
   5416        by doxygen
   5417      * [167]14150 Ada documentation out of date
   5418      * [168]14949 (c++) Need to document method visibility changes
   5419      * [169]15123 libstdc++-doc: Allocators.3 manpage is empty
   5420      __________________________________________________________________
   5421 
   5422 GCC 3.4.2
   5423 
   5424   Bug Fixes
   5425 
   5426    This section lists the problem reports (PRs) from GCC's bug tracking
   5427    system that are known to be fixed in the 3.4.2 release. This list might
   5428    not be complete (that is, it is possible that some PRs that have been
   5429    fixed are not listed here).
   5430 
   5431     Bootstrap failures and issues
   5432 
   5433      * [170]16469 [mips-sgi-irix5.3] bootstrap fails in
   5434        libstdc++-v3/testsuite
   5435      * [171]16344 [hppa-linux-gnu] libstdc++'s PCH built by
   5436        profiledbootstrap does not work with the built compiler
   5437      * [172]16842 [Solaris/x86] mkheaders can not find mkheaders.conf
   5438 
   5439     Multi-platform internal compiler errors (ICEs)
   5440 
   5441      * [173]12608 (c++) ICE: expected class 't', have 'x' (error_mark) in
   5442        cp_parser_class_specifier, in cp/parser.c
   5443      * [174]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
   5444      * [175]15461 (c++) ICE due to NRV and inlining
   5445      * [176]15890 (c++) ICE in c_expand_expr, in c-common.c
   5446      * [177]16180 ICE: segmentation fault in RTL optimization
   5447      * [178]16224 (c++) ICE in write_unscoped_name (template/namespace)
   5448      * [179]16408 ICE: in delete_insn, in cfgrtl.c
   5449      * [180]16529 (c++) ICE for: namespace-alias shall not be declared as
   5450        the name of any other entity
   5451      * [181]16698 (c++) ICE with exceptions and declaration of __cxa_throw
   5452      * [182]16706 (c++) ICE in finish_member_declaration, in
   5453        cp/semantics.c
   5454      * [183]16810 (c++) Legal C++ program with cast gives ICE in
   5455        build_ptrmemfunc
   5456      * [184]16851 (c++) ICE when throwing a comma expression
   5457      * [185]16870 (c++) Boost.Spirit causes ICE in tsubst, in cp/pt.c
   5458      * [186]16904 (c++) ICE in finish_class_member_access_expr, in
   5459        cp/typeck.c
   5460      * [187]16905 (c++) ICE (segfault) with exceptions
   5461      * [188]16964 (c++) ICE in cp_parser_class_specifier due to
   5462        redefinition
   5463      * [189]17068 (c++) ICE: tree check: expected class 'd', have 'x'
   5464        (identifier_node) in dependent_template_p, in cp/pt.c
   5465 
   5466     Preprocessor bugs
   5467 
   5468      * [190]16366 Preprocessor option -remap causes memory corruption
   5469 
   5470     Optimization
   5471 
   5472      * [191]15345 unreferenced nested inline functions not optimized away
   5473      * [192]16590 Incorrect execution when compiling with -O2
   5474      * [193]16693 Bitwise AND is lost when used within a cast to an enum
   5475        of the same precision
   5476      * [194]17078 Jump into if(0) substatement fails
   5477 
   5478     Problems in generated debug information
   5479 
   5480      * [195]13956 incorrect stabs for nested local variables
   5481 
   5482     C front end bugs
   5483 
   5484      * [196]16684 GCC should not warn about redundant redeclarations of
   5485        built-ins
   5486 
   5487     C++ compiler and library
   5488 
   5489      * [197]12658 Thread safety problems in locale::global() and
   5490        locale::locale()
   5491      * [198]13092 g++ accepts invalid pointer-to-member conversion
   5492      * [199]15320 Excessive memory consumption
   5493      * [200]16246 Incorrect template argument deduction
   5494      * [201]16273 Memory exhausted when using nested classes and virtual
   5495        functions
   5496      * [202]16401 ostringstream in gcc 3.4.x very slow for big data
   5497      * [203]16411 undefined reference to
   5498        __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char>
   5499        >::file()
   5500      * [204]16489 G++ incorrectly rejects use of a null constant integral
   5501        expression as a null constant pointer
   5502      * [205]16618 offsetof fails with constant member
   5503      * [206]16637 syntax error reported for valid input code
   5504      * [207]16717 __attribute__((constructor)) broken in C++
   5505      * [208]16813 compiler error in DEBUG version of range insertion
   5506        std::map::insert
   5507      * [209]16853 pointer-to-member initialization from incompatible one
   5508        accepted
   5509      * [210]16889 ambiguity is not detected
   5510      * [211]16959 Segmentation fault in ios_base::sync_with_stdio
   5511 
   5512     Java compiler and library
   5513 
   5514      * [212]7587 direct threaded interpreter not thread-safe
   5515      * [213]16473 ServerSocket accept() leaks file descriptors
   5516      * [214]16478 Hash synchronization deadlock with finalizers
   5517 
   5518     Alpha-specific
   5519 
   5520      * [215]10695 ICE in dwarf2out_frame_debug_expr, in dwarf2out.c
   5521      * [216]16974 could not split insn (ice in final_scan_insn, in
   5522        final.c)
   5523 
   5524     x86-specific
   5525 
   5526      * [217]16298 ICE in output_operand
   5527      * [218]17113 ICE with SSE2 intrinsics
   5528 
   5529     x86-64 specific
   5530 
   5531      * [219]14697 libstdc++ couldn't find 32bit libgcc_s
   5532 
   5533     MIPS-specific
   5534 
   5535      * [220]15869 [mips64] No NOP after LW (with -mips1 -O0)
   5536      * [221]16325 [mips64] value profiling clobbers gp on mips
   5537      * [222]16357 [mipsisa64-elf] ICE copying 7 bytes between extern
   5538        char[]s
   5539      * [223]16380 [mips64] Use of uninitialised register after dbra
   5540        conversion
   5541      * [224]16407 [mips64] Unaligned access to local variables
   5542      * [225]16643 [mips64] verify_local_live_at_start ICE after
   5543        crossjumping & cfgcleanup
   5544 
   5545     ARM-specific
   5546 
   5547      * [226]15927 THUMB -O2: strength-reduced iteration variable ends up
   5548        off by 1
   5549      * [227]15948 THUMB: ICE with non-commutative cbranch
   5550      * [228]17019 THUMB: bad switch statement in md code for
   5551        addsi3_cbranch_scratch
   5552 
   5553     IA64-specific
   5554 
   5555      * [229]16130 ICE on valid code: in bundling, in config/ia64/ia64.c
   5556        (-mtune=merced)
   5557      * [230]16142 ICE on valid code: in bundling, in config/ia64/ia64.c
   5558        (-mtune=itanium)
   5559      * [231]16278 Gcc failed to build Linux kernel with -mtune=merced
   5560      * [232]16414 ICE on valid code: typo in comparison of asm_noperands
   5561        result
   5562      * [233]16445 ICE on valid code: don't count ignored insns
   5563      * [234]16490 ICE (segfault) while compiling with -fprofile-use
   5564      * [235]16683 ia64 does not honor SUBTARGET_EXTRA_SPECS
   5565 
   5566     PowerPC-specific
   5567 
   5568      * [236]16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x
   5569      * [237]16239 ICE on ppc64 (mozilla 1.7 compile, -O1 -fno-exceptions
   5570        issue)
   5571 
   5572     SPARC-specific
   5573 
   5574      * [238]16199 ICE while compiling apache 2.0.49
   5575      * [239]16416 -m64 doesn't imply -mcpu=v9 anymore
   5576      * [240]16430 ICE when returning non-C aggregates larger than 16 bytes
   5577 
   5578     Bugs specific to embedded processors
   5579 
   5580      * [241]16379 [m32r] can't output large model function call of memcpy
   5581      * [242]17093 [m32r] ICE with -msdata=use -O0
   5582      * [243]17119 [m32r] ICE at switch case 0x8000
   5583 
   5584     DJGPP-specific
   5585 
   5586      * [244]15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp
   5587 
   5588     Alpha Tru64-specific
   5589 
   5590      * [245]16210 libstdc++ gratuitously omits "long long" I/O
   5591 
   5592     Testsuite, documentation issues (compiler is not affected):
   5593 
   5594      * [246]15488 (libstdc++) possibly insufficient file permissions for
   5595        executing test suite
   5596      * [247]16250 ada/doctools runs makeinfo even in release tarball
   5597      __________________________________________________________________
   5598 
   5599 GCC 3.4.3
   5600 
   5601    This is the [248]list of problem reports (PRs) from GCC's bug tracking
   5602    system that are known to be fixed in the 3.4.3 release. This list might
   5603    not be complete (that is, it is possible that some PRs that have been
   5604    fixed are not listed here).
   5605 
   5606     Bootstrap failures
   5607 
   5608      * [249]17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1
   5609      * [250]17850 [arm-elf] bootstrap failure - libstdc++ uses strtold
   5610        when undeclared
   5611 
   5612     Internal compiler errors (ICEs) affecting multiple platforms
   5613 
   5614      * [251]13948 (java) GCJ segmentation fault while compiling GL4Java
   5615        .class files
   5616      * [252]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
   5617      * [253]16301 (c++) ICE when "strong" attribute is attached to a using
   5618        directive
   5619      * [254]16566 ICE with flexible arrays
   5620      * [255]17023 ICE with nested functions in parameter declaration
   5621      * [256]17027 ICE with noreturn function in loop at -O2
   5622      * [257]17524 ICE in grokdeclarator, in cp/decl.c
   5623      * [258]17826 (c++) ICE in cp_tree_equal
   5624 
   5625     C and optimization bugs
   5626 
   5627      * [259]15526 -ftrapv aborts on 0 * (-1)
   5628      * [260]16999 #ident stopped working
   5629      * [261]17503 quadratic behaviour in invalid_mode_change_p
   5630      * [262]17581 Long long arithmetic fails inside a switch/case
   5631        statement when compiled with -O2
   5632      * [263]18129 -fwritable-strings doesn't work
   5633 
   5634     C++ compiler and library bugs
   5635 
   5636      * [264]10975 incorrect initial ostringstream::tellp()
   5637      * [265]11722 Unbuffered filebuf::sgetn is slow
   5638      * [266]14534 Unrecognizing static function as a template parameter
   5639        when its return value is also templated
   5640      * [267]15172 Copy constructor optimization in aggregate
   5641        initialization
   5642      * [268]15786 Bad error message for frequently occuring error.
   5643      * [269]16162 Rejects valid member-template-definition
   5644      * [270]16612 empty basic_strings can't live in shared memory
   5645      * [271]16715 std::basic_iostream is instantiated when used, even
   5646        though instantiations are already contained in libstdc++
   5647      * [272]16848 code in /ext/demangle.h appears broken
   5648      * [273]17132 GCC fails to eliminate function template specialization
   5649        when argument deduction fails
   5650      * [274]17259 One more _S_leaf incorrectly qualified with _RopeRep::
   5651        in ropeimpl.h
   5652      * [275]17327 use of `enumeral_type' in template type unification
   5653      * [276]17393 "unused variable '._0'" warning with -Wall
   5654      * [277]17501 Confusion with member templates
   5655      * [278]17537 g++ not passing -lstdc++ to linker when all command line
   5656        arguments are libraries
   5657      * [279]17585 usage of unqualified name of static member from within
   5658        class not allowed
   5659      * [280]17821 Poor diagnostic for using "." instead of "->"
   5660      * [281]17829 wrong error: call of overloaded function is ambiguous
   5661      * [282]17851 Misleading diagnostic for invalid function declarations
   5662        with undeclared types
   5663      * [283]17976 Destructor is called twice
   5664      * [284]18020 rejects valid definition of enum value in template
   5665      * [285]18093 bogus conflict in namespace aliasing
   5666      * [286]18140 C++ parser bug when using >> in templates
   5667 
   5668     Fortran
   5669 
   5670      * [287]17541 data statements with double precision constants fail
   5671 
   5672     x86-specific
   5673 
   5674      * [288]17853 -O2 ICE for MMX testcase
   5675 
   5676     SPARC-specific
   5677 
   5678      * [289]17245 ICE compiling gsl-1.5 statistics/lag1.c
   5679 
   5680     Darwin-specific
   5681 
   5682      * [290]17167 FATAL:Symbol L_foo$stub already defined.
   5683 
   5684     AIX-specific
   5685 
   5686      * [291]17277 could not catch an exception when specified -maix64
   5687 
   5688     Solaris-specific
   5689 
   5690      * [292]17505 <cmath> calls acosf(), ceilf(), and other functions
   5691        missing from system libraries
   5692 
   5693     HP/UX specific:
   5694 
   5695      * [293]17684 /usr/ccs/bin/ld: Can't create libgcc_s.sl
   5696 
   5697     ARM-specific
   5698 
   5699      * [294]17384 ICE with mode attribute on structures
   5700 
   5701     MIPS-specific
   5702 
   5703      * [295]17770 No NOP after LWL with -mips1
   5704 
   5705     Other embedded target specific
   5706 
   5707      * [296]11476 [arc-elf] gcc ICE on newlib's vfprintf.c
   5708      * [297]14064 [avr-elf] -fdata-sections triggers ICE
   5709      * [298]14678 [m68hc11-elf] gcc ICE
   5710      * [299]15583 [powerpc-rtems] powerpc-rtems lacks __USE_INIT_FINI__
   5711      * [300]15790 [i686-coff] Alignment error building gcc with i686-coff
   5712        target
   5713      * [301]15886 [SH] Miscompilation with -O2 -fPIC
   5714      * [302]16884 [avr-elf] [fweb related] bug while initializing
   5715        variables
   5716 
   5717     Bugs relating to debugger support
   5718 
   5719      * [303]13841 missing debug info for _Complex function arguments
   5720      * [304]15860 [big-endian targets] No DW_AT_location debug info is
   5721        emitted for formal arguments to a function that uses "register"
   5722        qualifiers
   5723 
   5724     Testsuite issues (compiler not affected)
   5725 
   5726      * [305]17465 Testsuite in libffi overrides LD_LIBRARY_PATH
   5727      * [306]17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH
   5728      * [307]18138 [mips-sgi-irix6.5] libgcc_s.so.1 not found by 64-bit
   5729        testsuite
   5730 
   5731     Documentation
   5732 
   5733      * [308]15498 typo in gcc manual: non-existing locale example en_UK,
   5734        should be en_GB
   5735      * [309]15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap:
   5736        document broken shell
   5737      * [310]16406 USE_LD_AS_NEEDED undocumented
   5738      __________________________________________________________________
   5739 
   5740 GCC 3.4.4
   5741 
   5742    This is the [311]list of problem reports (PRs) from GCC's bug tracking
   5743    system that are known to be fixed in the 3.4.4 release. This list might
   5744    not be complete (that is, it is possible that some PRs that have been
   5745    fixed are not listed here).
   5746      __________________________________________________________________
   5747 
   5748 GCC 3.4.5
   5749 
   5750    This is the [312]list of problem reports (PRs) from GCC's bug tracking
   5751    system that are known to be fixed in the 3.4.5 release. This list might
   5752    not be complete (that is, it is possible that some PRs that have been
   5753    fixed are not listed here).
   5754 
   5755     Bootstrap issues
   5756 
   5757      * [313]24688 sco_math fixincl breaks math.h
   5758 
   5759     C compiler bugs
   5760 
   5761      * [314]17188 struct Foo { } redefinition
   5762      * [315]20187 wrong code for ((unsigned char)(unsigned long
   5763        long)((a?a:1)&(a*b)))?0:1)
   5764      * [316]21873 infinite warning loop on bad array initializer
   5765      * [317]21899 enum definition accepts values to be overriden
   5766      * [318]22061 ICE in find_function_data, in function.c
   5767      * [319]22308 Failure to diagnose violation of constraint 6.516p2
   5768      * [320]22458 ICE on missing brace
   5769      * [321]22589 ICE casting to long long
   5770      * [322]24101 Segfault with preprocessed source
   5771 
   5772     C++ compiler and library bugs
   5773 
   5774      * [323]10611 operations on vector mode not recognized in C++
   5775      * [324]13377 unexpected behavior of namespace usage directive
   5776      * [325]16002 Strange error message with new parser
   5777      * [326]17413 local classes as template argument
   5778      * [327]17609 spurious error message after using keyword
   5779      * [328]17618 ICE in cp_convert_to_pointer, in cp/cvt.c
   5780      * [329]18124 ICE with invalid template template parameter
   5781      * [330]18155 typedef in template declaration not rejected
   5782      * [331]18177 ICE with const_cast for undeclared variable
   5783      * [332]18368 C++ error message regression
   5784      * [333]16378 ICE when returning a copy of a packed member
   5785      * [334]18466 int ::i; accepted
   5786      * [335]18512 ICE on invalid usage of template base class
   5787      * [336]18454 ICE when returning undefined type
   5788      * [337]18738 typename not allowed with non-dependent qualified name
   5789      * [338]18803 rejects access to operator() in template
   5790      * [339]19004 ICE in uses_template_parms, in cp/pt.c
   5791      * [340]19208 Spurious error about variably modified type
   5792      * [341]18253 bad error message / ICE for invalid template parameter
   5793      * [342]19608 ICE after friend function definition in local class
   5794      * [343]19884 ICE on explicit instantiation of a non-template
   5795        constructor
   5796      * [344]20153 ICE when C++ template function contains anonymous union
   5797      * [345]20563 Infinite loop in diagnostic (and ice after error
   5798        message)
   5799      * [346]20789 ICE with incomplete type in template
   5800      * [347]21336 Internal compiler error when using custom new operators
   5801      * [348]21768 ICE in error message due to violation of coding
   5802        conventions
   5803      * [349]21853 constness of pointer to data member ignored
   5804      * [350]21903 Default argument of template function causes a
   5805        compile-time error
   5806      * [351]21983 multiple diagnostics
   5807      * [352]21987 New testsuite failure
   5808        g++.dg/warn/conversion-function-1.C
   5809      * [353]22153 ICE on invalid template specialization
   5810      * [354]22172 Internal compiler error, seg fault.
   5811      * [355]21286 filebuf::xsgetn vs pipes
   5812      * [356]22233 ICE with wrong number of template parameters
   5813      * [357]22508 ICE after invalid operator new
   5814      * [358]22545 ICE with pointer to class member & user defined
   5815        conversion operator
   5816      * [359]23528 Wrong default allocator in ext/hash_map
   5817      * [360]23550 char_traits requirements/1.cc test bad math
   5818      * [361]23586 Bad diagnostic for invalid namespace-name
   5819      * [362]23624 ICE in invert_truthvalue, in fold-const.c
   5820      * [363]23639 Bad error message: not a member of '<declaration error>'
   5821      * [364]23797 ICE on typename outside template
   5822      * [365]23965 Bogus error message: no matching function for call to
   5823        'foo(<type error>)'
   5824      * [366]24052 &#`label_decl' not supported by dump_expr#<expression
   5825        error>
   5826      * [367]24580 virtual base class cause exception not to be caught
   5827 
   5828     Problems in generated debug information
   5829 
   5830      * [368]24267 Bad DWARF for altivec vectors
   5831 
   5832     Optimizations issues
   5833 
   5834      * [369]17810 ICE in verify_local_live_at_start
   5835      * [370]17860 Wrong generated code for loop with varying bound
   5836      * [371]21709 ICE on compile-time complex NaN
   5837      * [372]21964 broken tail call at -O2 or more
   5838      * [373]22167 Strange optimization bug when using -Os
   5839      * [374]22619 Compilation failure for real_const_1.f and
   5840        real_const_2.f90
   5841      * [375]23241 Invalid code generated for comparison of uchar to 255
   5842      * [376]23478 Miscompilation due to reloading of a var that is also
   5843        used in EH pad
   5844      * [377]24470 segmentation fault in cc1plus when compiling with -O
   5845      * [378]24950 ICE in operand_subword_force
   5846 
   5847     Precompiled headers problems
   5848 
   5849      * [379]14400 Cannot compile qt-x11-free-3.3.0
   5850      * [380]14940 PCH largefile test fails on various platforms
   5851 
   5852     Preprocessor bugs
   5853 
   5854      * [381]20239 ICE on empty preprocessed input
   5855      * [382]15220 "gcc -E -MM -MG" reports missing system headers in
   5856        source directory
   5857 
   5858     Testsuite issues
   5859 
   5860      * [383]19275 gcc.dg/20020919-1.c fails with -fpic/-fPIC on
   5861        i686-pc-linux-gnu
   5862 
   5863     Alpha specific
   5864 
   5865      * [384]21888 bootstrap failure with linker relaxation enabled
   5866 
   5867     ARM specific
   5868 
   5869      * [385]15342 [arm-linux]: ICE in verify_local_live_at_start
   5870      * [386]23985 Memory aliasing information incorrect in inlined memcpy
   5871 
   5872     ColdFile specific
   5873 
   5874      * [387]16719 Illegal move of byte into address register causes
   5875        compiler to ICE
   5876 
   5877     HPPA specific
   5878 
   5879      * [388]21723 ICE while building libgfortran
   5880      * [389]21841 -mhp-ld/-mgnu-ld documentation
   5881 
   5882     IA-64 specific
   5883 
   5884      * [390]23644 IA-64 hardware models and configuration options
   5885        documentation error
   5886      * [391]24718 Shared libgcc not used for linking by default
   5887 
   5888     M68000 specific
   5889 
   5890      * [392]18421 ICE in reload_cse_simplify_operands, in postreload.c
   5891 
   5892     MIPS specific
   5893 
   5894      * [393]20621 ICE in change_address_1, in emit-rtl.c
   5895 
   5896     PowerPC and PowerPC64 specific
   5897 
   5898      * [394]18583 error on valid code: const
   5899        __attribute__((altivec(vector__))) doesn't work in arrays
   5900      * [395]20191 ICE in reload_cse_simplify_operands
   5901      * [396]22083 AIX: TARGET_C99_FUNCTIONS is wrongly defined
   5902      * [397]23070 CALL_V4_CLEAR_FP_ARGS flag not properly set
   5903      * [398]23404 gij trashes args of functions with more than 8 fp args
   5904      * [399]23539 C & C++ compiler generating misaligned references
   5905        regardless of compiler flags
   5906      * [400]24102 floatdisf2_internal2 broken
   5907      * [401]24465 -mminimal-toc miscompilation of __thread vars
   5908 
   5909     Solaris specific
   5910 
   5911      * [402]19933 Problem with define of HUGE_VAL in math_c99
   5912      * [403]21889 Native Solaris assembler cannot grok DTP-relative debug
   5913        symbols
   5914 
   5915     SPARC specific
   5916 
   5917      * [404]19300 PCH failures on sparc-linux
   5918      * [405]20301 Assembler labels have a leading "-"
   5919      * [406]20673 C PCH testsuite assembly comparison failure
   5920 
   5921     x86 and x86_64 specific
   5922 
   5923      * [407]18582 ICE with arrays of type V2DF
   5924      * [408]19340 Compilation SEGFAULTs with -O1 -fschedule-insns2
   5925        -fsched2-use-traces
   5926      * [409]21716 ICE in reg-stack.c's swap_rtx_condition
   5927      * [410]24315 amd64 fails -fpeephole2
   5928      __________________________________________________________________
   5929 
   5930 GCC 3.4.6
   5931 
   5932    This is the [411]list of problem reports (PRs) from GCC's bug tracking
   5933    system that are known to be fixed in the 3.4.6 release. This list might
   5934    not be complete (that is, it is possible that some PRs that have been
   5935    fixed are not listed here).
   5936 
   5937 
   5938     For questions related to the use of GCC, please consult these web
   5939     pages and the [412]GCC manuals. If that fails, the
   5940     [413]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   5941     web pages and the development of GCC are welcome on our developer
   5942     list at [414]gcc (a] gcc.gnu.org. All of [415]our lists have public
   5943     archives.
   5944 
   5945    Copyright (C) [416]Free Software Foundation, Inc. Verbatim copying and
   5946    distribution of this entire article is permitted in any medium,
   5947    provided this notice is preserved.
   5948 
   5949    These pages are [417]maintained by the GCC team. Last modified
   5950    2012-04-24[418].
   5951 
   5952 References
   5953 
   5954    1. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
   5955    2. http://gcc.gnu.org/gcc-3.4/changes.html#cplusplus
   5956    3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
   5957    4. http://gcc.gnu.org/gcc-3.4/changes.html#obsolete_systems
   5958    5. http://gcc.gnu.org/gcc-3.4/mips-abi.html
   5959    6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
   5960    7. http://www.boost.org/
   5961    8. http://gcc.gnu.org/PR11953
   5962    9. http://gcc.gnu.org/PR8361
   5963   10. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins
   5964   11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
   5965   12. http://gcc.gnu.org/bugs/#cxx_rvalbind
   5966   13. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
   5967   14. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
   5968   15. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
   5969   16. http://www.gnu.org/software/classpath/
   5970   17. http://www.eclipse.org/
   5971   18. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html
   5972   19. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html
   5973   20. http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51A_HTML/ARH9MBTE/DTMNPLTN.HTM#normal-argument-list-structure
   5974   21. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
   5975   22. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Comparison-of-the-two-descriptions.html
   5976   23. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
   5977   24. http://gcc.gnu.org/gcc-3.4/mips-abi.html
   5978   25. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
   5979   26. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
   5980   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
   5981   28. http://gcc.gnu.org/PR10129
   5982   29. http://gcc.gnu.org/PR14576
   5983   30. http://gcc.gnu.org/PR14760
   5984   31. http://gcc.gnu.org/PR14671
   5985   32. http://gcc.gnu.org/PR15093
   5986   33. http://gcc.gnu.org/PR15178
   5987   34. http://gcc.gnu.org/PR12753
   5988   35. http://gcc.gnu.org/PR13985
   5989   36. http://gcc.gnu.org/PR14810
   5990   37. http://gcc.gnu.org/PR14883
   5991   38. http://gcc.gnu.org/PR15044
   5992   39. http://gcc.gnu.org/PR15057
   5993   40. http://gcc.gnu.org/PR15064
   5994   41. http://gcc.gnu.org/PR15142
   5995   42. http://gcc.gnu.org/PR15159
   5996   43. http://gcc.gnu.org/PR15165
   5997   44. http://gcc.gnu.org/PR15193
   5998   45. http://gcc.gnu.org/PR15209
   5999   46. http://gcc.gnu.org/PR15227
   6000   47. http://gcc.gnu.org/PR15285
   6001   48. http://gcc.gnu.org/PR15299
   6002   49. http://gcc.gnu.org/PR15329
   6003   50. http://gcc.gnu.org/PR15550
   6004   51. http://gcc.gnu.org/PR15554
   6005   52. http://gcc.gnu.org/PR15640
   6006   53. http://gcc.gnu.org/PR15666
   6007   54. http://gcc.gnu.org/PR15696
   6008   55. http://gcc.gnu.org/PR15701
   6009   56. http://gcc.gnu.org/PR15761
   6010   57. http://gcc.gnu.org/PR15829
   6011   58. http://gcc.gnu.org/PR14538
   6012   59. http://gcc.gnu.org/PR12391
   6013   60. http://gcc.gnu.org/PR14649
   6014   61. http://gcc.gnu.org/PR15004
   6015   62. http://gcc.gnu.org/PR15749
   6016   63. http://gcc.gnu.org/PR10646
   6017   64. http://gcc.gnu.org/PR12077
   6018   65. http://gcc.gnu.org/PR13598
   6019   66. http://gcc.gnu.org/PR14211
   6020   67. http://gcc.gnu.org/PR14220
   6021   68. http://gcc.gnu.org/PR14245
   6022   69. http://gcc.gnu.org/PR14340
   6023   70. http://gcc.gnu.org/PR14600
   6024   71. http://gcc.gnu.org/PR14668
   6025   72. http://gcc.gnu.org/PR14775
   6026   73. http://gcc.gnu.org/PR14821
   6027   74. http://gcc.gnu.org/PR14930
   6028   75. http://gcc.gnu.org/PR14932
   6029   76. http://gcc.gnu.org/PR14950
   6030   77. http://gcc.gnu.org/PR14962
   6031   78. http://gcc.gnu.org/PR14975
   6032   79. http://gcc.gnu.org/PR15002
   6033   80. http://gcc.gnu.org/PR15025
   6034   81. http://gcc.gnu.org/PR15046
   6035   82. http://gcc.gnu.org/PR15069
   6036   83. http://gcc.gnu.org/PR15074
   6037   84. http://gcc.gnu.org/PR15083
   6038   85. http://gcc.gnu.org/PR15096
   6039   86. http://gcc.gnu.org/PR15287
   6040   87. http://gcc.gnu.org/PR15317
   6041   88. http://gcc.gnu.org/PR15337
   6042   89. http://gcc.gnu.org/PR15361
   6043   90. http://gcc.gnu.org/PR15412
   6044   91. http://gcc.gnu.org/PR15427
   6045   92. http://gcc.gnu.org/PR15471
   6046   93. http://gcc.gnu.org/PR15503
   6047   94. http://gcc.gnu.org/PR15507
   6048   95. http://gcc.gnu.org/PR15542
   6049   96. http://gcc.gnu.org/PR15565
   6050   97. http://gcc.gnu.org/PR15625
   6051   98. http://gcc.gnu.org/PR15629
   6052   99. http://gcc.gnu.org/PR15742
   6053  100. http://gcc.gnu.org/PR15775
   6054  101. http://gcc.gnu.org/PR15821
   6055  102. http://gcc.gnu.org/PR15862
   6056  103. http://gcc.gnu.org/PR15875
   6057  104. http://gcc.gnu.org/PR15877
   6058  105. http://gcc.gnu.org/PR15947
   6059  106. http://gcc.gnu.org/PR16020
   6060  107. http://gcc.gnu.org/PR16154
   6061  108. http://gcc.gnu.org/PR16174
   6062  109. http://gcc.gnu.org/PR14315
   6063  110. http://gcc.gnu.org/PR15151
   6064  111. http://gcc.gnu.org/PR7993
   6065  112. http://gcc.gnu.org/PR15228
   6066  113. http://gcc.gnu.org/PR15345
   6067  114. http://gcc.gnu.org/PR15945
   6068  115. http://gcc.gnu.org/PR15526
   6069  116. http://gcc.gnu.org/PR14690
   6070  117. http://gcc.gnu.org/PR15112
   6071  118. http://gcc.gnu.org/PR15067
   6072  119. http://gcc.gnu.org/PR1963
   6073  120. http://gcc.gnu.org/PR15717
   6074  121. http://gcc.gnu.org/PR14782
   6075  122. http://gcc.gnu.org/PR14828
   6076  123. http://gcc.gnu.org/PR15202
   6077  124. http://gcc.gnu.org/PR14610
   6078  125. http://gcc.gnu.org/PR14813
   6079  126. http://gcc.gnu.org/PR14857
   6080  127. http://gcc.gnu.org/PR15598
   6081  128. http://gcc.gnu.org/PR15653
   6082  129. http://gcc.gnu.org/PR15189
   6083  130. http://gcc.gnu.org/PR15331
   6084  131. http://gcc.gnu.org/PR16144
   6085  132. http://gcc.gnu.org/PR16176
   6086  133. http://gcc.gnu.org/PR11591
   6087  134. http://gcc.gnu.org/PR12028
   6088  135. http://gcc.gnu.org/PR14478
   6089  136. http://gcc.gnu.org/PR14567
   6090  137. http://gcc.gnu.org/PR14715
   6091  138. http://gcc.gnu.org/PR14902
   6092  139. http://gcc.gnu.org/PR14924
   6093  140. http://gcc.gnu.org/PR14960
   6094  141. http://gcc.gnu.org/PR15106
   6095  142. http://gcc.gnu.org/PR16026
   6096  143. http://gcc.gnu.org/PR15191
   6097  144. http://gcc.gnu.org/PR15662
   6098  145. http://gcc.gnu.org/PR15054
   6099  146. http://gcc.gnu.org/PR15783
   6100  147. http://gcc.gnu.org/PR15626
   6101  148. http://gcc.gnu.org/PR14326
   6102  149. http://gcc.gnu.org/PR14723
   6103  150. http://gcc.gnu.org/PR15290
   6104  151. http://gcc.gnu.org/PR15250
   6105  152. http://gcc.gnu.org/PR15551
   6106  153. http://gcc.gnu.org/PR8309
   6107  154. http://gcc.gnu.org/PR13250
   6108  155. http://gcc.gnu.org/PR13803
   6109  156. http://gcc.gnu.org/PR14093
   6110  157. http://gcc.gnu.org/PR14457
   6111  158. http://gcc.gnu.org/PR14542
   6112  159. http://gcc.gnu.org/PR15100
   6113  160. http://gcc.gnu.org/PR15296
   6114  161. http://gcc.gnu.org/PR15396
   6115  162. http://gcc.gnu.org/PR15782
   6116  163. http://gcc.gnu.org/PR11610
   6117  164. http://gcc.gnu.org/PR15488
   6118  165. http://gcc.gnu.org/PR15489
   6119  166. http://gcc.gnu.org/PR13928
   6120  167. http://gcc.gnu.org/PR14150
   6121  168. http://gcc.gnu.org/PR14949
   6122  169. http://gcc.gnu.org/PR15123
   6123  170. http://gcc.gnu.org/PR16469
   6124  171. http://gcc.gnu.org/PR16344
   6125  172. http://gcc.gnu.org/PR16842
   6126  173. http://gcc.gnu.org/PR12608
   6127  174. http://gcc.gnu.org/PR14492
   6128  175. http://gcc.gnu.org/PR15461
   6129  176. http://gcc.gnu.org/PR15890
   6130  177. http://gcc.gnu.org/PR16180
   6131  178. http://gcc.gnu.org/PR16224
   6132  179. http://gcc.gnu.org/PR16408
   6133  180. http://gcc.gnu.org/PR16529
   6134  181. http://gcc.gnu.org/PR16698
   6135  182. http://gcc.gnu.org/PR16706
   6136  183. http://gcc.gnu.org/PR16810
   6137  184. http://gcc.gnu.org/PR16851
   6138  185. http://gcc.gnu.org/PR16870
   6139  186. http://gcc.gnu.org/PR16904
   6140  187. http://gcc.gnu.org/PR16905
   6141  188. http://gcc.gnu.org/PR16964
   6142  189. http://gcc.gnu.org/PR17068
   6143  190. http://gcc.gnu.org/PR16366
   6144  191. http://gcc.gnu.org/PR15345
   6145  192. http://gcc.gnu.org/PR16590
   6146  193. http://gcc.gnu.org/PR16693
   6147  194. http://gcc.gnu.org/PR17078
   6148  195. http://gcc.gnu.org/PR13956
   6149  196. http://gcc.gnu.org/PR16684
   6150  197. http://gcc.gnu.org/PR12658
   6151  198. http://gcc.gnu.org/PR13092
   6152  199. http://gcc.gnu.org/PR15320
   6153  200. http://gcc.gnu.org/PR16246
   6154  201. http://gcc.gnu.org/PR16273
   6155  202. http://gcc.gnu.org/PR16401
   6156  203. http://gcc.gnu.org/PR16411
   6157  204. http://gcc.gnu.org/PR16489
   6158  205. http://gcc.gnu.org/PR16618
   6159  206. http://gcc.gnu.org/PR16637
   6160  207. http://gcc.gnu.org/PR16717
   6161  208. http://gcc.gnu.org/PR16813
   6162  209. http://gcc.gnu.org/PR16853
   6163  210. http://gcc.gnu.org/PR16889
   6164  211. http://gcc.gnu.org/PR16959
   6165  212. http://gcc.gnu.org/PR7587
   6166  213. http://gcc.gnu.org/PR16473
   6167  214. http://gcc.gnu.org/PR16478
   6168  215. http://gcc.gnu.org/PR10695
   6169  216. http://gcc.gnu.org/PR16974
   6170  217. http://gcc.gnu.org/PR16298
   6171  218. http://gcc.gnu.org/PR17113
   6172  219. http://gcc.gnu.org/PR14697
   6173  220. http://gcc.gnu.org/PR15869
   6174  221. http://gcc.gnu.org/PR16325
   6175  222. http://gcc.gnu.org/PR16357
   6176  223. http://gcc.gnu.org/PR16380
   6177  224. http://gcc.gnu.org/PR16407
   6178  225. http://gcc.gnu.org/PR16643
   6179  226. http://gcc.gnu.org/PR15927
   6180  227. http://gcc.gnu.org/PR15948
   6181  228. http://gcc.gnu.org/PR17019
   6182  229. http://gcc.gnu.org/PR16130
   6183  230. http://gcc.gnu.org/PR16142
   6184  231. http://gcc.gnu.org/PR16278
   6185  232. http://gcc.gnu.org/PR16414
   6186  233. http://gcc.gnu.org/PR16445
   6187  234. http://gcc.gnu.org/PR16490
   6188  235. http://gcc.gnu.org/PR16683
   6189  236. http://gcc.gnu.org/PR16195
   6190  237. http://gcc.gnu.org/PR16239
   6191  238. http://gcc.gnu.org/PR16199
   6192  239. http://gcc.gnu.org/PR16416
   6193  240. http://gcc.gnu.org/PR16430
   6194  241. http://gcc.gnu.org/PR16379
   6195  242. http://gcc.gnu.org/PR17093
   6196  243. http://gcc.gnu.org/PR17119
   6197  244. http://gcc.gnu.org/PR15928
   6198  245. http://gcc.gnu.org/PR16210
   6199  246. http://gcc.gnu.org/PR15488
   6200  247. http://gcc.gnu.org/PR16250
   6201  248. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.3
   6202  249. http://gcc.gnu.org/PR17369
   6203  250. http://gcc.gnu.org/PR17850
   6204  251. http://gcc.gnu.org/PR13948
   6205  252. http://gcc.gnu.org/PR14492
   6206  253. http://gcc.gnu.org/PR16301
   6207  254. http://gcc.gnu.org/PR16566
   6208  255. http://gcc.gnu.org/PR17023
   6209  256. http://gcc.gnu.org/PR17027
   6210  257. http://gcc.gnu.org/PR17524
   6211  258. http://gcc.gnu.org/PR17826
   6212  259. http://gcc.gnu.org/PR15526
   6213  260. http://gcc.gnu.org/PR16999
   6214  261. http://gcc.gnu.org/PR17503
   6215  262. http://gcc.gnu.org/PR17581
   6216  263. http://gcc.gnu.org/PR18129
   6217  264. http://gcc.gnu.org/PR10975
   6218  265. http://gcc.gnu.org/PR11722
   6219  266. http://gcc.gnu.org/PR14534
   6220  267. http://gcc.gnu.org/PR15172
   6221  268. http://gcc.gnu.org/PR15786
   6222  269. http://gcc.gnu.org/PR16162
   6223  270. http://gcc.gnu.org/PR16612
   6224  271. http://gcc.gnu.org/PR16715
   6225  272. http://gcc.gnu.org/PR16848
   6226  273. http://gcc.gnu.org/PR17132
   6227  274. http://gcc.gnu.org/PR17259
   6228  275. http://gcc.gnu.org/PR17327
   6229  276. http://gcc.gnu.org/PR17393
   6230  277. http://gcc.gnu.org/PR17501
   6231  278. http://gcc.gnu.org/PR17537
   6232  279. http://gcc.gnu.org/PR17585
   6233  280. http://gcc.gnu.org/PR17821
   6234  281. http://gcc.gnu.org/PR17829
   6235  282. http://gcc.gnu.org/PR17851
   6236  283. http://gcc.gnu.org/PR17976
   6237  284. http://gcc.gnu.org/PR18020
   6238  285. http://gcc.gnu.org/PR18093
   6239  286. http://gcc.gnu.org/PR18140
   6240  287. http://gcc.gnu.org/PR17541
   6241  288. http://gcc.gnu.org/PR17853
   6242  289. http://gcc.gnu.org/PR17245
   6243  290. http://gcc.gnu.org/PR17167
   6244  291. http://gcc.gnu.org/PR17277
   6245  292. http://gcc.gnu.org/PR17505
   6246  293. http://gcc.gnu.org/PR17684
   6247  294. http://gcc.gnu.org/PR17384
   6248  295. http://gcc.gnu.org/PR17770
   6249  296. http://gcc.gnu.org/PR11476
   6250  297. http://gcc.gnu.org/PR14064
   6251  298. http://gcc.gnu.org/PR14678
   6252  299. http://gcc.gnu.org/PR15583
   6253  300. http://gcc.gnu.org/PR15790
   6254  301. http://gcc.gnu.org/PR15886
   6255  302. http://gcc.gnu.org/PR16884
   6256  303. http://gcc.gnu.org/PR13841
   6257  304. http://gcc.gnu.org/PR15860
   6258  305. http://gcc.gnu.org/PR17465
   6259  306. http://gcc.gnu.org/PR17469
   6260  307. http://gcc.gnu.org/PR18138
   6261  308. http://gcc.gnu.org/PR15498
   6262  309. http://gcc.gnu.org/PR15747
   6263  310. http://gcc.gnu.org/PR16406
   6264  311. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.4
   6265  312. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.5
   6266  313. http://gcc.gnu.org/PR24688
   6267  314. http://gcc.gnu.org/PR17188
   6268  315. http://gcc.gnu.org/PR20187
   6269  316. http://gcc.gnu.org/PR21873
   6270  317. http://gcc.gnu.org/PR21899
   6271  318. http://gcc.gnu.org/PR22061
   6272  319. http://gcc.gnu.org/PR22208
   6273  320. http://gcc.gnu.org/PR22458
   6274  321. http://gcc.gnu.org/PR22589
   6275  322. http://gcc.gnu.org/PR24101
   6276  323. http://gcc.gnu.org/PR10611
   6277  324. http://gcc.gnu.org/PR13377
   6278  325. http://gcc.gnu.org/PR16002
   6279  326. http://gcc.gnu.org/PR17413
   6280  327. http://gcc.gnu.org/PR17609
   6281  328. http://gcc.gnu.org/PR17618
   6282  329. http://gcc.gnu.org/PR18124
   6283  330. http://gcc.gnu.org/PR18155
   6284  331. http://gcc.gnu.org/PR18177
   6285  332. http://gcc.gnu.org/PR18368
   6286  333. http://gcc.gnu.org/PR18378
   6287  334. http://gcc.gnu.org/PR18466
   6288  335. http://gcc.gnu.org/PR18512
   6289  336. http://gcc.gnu.org/PR18545
   6290  337. http://gcc.gnu.org/PR18738
   6291  338. http://gcc.gnu.org/PR18803
   6292  339. http://gcc.gnu.org/PR19004
   6293  340. http://gcc.gnu.org/PR19208
   6294  341. http://gcc.gnu.org/PR19253
   6295  342. http://gcc.gnu.org/PR19608
   6296  343. http://gcc.gnu.org/PR19884
   6297  344. http://gcc.gnu.org/PR20153
   6298  345. http://gcc.gnu.org/PR20563
   6299  346. http://gcc.gnu.org/PR20789
   6300  347. http://gcc.gnu.org/PR21336
   6301  348. http://gcc.gnu.org/PR21768
   6302  349. http://gcc.gnu.org/PR21853
   6303  350. http://gcc.gnu.org/PR21903
   6304  351. http://gcc.gnu.org/PR21983
   6305  352. http://gcc.gnu.org/PR21987
   6306  353. http://gcc.gnu.org/PR22153
   6307  354. http://gcc.gnu.org/PR22172
   6308  355. http://gcc.gnu.org/PR21286
   6309  356. http://gcc.gnu.org/PR22233
   6310  357. http://gcc.gnu.org/PR22508
   6311  358. http://gcc.gnu.org/PR22545
   6312  359. http://gcc.gnu.org/PR23528
   6313  360. http://gcc.gnu.org/PR23550
   6314  361. http://gcc.gnu.org/PR23586
   6315  362. http://gcc.gnu.org/PR23624
   6316  363. http://gcc.gnu.org/PR23639
   6317  364. http://gcc.gnu.org/PR23797
   6318  365. http://gcc.gnu.org/PR23965
   6319  366. http://gcc.gnu.org/PR24052
   6320  367. http://gcc.gnu.org/PR24580
   6321  368. http://gcc.gnu.org/PR24267
   6322  369. http://gcc.gnu.org/PR17810
   6323  370. http://gcc.gnu.org/PR17860
   6324  371. http://gcc/gnu.org/PR21709
   6325  372. http://gcc.gnu.org/PR21964
   6326  373. http://gcc.gnu.org/PR22167
   6327  374. http://gcc.gnu.org/PR22619
   6328  375. http://gcc.gnu.org/PR23241
   6329  376. http://gcc.gnu.org/PR23478
   6330  377. http://gcc.gnu.org/PR24470
   6331  378. http://gcc.gnu.org/PR24950
   6332  379. http://gcc.gnu.org/PR14400
   6333  380. http://gcc.gnu.org/PR14940
   6334  381. http://gcc.gnu.org/PR20239
   6335  382. http://gcc.gnu.org/PR15220
   6336  383. http://gcc.gnu.org/PR19275
   6337  384. http://gcc.gnu.org/PR21888
   6338  385. http://gcc.gnu.org/PR15342
   6339  386. http://gcc.gnu.org/PR23985
   6340  387. http://gcc.gnu.org/PR16719
   6341  388. http://gcc.gnu.org/PR21723
   6342  389. http://gcc.gnu.org/PR21841
   6343  390. http://gcc.gnu.org/PR23644
   6344  391. http://gcc.gnu.org/PR24718
   6345  392. http://gcc.gnu.org/PR18421
   6346  393. http://gcc.gnu.org/PR20621
   6347  394. http://gcc.gnu.org/PR18583
   6348  395. http://gcc.gnu.org/PR20191
   6349  396. http://gcc.gnu.org/PR22083
   6350  397. http://gcc.gnu.org/PR23070
   6351  398. http://gcc.gnu.org/PR23404
   6352  399. http://gcc.gnu.org/PR23539
   6353  400. http://gcc.gnu.org/PR24102
   6354  401. http://gcc.gnu.org/PR24465
   6355  402. http://gcc.gnu.org/PR19933
   6356  403. http://gcc.gnu.org/PR21889
   6357  404. http://gcc.gnu.org/PR19300
   6358  405. http://gcc.gnu.org/PR20301
   6359  406. http://gcc.gnu.org/PR20673
   6360  407. http://gcc.gnu.org/PR18582
   6361  408. http://gcc.gnu.org/PR19340
   6362  409. http://gcc.gnu.org/PR21716
   6363  410. http://gcc.gnu.org/PR24315
   6364  411. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6
   6365  412. http://gcc.gnu.org/onlinedocs/
   6366  413. mailto:gcc-help (a] gcc.gnu.org
   6367  414. mailto:gcc (a] gcc.gnu.org
   6368  415. http://gcc.gnu.org/lists.html
   6369  416. http://www.fsf.org/
   6370  417. http://gcc.gnu.org/about.html
   6371  418. http://validator.w3.org/check/referer
   6372 ======================================================================
   6373 http://gcc.gnu.org/gcc-3.3/index.html
   6374 
   6375                              GCC 3.3 Release Series
   6376 
   6377    May 03, 2005
   6378 
   6379    The [1]GNU project and the GCC developers are pleased to announce the
   6380    release of GCC 3.3.6.
   6381 
   6382    This release is a bug-fix release, containing fixes for regressions in
   6383    GCC 3.3.5 relative to previous releases of GCC.
   6384 
   6385    This release is the last of the series 3.3.x.
   6386 
   6387    The GCC 3.3 release series includes numerous [2]new features,
   6388    improvements, bug fixes, and other changes, thanks to an [3]amazing
   6389    group of volunteers.
   6390 
   6391 Release History
   6392 
   6393    GCC 3.3.6
   6394           May 3, 2005 ([4]changes)
   6395 
   6396    GCC 3.3.5
   6397           September 30, 2004 ([5]changes)
   6398 
   6399    GCC 3.3.4
   6400           May 31, 2004 ([6]changes)
   6401 
   6402    GCC 3.3.3
   6403           February 14, 2004 ([7]changes)
   6404 
   6405    GCC 3.3.2
   6406           October 16, 2003 ([8]changes)
   6407 
   6408    GCC 3.3.1
   6409           August 8, 2003 ([9]changes)
   6410 
   6411    GCC 3.3
   6412           May 14, 2003 ([10]changes)
   6413 
   6414 References and Acknowledgements
   6415 
   6416    GCC used to stand for the GNU C Compiler, but since the compiler
   6417    supports several other languages aside from C, it now stands for the
   6418    GNU Compiler Collection.
   6419 
   6420    A list of [11]successful builds is updated as new information becomes
   6421    available.
   6422 
   6423    The GCC developers would like to thank the numerous people that have
   6424    contributed new features, improvements, bug fixes, and other changes as
   6425    well as test results to GCC. This [12]amazing group of volunteers is
   6426    what makes GCC successful.
   6427 
   6428    For additional information about GCC please refer to the [13]GCC
   6429    project web site or contact the [14]GCC development mailing list.
   6430 
   6431    To obtain GCC please use [15]our mirror sites, or our CVS server.
   6432 
   6433 
   6434     For questions related to the use of GCC, please consult these web
   6435     pages and the [16]GCC manuals. If that fails, the
   6436     [17]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   6437     web pages and the development of GCC are welcome on our developer
   6438     list at [18]gcc (a] gcc.gnu.org. All of [19]our lists have public
   6439     archives.
   6440 
   6441    Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
   6442    distribution of this entire article is permitted in any medium,
   6443    provided this notice is preserved.
   6444 
   6445    These pages are [21]maintained by the GCC team. Last modified
   6446    2011-04-25[22].
   6447 
   6448 References
   6449 
   6450    1. http://www.gnu.org/
   6451    2. http://gcc.gnu.org/gcc-3.3/changes.html
   6452    3. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   6453    4. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
   6454    5. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.5
   6455    6. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.4
   6456    7. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.3
   6457    8. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.2
   6458    9. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.1
   6459   10. http://gcc.gnu.org/gcc-3.3/changes.html
   6460   11. http://gcc.gnu.org/gcc-3.3/buildstat.html
   6461   12. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   6462   13. http://gcc.gnu.org/index.html
   6463   14. mailto:gcc (a] gcc.gnu.org
   6464   15. http://gcc.gnu.org/mirrors.html
   6465   16. http://gcc.gnu.org/onlinedocs/
   6466   17. mailto:gcc-help (a] gcc.gnu.org
   6467   18. mailto:gcc (a] gcc.gnu.org
   6468   19. http://gcc.gnu.org/lists.html
   6469   20. http://www.fsf.org/
   6470   21. http://gcc.gnu.org/about.html
   6471   22. http://validator.w3.org/check/referer
   6472 ======================================================================
   6473 http://gcc.gnu.org/gcc-3.3/changes.html
   6474 
   6475                              GCC 3.3 Release Series
   6476                         Changes, New Features, and Fixes
   6477 
   6478    The latest release in the 3.3 release series is [1]GCC 3.3.6.
   6479 
   6480 Caveats
   6481 
   6482      * The preprocessor no longer accepts multi-line string literals. They
   6483        were deprecated in 3.0, 3.1, and 3.2.
   6484      * The preprocessor no longer supports the -A- switch when appearing
   6485        alone. -A- followed by an assertion is still supported.
   6486      * Support for all the systems [2]obsoleted in GCC 3.1 has been
   6487        removed from GCC 3.3. See below for a [3]list of systems which are
   6488        obsoleted in this release.
   6489      * Checking for null format arguments has been decoupled from the rest
   6490        of the format checking mechanism. Programs which use the format
   6491        attribute may regain this functionality by using the new [4]nonnull
   6492        function attribute. Note that all functions for which GCC has a
   6493        built-in format attribute, an appropriate built-in nonnull
   6494        attribute is also applied.
   6495      * The DWARF (version 1) debugging format has been deprecated and will
   6496        be removed in a future version of GCC. Version 2 of the DWARF
   6497        debugging format will continue to be supported for the foreseeable
   6498        future.
   6499      * The C and Objective-C compilers no longer accept the "Naming Types"
   6500        extension (typedef foo = bar); it was already unavailable in C++.
   6501        Code which uses it will need to be changed to use the "typeof"
   6502        extension instead: typedef typeof(bar) foo. (We have removed this
   6503        extension without a period of deprecation because it has caused the
   6504        compiler to crash since version 3.0 and no one noticed until very
   6505        recently. Thus we conclude it is not in widespread use.)
   6506      * The -traditional C compiler option has been removed. It was
   6507        deprecated in 3.1 and 3.2. (Traditional preprocessing remains
   6508        available.) The <varargs.h> header, used for writing variadic
   6509        functions in traditional C, still exists but will produce an error
   6510        message if used.
   6511      * GCC 3.3.1 automatically places zero-initialized variables in the
   6512        .bss section on some operating systems. Versions of GNU Emacs up to
   6513        (and including) 21.3 will not work correctly when using this
   6514        optimization; you can use -fno-zero-initialized-in-bss to disable
   6515        it.
   6516 
   6517 General Optimizer Improvements
   6518 
   6519      * A new scheme for accurately describing processor pipelines, the
   6520        [5]DFA scheduler, has been added.
   6521      * Pavel Nejedly, Charles University Prague, has contributed new file
   6522        format used by the edge coverage profiler (-fprofile-arcs).
   6523        The new format is robust and diagnoses common mistakes where
   6524        profiles from different versions (or compilations) of the program
   6525        are combined resulting in nonsensical profiles and slow code to
   6526        produced with profile feedback. Additionally this format allows
   6527        extra data to be gathered. Currently, overall statistics are
   6528        produced helping optimizers to identify hot spots of a program
   6529        globally replacing the old intra-procedural scheme and resulting in
   6530        better code. Note that the gcov tool from older GCC versions will
   6531        not be able to parse the profiles generated by GCC 3.3 and vice
   6532        versa.
   6533      * Jan Hubicka, SuSE Labs, has contributed a new superblock formation
   6534        pass enabled using -ftracer. This pass simplifies the control flow
   6535        of functions allowing other optimizations to do better job.
   6536        He also contributed the function reordering pass
   6537        (-freorder-functions) to optimize function placement using profile
   6538        feedback.
   6539 
   6540 New Languages and Language specific improvements
   6541 
   6542   C/ObjC/C++
   6543 
   6544      * The preprocessor now accepts directives within macro arguments. It
   6545        processes them just as if they had not been within macro arguments.
   6546      * The separate ISO and traditional preprocessors have been completely
   6547        removed. The front end handles either type of preprocessed output
   6548        if necessary.
   6549      * In C99 mode preprocessor arithmetic is done in the precision of the
   6550        target's intmax_t, as required by that standard.
   6551      * The preprocessor can now copy comments inside macros to the output
   6552        file when the macro is expanded. This feature, enabled using the
   6553        -CC option, is intended for use by applications which place
   6554        metadata or directives inside comments, such as lint.
   6555      * The method of constructing the list of directories to be searched
   6556        for header files has been revised. If a directory named by a -I
   6557        option is a standard system include directory, the option is
   6558        ignored to ensure that the default search order for system
   6559        directories and the special treatment of system header files are
   6560        not defeated.
   6561      * A few more [6]ISO C99 features now work correctly.
   6562      * A new function attribute, nonnull, has been added which allows
   6563        pointer arguments to functions to be specified as requiring a
   6564        non-null value. The compiler currently uses this information to
   6565        issue a warning when it detects a null value passed in such an
   6566        argument slot.
   6567      * A new type attribute, may_alias, has been added. Accesses to
   6568        objects with types with this attribute are not subjected to
   6569        type-based alias analysis, but are instead assumed to be able to
   6570        alias any other type of objects, just like the char type.
   6571 
   6572   C++
   6573 
   6574      * Type based alias analysis has been implemented for C++ aggregate
   6575        types.
   6576 
   6577   Objective-C
   6578 
   6579      * Generate an error if Objective-C objects are passed by value in
   6580        function and method calls.
   6581      * When -Wselector is used, check the whole list of selectors at the
   6582        end of compilation, and emit a warning if a @selector() is not
   6583        known.
   6584      * Define __NEXT_RUNTIME__ when compiling for the NeXT runtime.
   6585      * No longer need to include objc/objc-class.h to compile self calls
   6586        in class methods (NeXT runtime only).
   6587      * New -Wundeclared-selector option.
   6588      * Removed selector bloating which was causing object files to be 10%
   6589        bigger on average (GNU runtime only).
   6590      * Using at run time @protocol() objects has been fixed in certain
   6591        situations (GNU runtime only).
   6592      * Type checking has been fixed and improved in many situations
   6593        involving protocols.
   6594 
   6595   Java
   6596 
   6597      * The java.sql and javax.sql packages now implement the JDBC 3.0 (JDK
   6598        1.4) API.
   6599      * The JDK 1.4 assert facility has been implemented.
   6600      * The bytecode interpreter is now direct threaded and thus faster.
   6601 
   6602   Fortran
   6603 
   6604      * Fortran improvements are listed in [7]the Fortran documentation.
   6605 
   6606   Ada
   6607 
   6608      * Ada tasking now works with glibc 2.3.x threading libraries.
   6609 
   6610 New Targets and Target Specific Improvements
   6611 
   6612      * The following changes have been made to the HP-PA port:
   6613           + The port now defaults to scheduling for the PA8000 series of
   6614             processors.
   6615           + Scheduling support for the PA7300 processor has been added.
   6616           + The 32-bit port now supports weak symbols under HP-UX 11.
   6617           + The handling of initializers and finalizers has been improved
   6618             under HP-UX 11. The 64-bit port no longer uses collect2.
   6619           + Dwarf2 EH support has been added to the 32-bit GNU/Linux port.
   6620           + ABI fixes to correct the passing of small structures by value.
   6621      * The SPARC, HP-PA, SH4, and x86/pentium ports have been converted to
   6622        use the DFA processor pipeline description.
   6623      * The following NetBSD configurations for the SuperH processor family
   6624        have been added:
   6625           + SH3, big-endian, sh-*-netbsdelf*
   6626           + SH3, little-endian, shle-*-netbsdelf*
   6627           + SH5, SHmedia, big-endian, 32-bit default, sh5-*-netbsd*
   6628           + SH5, SHmedia, little-endian, 32-bit default, sh5le-*-netbsd*
   6629           + SH5, SHmedia, big-endian, 64-bit default, sh64-*-netbsd*
   6630           + SH5, SHmedia, little-endian, 64-bit default, sh64le-*-netbsd*
   6631      * The following changes have been made to the IA-32/x86-64 port:
   6632           + SSE2 and 3dNOW! intrinsics are now supported.
   6633           + Support for thread local storage has been added to the IA-32
   6634             and x86-64 ports.
   6635           + The x86-64 port has been significantly improved.
   6636      * The following changes have been made to the MIPS port:
   6637           + All configurations now accept the -mabi switch. Note that you
   6638             will need appropriate multilibs for this option to work
   6639             properly.
   6640           + ELF configurations will always pass an ABI flag to the
   6641             assembler, except when the MIPS EABI is selected.
   6642           + -mabi=64 no longer selects MIPS IV code.
   6643           + The -mcpu option, which was deprecated in 3.1 and 3.2, has
   6644             been removed from this release.
   6645           + -march now changes the core ISA level. In previous releases,
   6646             it would change the use of processor-specific extensions, but
   6647             would leave the core ISA unchanged. For example, mips64-elf
   6648             -march=r8000 will now generate MIPS IV code.
   6649           + Under most configurations, -mipsN now acts as a synonym for
   6650             -march.
   6651           + There are some new preprocessor macros to describe the -march
   6652             and -mtune settings. See the documentation of those options
   6653             for details.
   6654           + Support for the NEC VR-Series processors has been added. This
   6655             includes the 54xx, 5500, and 41xx series.
   6656           + Support for the Sandcraft sr71k processor has been added.
   6657      * The following changes have been made to the S/390 port:
   6658           + Support to build the Java runtime libraries has been added.
   6659             Java is now enabled by default on s390-*-linux* and
   6660             s390x-*-linux* targets.
   6661           + Multilib support for the s390x-*-linux* target has been added;
   6662             this allows to build 31-bit binaries using the -m31 option.
   6663           + Support for thread local storage has been added.
   6664           + Inline assembler code may now use the 'Q' constraint to
   6665             specify memory operands without index register.
   6666           + Various platform-specific performance improvements have been
   6667             implemented; in particular, the compiler now uses the BRANCH
   6668             ON COUNT family of instructions and makes more frequent use of
   6669             the TEST UNDER MASK family of instructions.
   6670      * The following changes have been made to the PowerPC port:
   6671           + Support for IBM Power4 processor added.
   6672           + Support for Motorola e500 SPE added.
   6673           + Support for AIX 5.2 added.
   6674           + Function and Data sections now supported on AIX.
   6675           + Sibcall optimizations added.
   6676      * The support for H8 Tiny is added to the H8/300 port with -mn.
   6677 
   6678 Obsolete Systems
   6679 
   6680    Support for a number of older systems has been declared obsolete in GCC
   6681    3.3. Unless there is activity to revive them, the next release of GCC
   6682    will have their sources permanently removed.
   6683 
   6684    All configurations of the following processor architectures have been
   6685    declared obsolete:
   6686      * Matsushita MN10200, mn10200-*-*
   6687      * Motorola 88000, m88k-*-*
   6688      * IBM ROMP, romp-*-*
   6689 
   6690    Also, some individual systems have been obsoleted:
   6691      * Alpha
   6692           + Interix, alpha*-*-interix*
   6693           + Linux libc1, alpha*-*-linux*libc1*
   6694           + Linux ECOFF, alpha*-*-linux*ecoff*
   6695      * ARM
   6696           + Generic a.out, arm*-*-aout*
   6697           + Conix, arm*-*-conix*
   6698           + "Old ABI," arm*-*-oabi
   6699           + StrongARM/COFF, strongarm-*-coff*
   6700      * HPPA (PA-RISC)
   6701           + Generic OSF, hppa1.0-*-osf*
   6702           + Generic BSD, hppa1.0-*-bsd*
   6703           + HP/UX versions 7, 8, and 9, hppa1.[01]-*-hpux[789]*
   6704           + HiUX, hppa*-*-hiux*
   6705           + Mach Lites, hppa*-*-lites*
   6706      * Intel 386 family
   6707           + Windows NT 3.x, i?86-*-win32
   6708      * MC68000 family
   6709           + HP systems, m68000-hp-bsd* and m68k-hp-bsd*
   6710           + Sun systems, m68000-sun-sunos*, m68k-sun-sunos*, and
   6711             m68k-sun-mach*
   6712           + AT&T systems, m68000-att-sysv*
   6713           + Atari systems, m68k-atari-sysv*
   6714           + Motorola systems, m68k-motorola-sysv*
   6715           + NCR systems, m68k-ncr-sysv*
   6716           + Plexus systems, m68k-plexus-sysv*
   6717           + Commodore systems, m68k-cbm-sysv*
   6718           + Citicorp TTI, m68k-tti-*
   6719           + Unos, m68k-crds-unos*
   6720           + Concurrent RTU, m68k-ccur-rtu*
   6721           + Linux a.out, m68k-*-linux*aout*
   6722           + Linux libc1, m68k-*-linux*libc1*
   6723           + pSOS, m68k-*-psos*
   6724      * MIPS
   6725           + Generic ECOFF, mips*-*-ecoff*
   6726           + SINIX, mips-sni-sysv4
   6727           + Orion RTEMS, mips64orion-*-rtems*
   6728      * National Semiconductor 32000
   6729           + OpenBSD, ns32k-*-openbsd*
   6730      * POWER (aka RS/6000) and PowerPC
   6731           + AIX versions 1, 2, and 3, rs6000-ibm-aix[123]*
   6732           + Bull BOSX, rs6000-bull-bosx
   6733           + Generic Mach, rs6000-*-mach*
   6734           + Generic SysV, powerpc*-*-sysv*
   6735           + Linux libc1, powerpc*-*-linux*libc1*
   6736      * Sun SPARC
   6737           + Generic a.out, sparc-*-aout*, sparclet-*-aout*,
   6738             sparclite-*-aout*, and sparc86x-*-aout*
   6739           + NetBSD a.out, sparc-*-netbsd*aout*
   6740           + Generic BSD, sparc-*-bsd*
   6741           + ChorusOS, sparc-*-chorusos*
   6742           + Linux a.out, sparc-*-linux*aout*
   6743           + Linux libc1, sparc-*-linux*libc1*
   6744           + LynxOS, sparc-*-lynxos*
   6745           + Solaris on HAL hardware, sparc-hal-solaris2*
   6746           + SunOS versions 3 and 4, sparc-*-sunos[34]*
   6747      * NEC V850
   6748           + RTEMS, v850-*-rtems*
   6749      * VAX
   6750           + VMS, vax-*-vms*
   6751 
   6752 Documentation improvements
   6753 
   6754 Other significant improvements
   6755 
   6756      * Almost all front-end dependencies in the compiler have been
   6757        separated out into a set of language hooks. This should make adding
   6758        a new front end clearer and easier.
   6759      * One effect of removing the separate preprocessor is a small
   6760        increase in the robustness of the compiler in general, and the
   6761        maintainability of target descriptions. Previously target-specific
   6762        built-in macros and others, such as __FAST_MATH__, had to be
   6763        handled with so-called specs that were hard to maintain. Often they
   6764        would fail to behave properly when conflicting options were
   6765        supplied on the command line, and define macros in the user's
   6766        namespace even when strict ISO compliance was requested.
   6767        Integrating the preprocessor has cleanly solved these issues.
   6768      * The Makefile suite now supports redirection of make install by
   6769        means of the variable DESTDIR.
   6770      __________________________________________________________________
   6771 
   6772 GCC 3.3
   6773 
   6774    Detailed release notes for the GCC 3.3 release follow.
   6775 
   6776   Bug Fixes
   6777 
   6778     bootstrap failures
   6779 
   6780      * [8]10140 cross compiler build failures: missing __mempcpy (DUP:
   6781        [9]10198,[10]10338)
   6782 
   6783     Internal compiler errors (multi-platform)
   6784 
   6785      * [11]3581 large string causes segmentation fault in cc1
   6786      * [12]4382 __builtin_{set,long}jmp with -O3 can crash the compiler
   6787      * [13]5533 (c++) ICE when processing std::accumulate(begin, end,
   6788        init, invalid_op)
   6789      * [14]6387 -fpic -gdwarf-2 -g1 combination gives ICE in dwarf2out
   6790      * [15]6412 (c++) ICE in retrieve_specialization
   6791      * [16]6620 (c++) partial template specialization causes an ICE
   6792        (segmentation fault)
   6793      * [17]6663 (c++) ICE with attribute aligned
   6794      * [18]7068 ICE with incomplete types
   6795      * [19]7083 (c++) ICE using -gstabs with dodgy class derivation
   6796      * [20]7647 (c++) ICE when data member has the name of the enclosing
   6797        class
   6798      * [21]7675 ICE in fixup_var_refs_1
   6799      * [22]7718 'complex' template instantiation causes ICE
   6800      * [23]8116 (c++) ICE in member template function
   6801      * [24]8358 (ada) Ada compiler accesses freed memory, crashes
   6802      * [25]8511 (c++) ICE: (hopefully) reproducible cc1plus segmentation
   6803        fault
   6804      * [26]8564 (c++) ICE in find_function_data, in function.c
   6805      * [27]8660 (c++) template overloading ICE in tsubst_expr, in cp/pt.c
   6806      * [28]8766 (c++) ICE after failed initialization of static template
   6807        variable
   6808      * [29]8803 ICE in instantiate_virtual_regs_1, in function.c
   6809      * [30]8846 (c++) ICE after diagnostic if fr_FR@euro locale is set
   6810      * [31]8906 (c++) ICE (Segmentation fault) when parsing nested-class
   6811        definition
   6812      * [32]9216 (c++) ICE on missing template parameter
   6813      * [33]9261 (c++) ICE in arg_assoc, in cp/decl2.c
   6814      * [34]9263 (fortran) ICE caused by invalid PARAMETER in implied DO
   6815        loop
   6816      * [35]9429 (c++) ICE in template instantiation with a pointered new
   6817        operator
   6818      * [36]9516 Internal error when using a big array
   6819      * [37]9600 (c++) ICE with typedefs in template class
   6820      * [38]9629 (c++) virtual inheritance segfault
   6821      * [39]9672 (c++) ICE: Error reporting routines re-entered
   6822      * [40]9749 (c++) ICE in write_expression on invalid function
   6823        prototype
   6824      * [41]9794 (fortran) ICE: floating point exception during constant
   6825        folding
   6826      * [42]9829 (c++) Missing colon in nested namespace usage causes ICE
   6827      * [43]9916 (c++) ICE with noreturn function in ?: statement
   6828      * [44]9936 ICE with local function and variable-length 2d array
   6829      * [45]10262 (c++) cc1plus crashes with large generated code
   6830      * [46]10278 (c++) ICE in parser for invalid code
   6831      * [47]10446 (c++) ICE on definition of nonexistent member function of
   6832        nested class in a class template
   6833      * [48]10451 (c++) ICE in grokdeclarator on spurious mutable
   6834        declaration
   6835      * [49]10506 (c++) ICE in build_new at cp/init.c with
   6836        -fkeep-inline-functions and multiple inheritance
   6837      * [50]10549 (c++) ICE in store_bit_field on bitfields that exceed the
   6838        precision of the declared type
   6839 
   6840     Optimization bugs
   6841 
   6842      * [51]2001 Inordinately long compile times in reload CSE regs
   6843      * [52]2391 Exponential compilation time explosion in combine
   6844      * [53]2960 Duplicate loop conditions even with -Os
   6845      * [54]4046 redundant conditional branch
   6846      * [55]6405 Loop-unrolling related performance regressions
   6847      * [56]6798 very long compile time with large case-statement
   6848      * [57]6871 const objects shouldn't be moved to .bss
   6849      * [58]6909 problem w/ -Os on modified loop-2c.c test case
   6850      * [59]7189 gcc -O2 -Wall does not print ``control reaches end of
   6851        non-void function'' warning
   6852      * [60]7642 optimization problem with signbit()
   6853      * [61]8634 incorrect code for inlining of memcpy under -O2
   6854      * [62]8750 Cygwin prolog generation erroneously emitting __alloca as
   6855        regular function call
   6856 
   6857     C front end
   6858 
   6859      * [63]2161 long if-else cascade overflows parser stack
   6860      * [64]4319 short accepted on typedef'd char
   6861      * [65]8602 incorrect line numbers in warning messages when using
   6862        inline functions
   6863      * [66]9177 -fdump-translation-unit: C front end deletes function_decl
   6864        AST nodes and breaks debugging dumps
   6865      * [67]9853 miscompilation of non-constant structure initializer
   6866 
   6867     c++ compiler and library
   6868 
   6869      * [68]45 legal template specialization code is rejected (DUP:
   6870        [69]3784)
   6871      * [70]764 lookup failure: friend operator and dereferencing a pointer
   6872        and templates (DUP: [71]5116)
   6873      * [72]2862 gcc accepts invalid explicit instantiation syntax (DUP:
   6874        2863)
   6875      * [73]3663 G++ doesn't check access control during template
   6876        instantiation
   6877      * [74]3797 gcc fails to emit explicit specialization of a template
   6878        member
   6879      * [75]3948 Two destructors are called when no copy destructor is
   6880        defined (ABI change)
   6881      * [76]4137 Conversion operator within template is not accepted
   6882      * [77]4361 bogus ambiguity taking the address of a member template
   6883      * [78]4802 g++ accepts illegal template code (access to private
   6884        member; DUP: [79]5837)
   6885      * [80]4803 inline function is used but never defined, and g++ does
   6886        not object
   6887      * [81]5094 Partial specialization cannot be friend?
   6888      * [82]5730 complex<double>::norm() -- huge slowdown from egcs-2.91.66
   6889      * [83]6713 Regression wrt 3.0.4: g++ -O2 leads to seg fault at run
   6890        time
   6891      * [84]7015 certain __asm__ constructs rejected
   6892      * [85]7086 compile time regression (quadratic behavior in
   6893        fixup_var_refs)
   6894      * [86]7099 G++ doesn't set the noreturn attribute on std::exit and
   6895        std::abort
   6896      * [87]7247 copy constructor missing when inlining enabled (invalid
   6897        optimization?)
   6898      * [88]7441 string array initialization compilation time regression
   6899        from seconds to minutes
   6900      * [89]7768 __PRETTY_FUNCTION__ for template destructor is wrong
   6901      * [90]7804 bad printing of floating point constant in warning message
   6902      * [91]8099 Friend classes and template specializations
   6903      * [92]8117 member function pointers and multiple inheritance
   6904      * [93]8205 using declaration and multiple inheritance
   6905      * [94]8645 unnecessary non-zero checks in stl_tree.h
   6906      * [95]8724 explicit destructor call for incomplete class allowed
   6907      * [96]8805 compile time regression with many member variables
   6908      * [97]8691 -O3 and -fno-implicit-templates are incompatible
   6909      * [98]8700 unhelpful error message for binding temp to reference
   6910      * [99]8724 explicit destructor call for incomplete class allowed
   6911      * [100]8949 numeric_limits<>::denorm_min() and is_iec559 problems
   6912      * [101]9016 Failure to consistently constant fold "constant" C++
   6913        objects
   6914      * [102]9053 g++ confused about ambiguity of overloaded function
   6915        templates
   6916      * [103]9152 undefined virtual thunks
   6917      * [104]9182 basic_filebuf<> does not report errors in codecvt<>::out
   6918      * [105]9297 data corruption due to codegen bug (when copying.)
   6919      * [106]9318 i/ostream::operator>>/<<(streambuf*) broken
   6920      * [107]9320 Incorrect usage of traits_type::int_type in stdio_filebuf
   6921      * [108]9400 bogus -Wshadow warning: shadowed declaration of this in
   6922        local classes
   6923      * [109]9424 i/ostream::operator>>/<<(streambuf*) drops characters
   6924      * [110]9425 filebuf::pbackfail broken (DUP: [111]9439)
   6925      * [112]9474 GCC freezes in compiling a weird code mixing <iostream>
   6926        and <iostream.h>
   6927      * [113]9548 Incorrect results from setf(ios::fixed) and precision(-1)
   6928        [114][DR 231]
   6929      * [115]9555 ostream inserters fail to set badbit on exception
   6930      * [116]9561 ostream inserters rethrow exception of wrong type
   6931      * [117]9563 ostream::sentry returns true after a failed preparation
   6932      * [118]9582 one-definition rule violation in std::allocator
   6933      * [119]9622 __PRETTY_FUNCTION__ incorrect in template destructors
   6934      * [120]9683 bug in initialization chains for static const variables
   6935        from template classes
   6936      * [121]9791 -Woverloaded-virtual reports hiding of destructor
   6937      * [122]9817 collate::compare doesn't handle nul characters
   6938      * [123]9825 filebuf::sputbackc breaks sbumpc
   6939      * [124]9826 operator>>(basic_istream, basic_string) fails to compile
   6940        with custom traits
   6941      * [125]9924 Multiple using statements for builtin functions not
   6942        allowed
   6943      * [126]9946 destructor is not called for temporary object
   6944      * [127]9964 filebuf::close() sometimes fails to close file
   6945      * [128]9988 filebuf::overflow writes EOF to file
   6946      * [129]10033 optimization breaks polymorphic references w/ typeid
   6947        operator
   6948      * [130]10097 filebuf::underflow drops characters
   6949      * [131]10132 filebuf destructor can throw exceptions
   6950      * [132]10180 gcc fails to warn about non-inlined function
   6951      * [133]10199 method parametrized by template does not work everywhere
   6952      * [134]10300 use of array-new (nothrow) in segfaults on NULL return
   6953      * [135]10427 Stack corruption with variable-length automatic arrays
   6954        and virtual destructors
   6955      * [136]10503 Compilation never stops in fixed_type_or_null
   6956 
   6957     Objective-C
   6958 
   6959      * [137]5956 selectors aren't matched properly when added to the
   6960        selector table
   6961 
   6962     Fortran compiler and library
   6963 
   6964      * [138]1832 list directed i/o overflow hangs, -fbounds-check doesn't
   6965        detect
   6966      * [139]3924 g77 generates code that is rejected by GAS if COFF debug
   6967        info requested
   6968      * [140]5634 doc: explain that configure --prefix=~/... does not work
   6969      * [141]6367 multiple repeat counts confuse namelist read into array
   6970      * [142]6491 Logical operations error on logicals when using
   6971        -fugly-logint
   6972      * [143]6742 Generation of C++ Prototype for FORTRAN and extern "C"
   6973      * [144]7113 Failure of g77.f-torture/execute/f90-intrinsic-bit.f -Os
   6974        on irix6.5
   6975      * [145]7236 OPEN(...,RECL=nnn,...) without ACCESS='DIRECT' should
   6976        assume a direct access file
   6977      * [146]7278 g77 "bug"; the executable misbehaves (with -O2
   6978        -fno-automatic)
   6979      * [147]7384 DATE_AND_TIME milliseconds field inactive on Windows
   6980      * [148]7388 Incorrect output with 0-based array of characters
   6981      * [149]8587 Double complex zero ** double precision number -> NaN
   6982        instead of zero
   6983      * [150]9038 -ffixed-line-length-none -x f77-cpp-input gives: Warning:
   6984        unknown register name line-length-none
   6985      * [151]10197 Direct access files not unformatted by default
   6986 
   6987     Java compiler and library
   6988 
   6989      * [152]6005 gcj fails to build rhug on alpha
   6990      * [153]6389 System.getProperty("") should always throw an
   6991        IllegalArgumentException
   6992      * [154]6576 java.util.ResourceBundle.getResource ignores locale
   6993      * [155]6652 new java.io.File("").getCanonicalFile() throws exception
   6994      * [156]7060 getMethod() doesn't search super interface
   6995      * [157]7073 bytecode interpreter gives wrong answer for interface
   6996        getSuperclass()
   6997      * [158]7180 possible bug in
   6998        javax.naming.spi.NamingManager.getPlusPath()
   6999      * [159]7416 java.security startup refs "GNU libgcj.security"
   7000      * [160]7570 Runtime.exec with null envp: child doesn't inherit parent
   7001        env (DUP: [161]7578)
   7002      * [162]7611 Internal error while compiling libjava with -O
   7003      * [163]7709 NullPointerException in _Jv_ResolvePoolEntry
   7004      * [164]7766 ZipInputStream.available returns 0 immediately after
   7005        construction
   7006      * [165]7785 Calendar.getTimeInMillis/setTimeInMillis should be public
   7007      * [166]7786 TimeZone.getDSTSavings() from JDK1.4 not implemented
   7008      * [167]8142 '$' in class names vs. dlopen 'dynamic string tokens'
   7009      * [168]8234 ZipInputStream chokes when InputStream.read() returns
   7010        small chunks
   7011      * [169]8415 reflection bug: exception info for Method
   7012      * [170]8481 java.Random.nextInt(int) may return negative
   7013      * [171]8593 Error reading GZIPped files with BufferedReader
   7014      * [172]8759 java.beans.Introspector has no flushCaches() or
   7015        flushFromCaches() methods
   7016      * [173]8997 spin() calls Thread.sleep
   7017      * [174]9253 on win32, java.io.File.listFiles("C:\\") returns pwd
   7018        instead of the root content of C:
   7019      * [175]9254 java::lang::Object::wait(), threads-win32.cc returns
   7020        wrong return codes
   7021      * [176]9271 Severe bias in java.security.SecureRandom
   7022 
   7023     Ada compiler and library
   7024 
   7025      * [177]6767 make gnatlib-shared fails on -laddr2line
   7026      * [178]9911 gnatmake fails to link when GCC configured with
   7027        --with-sjlj-exceptions=yes
   7028      * [179]10020 Can't bootstrap gcc on AIX with Ada enabled
   7029      * [180]10546 Ada tasking not working on Red Hat 9
   7030 
   7031     preprocessor
   7032 
   7033      * [181]7029 preprocessor should ignore #warning with -M
   7034 
   7035     ARM-specific
   7036 
   7037      * [182]2903 [arm] Optimization bug with long long arithmetic
   7038      * [183]7873 arm-linux-gcc fails when assigning address to a bit field
   7039 
   7040     FreeBSD-specific
   7041 
   7042      * [184]7680 float functions undefined in math.h/cmath with #define
   7043        _XOPEN_SOURCE
   7044 
   7045     HP-UX or HP-PA-specific
   7046 
   7047      * [185]8705 [HP-PA] ICE in emit_move_insn_1, in expr.c
   7048      * [186]9986 [HP-UX] Incorrect transformation of fputs_unlocked to
   7049        fputc_unlocked
   7050      * [187]10056 [HP-PA] ICE at -O2 when building c++ code from doxygen
   7051 
   7052     m68hc11-specific
   7053 
   7054      * [188]6744 Bad assembler code generated: reference to pseudo
   7055        register z
   7056      * [189]7361 Internal compiler error in reload_cse_simplify_operands,
   7057        in reload1.c
   7058 
   7059     MIPS-specific
   7060 
   7061      * [190]9496 [mips-linux] bug in optimizer?
   7062 
   7063     PowerPC-specific
   7064 
   7065      * [191]7067 -Os with -mcpu=powerpc optimizes for speed (?) instead of
   7066        space
   7067      * [192]8480 reload ICEs for LAPACK code on powerpc64-linux
   7068      * [193]8784 [AIX] Internal compiler error in simplify_gen_subreg
   7069      * [194]10315 [powerpc] ICE: in extract_insn, in recog.c
   7070 
   7071     SPARC-specific
   7072 
   7073      * [195]10267 (documentation) Wrong build instructions for
   7074        *-*-solaris2*
   7075 
   7076     x86-specific (Intel/AMD)
   7077 
   7078      * [196]7916 ICE in instantiate_virtual_register_1
   7079      * [197]7926 (c++) i486 instructions in header files make c++ programs
   7080        crash on i386
   7081      * [198]8555 ICE in gen_split_1231
   7082      * [199]8994 ICE with -O -march=pentium4
   7083      * [200]9426 ICE with -fssa -funroll-loops -fprofile-arcs
   7084      * [201]9806 ICE in inline assembly with -fPIC flag
   7085      * [202]10077 gcc -msse2 generates movd to move dwords between xmm
   7086        regs
   7087      * [203]10233 64-bit comparison only comparing bottom 32-bits
   7088      * [204]10286 type-punning doesn't work with __m64 and -O
   7089      * [205]10308 [x86] ICE with -O -fgcse or -O2
   7090      __________________________________________________________________
   7091 
   7092 GCC 3.3.1
   7093 
   7094   Bug Fixes
   7095 
   7096    This section lists the problem reports (PRs) from GCC's bug tracking
   7097    system that are known to be fixed in the 3.3.1 release. This list might
   7098    not be complete (that is, it is possible that some PRs that have been
   7099    fixed are not listed here).
   7100 
   7101     Bootstrap failures
   7102 
   7103      * [206]11272 [Solaris] make bootstrap fails while building libstdc++
   7104 
   7105     Internal compiler errors (multi-platform)
   7106 
   7107      * [207]5754 ICE on invalid nested template class
   7108      * [208]6597 ICE in set_mem_alias_set compiling Qt with -O2 on ia64
   7109        and --enable-checking
   7110      * [209]6949 (c++) ICE in tsubst_decl, in cp/pt.c
   7111      * [210]7053 (c++) ICE when declaring a function already defined as a
   7112        friend method of a template class
   7113      * [211]8164 (c++) ICE when using different const expressions as
   7114        template parameter
   7115      * [212]8384 (c++) ICE in is_base_type, in dwarf2out.c
   7116      * [213]9559 (c++) ICE with invalid initialization of a static const
   7117      * [214]9649 (c++) ICE in finish_member_declaration, in cp/semantics.c
   7118        when redeclaring a static member variable
   7119      * [215]9864 (fortran) ICE in add_abstract_origin_attribute, in
   7120        dwarfout.c with -g -O -finline-functions
   7121      * [216]10432 (c++) ICE in poplevel, in cp/decl.c
   7122      * [217]10475 ICE in subreg_highpart_offset for code with long long
   7123      * [218]10635 (c++) ICE when dereferencing an incomplete type casted
   7124        from a void pointer
   7125      * [219]10661 (c++) ICE in instantiate_decl, in cp/pt.c while
   7126        instantiating static member variables
   7127      * [220]10700 ICE in copy_to_mode_reg on 64-bit targets
   7128      * [221]10712 (c++) ICE in constructor_name_full, in cp/decl2.c
   7129      * [222]10796 (c++) ICE when defining an enum with two values: -1 and
   7130        MAX_INT_64BIT
   7131      * [223]10890 ICE in merge_assigned_reloads building Linux 2.4.2x
   7132        sched.c
   7133      * [224]10939 (c++) ICE with template code
   7134      * [225]10956 (c++) ICE when specializing a template member function
   7135        of a template class, in tsubst, in cp/pt.c
   7136      * [226]11041 (c++) ICE: const myclass &x = *x; (when operator*()
   7137        defined)
   7138      * [227]11059 (c++) ICE with empty union
   7139      * [228]11083 (c++) ICE in commit_one_edge_insertion, in cfgrtl.c with
   7140        -O2 -fnon-call-exceptions
   7141      * [229]11105 (c++) ICE in mangle_conv_op_name_for_type
   7142      * [230]11149 (c++) ICE on error when instantiation with call function
   7143        of a base type
   7144      * [231]11228 (c++) ICE on new-expression using array operator new and
   7145        default-initialization
   7146      * [232]11282 (c++) Infinite memory usage after syntax error
   7147      * [233]11301 (fortran) ICE with -fno-globals
   7148      * [234]11308 (c++) ICE when using an enum type name as if it were a
   7149        class or namespace
   7150      * [235]11473 (c++) ICE with -gstabs when empty struct inherits from
   7151        an empty struct
   7152      * [236]11503 (c++) ICE when instantiating template with ADDR_EXPR
   7153      * [237]11513 (c++) ICE in push_template_decl_real, in cp/pt.c:
   7154        template member functions
   7155 
   7156     Optimization bugs
   7157 
   7158      * [238]11198 -O2 -frename-registers generates wrong code (aliasing
   7159        problem)
   7160      * [239]11304 Wrong code production with -fomit-frame-pointer
   7161      * [240]11381 volatile memory access optimized away
   7162      * [241]11536 [strength-reduce] -O2 optimization produces wrong code
   7163      * [242]11557 constant folding bug generates wrong code
   7164 
   7165     C front end
   7166 
   7167      * [243]5897 No warning for statement after return
   7168      * [244]11279 DWARF-2 output mishandles large enums
   7169 
   7170     Preprocessor bugs
   7171 
   7172      * [245]11022 no warning for non-compatible macro redefinition
   7173 
   7174     C++ compiler and library
   7175 
   7176      * [246]2330 static_cast<>() to a private base is allowed
   7177      * [247]5388 Incorrect message "operands to ?: have different types"
   7178      * [248]5390 Libiberty fails to demangle multi-digit template
   7179        parameters
   7180      * [249]7877 Incorrect parameter passing to specializations of member
   7181        function templates
   7182      * [250]9393 Anonymous namespaces and compiling the same file twice
   7183      * [251]10032 -pedantic converts some errors to warnings
   7184      * [252]10468 const typeof(x) is non-const, but only in templates
   7185      * [253]10527 confused error message with "new int()" parameter
   7186        initializer
   7187      * [254]10679 parameter MIN_INLINE_INSNS is not honored
   7188      * [255]10682 gcc chokes on a typedef for an enum inside a class
   7189        template
   7190      * [256]10689 pow(std::complex(0),1/3) returns (nan, nan) instead of
   7191        0.
   7192      * [257]10845 template member function (with nested template as
   7193        parameter) cannot be called anymore if another unrelated template
   7194        member function is defined
   7195      * [258]10849 Cannot define an out-of-class specialization of a
   7196        private nested template class
   7197      * [259]10888 Suppress -Winline warnings for system headers
   7198      * [260]10929 -Winline warns about functions for which no definition
   7199        is visible
   7200      * [261]10931 valid conversion static_cast<const unsigned
   7201        int&>(lvalue-of-type-int) is rejected
   7202      * [262]10940 Bad code with explicit specialization
   7203      * [263]10968 If member function implicitly instantiated, explicit
   7204        instantiation of class fails to instantiate it
   7205      * [264]10990 Cannot convert with dynamic_cast<> to a private base
   7206        class from within a member function
   7207      * [265]11039 Bad interaction between implicit typename deprecation
   7208        and friendship
   7209      * [266]11062 (libstdc++) avoid __attribute__ ((unused)); say
   7210        "__unused__" instead
   7211      * [267]11095 C++ iostream manipulator causes segfault when called
   7212        with negative argument
   7213      * [268]11098 g++ doesn't emit complete debugging information for
   7214        local variables in destructors
   7215      * [269]11137 GNU/Linux shared library constructors not called unless
   7216        there's one global object
   7217      * [270]11154 spurious ambiguity report for template class
   7218        specialization
   7219      * [271]11329 Compiler cannot find user defined implicit typecast
   7220      * [272]11332 Spurious error with casts in ?: expression
   7221      * [273]11431 static_cast behavior with subclasses when default
   7222        constructor available
   7223      * [274]11528 money_get facet does not accept "$.00" as valid
   7224      * [275]11546 Type lookup problems in out-of-line definition of a
   7225        class doubly nested from a template class
   7226      * [276]11567 C++ code containing templated member function with same
   7227        name as pure virtual member function results in linking failure
   7228      * [277]11645 Failure to deal with using and private inheritance
   7229 
   7230     Java compiler and library
   7231 
   7232      * [278]5179 Qualified static field access doesn't initialize its
   7233        class
   7234      * [279]8204 gcj -O2 to native reorders certain instructions
   7235        improperly
   7236      * [280]10838 java.io.ObjectInputStream syntax error
   7237      * [281]10886 The RMI registry that comes with GCJ does not work
   7238        correctly
   7239      * [282]11349 JNDI URL context factories not located correctly
   7240 
   7241     x86-specific (Intel/AMD)
   7242 
   7243      * [283]4823 ICE on inline assembly code
   7244      * [284]8878 miscompilation with -O and SSE
   7245      * [285]9815 (c++ library) atomicity.h - fails to compile with -O3
   7246        -masm=intel
   7247      * [286]10402 (inline assembly) [x86] ICE in merge_assigned_reloads,
   7248        in reload1.c
   7249      * [287]10504 ICE with SSE2 code and -O3 -mcpu=pentium4 -msse2
   7250      * [288]10673 ICE for x86-64 on freebsd libc vfprintf.c source
   7251      * [289]11044 [x86] out of range loop instructions for FP code on K6
   7252      * [290]11089 ICE: instantiate_virtual_regs_lossage while using SSE
   7253        built-ins
   7254      * [291]11420 [x86_64] gcc generates invalid asm code when "-O -fPIC"
   7255        is used
   7256 
   7257     SPARC- or Solaris- specific
   7258 
   7259      * [292]9362 solaris 'as' dies when fed .s and "-gstabs"
   7260      * [293]10142 [SPARC64] gcc produces wrong code when passing
   7261        structures by value
   7262      * [294]10663 New configure check aborts with Sun tools.
   7263      * [295]10835 combinatorial explosion in scheduler on HyperSPARC
   7264      * [296]10876 ICE in calculate_giv_inc when building KDE
   7265      * [297]10955 wrong code at -O3 for structure argument in context of
   7266        structure return
   7267      * [298]11018 -mcpu=ultrasparc busts tar-1.13.25
   7268      * [299]11556 [sparc64] ICE in gen_reg_rtx() while compiling 2.6.x
   7269        Linux kernel
   7270 
   7271     ia64 specific
   7272 
   7273      * [300]10907 gcc violates the ia64 ABI (GP must be preserved)
   7274      * [301]11320 scheduler bug (in machine depended reorganization pass)
   7275      * [302]11599 bug with conditional and __builtin_prefetch
   7276 
   7277     PowerPC specific
   7278 
   7279      * [303]9745 [powerpc] gcc mis-compiles libmcrypt (alias problem
   7280        during loop)
   7281      * [304]10871 error in rs6000_stack_info save_size computation
   7282      * [305]11440 gcc mis-compiles c++ code (libkhtml) with -O2, -fno-gcse
   7283        cures it
   7284 
   7285     m68k-specific
   7286 
   7287      * [306]7594 [m68k] ICE on legal code associated with simplify-rtx
   7288      * [307]10557 [m68k] ICE in subreg_offset_representable_p
   7289      * [308]11054 [m68k] ICE in reg_overlap_mentioned_p
   7290 
   7291     ARM-specific
   7292 
   7293      * [309]10834 [arm] GCC 3.3 still generates incorrect instructions for
   7294        functions with __attribute__ ((interrupt ("IRQ")))
   7295      * [310]10842 [arm] Clobbered link register is copied to pc under
   7296        certain circumstances
   7297      * [311]11052 [arm] noce_process_if_block() can lose REG_INC notes
   7298      * [312]11183 [arm] ICE in change_address_1 (3.3) / subreg_hard_regno
   7299        (3.4)
   7300 
   7301     MIPS-specific
   7302 
   7303      * [313]11084 ICE in propagate_one_insn, in flow.c
   7304 
   7305     SH-specific
   7306 
   7307      * [314]10331 can't compile c++ part of gcc cross compiler for sh-elf
   7308      * [315]10413 [SH] ICE in reload_cse_simplify_operands, in reload1.c
   7309      * [316]11096 i686-linux to sh-linux cross compiler fails to compile
   7310        C++ files
   7311 
   7312     GNU/Linux (or Hurd?) specific
   7313 
   7314      * [317]2873 Bogus fixinclude of stdio.h from glibc 2.2.3
   7315 
   7316     UnixWare specific
   7317 
   7318      * [318]3163 configure bug: gcc/aclocal.m4 mmap test fails on UnixWare
   7319        7.1.1
   7320 
   7321     Cygwin (or mingw) specific
   7322 
   7323      * [319]5287 ICE with dllimport attribute
   7324      * [320]10148 [MingW/CygWin] Compiler dumps core
   7325 
   7326     DJGPP specific
   7327 
   7328      * [321]8787 GCC fails to emit .intel_syntax when invoked with
   7329        -masm=intel on DJGPP
   7330 
   7331     Darwin (and MacOS X) specific
   7332 
   7333      * [322]10900 trampolines crash
   7334 
   7335     Documentation
   7336 
   7337      * [323]1607 (c++) Format attributes on methods undocumented
   7338      * [324]4252 Invalid option `-fdump-translation-unit'
   7339      * [325]4490 Clarify restrictions on -m96bit-long-double,
   7340        -m128bit-long-double
   7341      * [326]10355 document an issue with regparm attribute on some systems
   7342        (e.g. Solaris)
   7343      * [327]10726 (fortran) Documentation for function "IDate Intrinsic
   7344        (Unix)" is wrong
   7345      * [328]10805 document bug in old version of Sun assembler
   7346      * [329]10815 warn against GNU binutils on AIX
   7347      * [330]10877 document need for newer binutils on i?86-*-linux-gnu
   7348      * [331]11280 Manual incorrect with respect to -freorder-blocks
   7349      * [332]11466 Document -mlittle-endian and its restrictions for the
   7350        sparc64 port
   7351 
   7352     Testsuite bugs (compiler itself is not affected)
   7353 
   7354      * [333]10737 newer bison causes g++.dg/parse/crash2.C to incorrectly
   7355        report failure
   7356      * [334]10810 gcc-3.3 fails make check: buffer overrun in
   7357        test_demangle.c
   7358      __________________________________________________________________
   7359 
   7360 GCC 3.3.2
   7361 
   7362   Bug Fixes
   7363 
   7364    This section lists the problem reports (PRs) from [335]GCC's bug
   7365    tracking system that are known to be fixed in the 3.3.2 release. This
   7366    list might not be complete (that is, it is possible that some PRs that
   7367    have been fixed are not listed here).
   7368 
   7369     Bootstrap failures and problems
   7370 
   7371      * [336]8336 [SCO5] bootstrap config still tries to use COFF options
   7372      * [337]9330 [alpha-osf] Bootstrap failure on Compaq Tru64 with
   7373        --enable-threads=posix
   7374      * [338]9631 [hppa64-linux] gcc-3.3 fails to bootstrap
   7375      * [339]9877 fixincludes makes a bad sys/byteorder.h on svr5 (UnixWare
   7376        7.1.1)
   7377      * [340]11687 xstormy16-elf build fails in libf2c
   7378      * [341]12263 [SGI IRIX] bootstrap fails during compile of
   7379        libf2c/libI77/backspace.c
   7380      * [342]12490 buffer overflow in scan-decls.c (during Solaris 9
   7381        fix-header processing)
   7382 
   7383     Internal compiler errors (multi-platform)
   7384 
   7385      * [343]7277 Casting integers to vector types causes ICE
   7386      * [344]7939 (c++) ICE on invalid function template specialization
   7387      * [345]11063 (c++) ICE on parsing initialization list of const array
   7388        member
   7389      * [346]11207 ICE with negative index in array element designator
   7390      * [347]11522 (fortran) g77 dwarf-2 ICE in
   7391        add_abstract_origin_attribute
   7392      * [348]11595 (c++) ICE on duplicate label definition
   7393      * [349]11646 (c++) ICE in commit_one_edge_insertion with
   7394        -fnon-call-exceptions -fgcse -O
   7395      * [350]11665 ICE in struct initializer when taking address
   7396      * [351]11852 (c++) ICE with bad struct initializer.
   7397      * [352]11878 (c++) ICE in cp_expr_size
   7398      * [353]11883 ICE with any -O on mercury-generated C code
   7399      * [354]11991 (c++) ICE in cxx_incomplete_type_diagnostic, in
   7400        cp/typeck2.c when applying typeid operator to template template
   7401        parameter
   7402      * [355]12146 ICE in lookup_template_function, in cp/pt.c
   7403      * [356]12215 ICE in make_label_edge with -fnon-call-exceptions
   7404        -fno-gcse -O2
   7405      * [357]12369 (c++) ICE with templates and friends
   7406      * [358]12446 ICE in emit_move_insn on complicated array reference
   7407      * [359]12510 ICE in final_scan_insn
   7408      * [360]12544 ICE with large parameters used in nested functions
   7409 
   7410     C and optimization bugs
   7411 
   7412      * [361]9862 spurious warnings with -W -finline-functions
   7413      * [362]10962 lookup_field is a linear search on a linked list (can be
   7414        slow if large struct)
   7415      * [363]11370 -Wunreachable-code gives false complaints
   7416      * [364]11637 invalid assembly with -fnon-call-exceptions
   7417      * [365]11885 Problem with bitfields in packed structs
   7418      * [366]12082 Inappropriate unreachable code warnings
   7419      * [367]12180 Inline optimization fails for variadic function
   7420      * [368]12340 loop unroller + gcse produces wrong code
   7421 
   7422     C++ compiler and library
   7423 
   7424      * [369]3907 nested template parameter collides with member name
   7425      * [370]5293 confusing message when binding a temporary to a reference
   7426      * [371]5296 [DR115] Pointers to functions and to template functions
   7427        behave differently in deduction
   7428      * [372]7939 ICE on function template specialization
   7429      * [373]8656 Unable to assign function with __attribute__ and pointer
   7430        return type to an appropriate variable
   7431      * [374]10147 Confusing error message for invalid template function
   7432        argument
   7433      * [375]11400 std::search_n() makes assumptions about Size parameter
   7434      * [376]11409 issues with using declarations, overloading, and
   7435        built-in functions
   7436      * [377]11740 ctype<wchar_t>::do_is(mask, wchar_t) doesn't handle
   7437        multiple bits in mask
   7438      * [378]11786 operator() call on variable in other namespace not
   7439        recognized
   7440      * [379]11867 static_cast ignores ambiguity
   7441      * [380]11928 bug with conversion operators that are typedefs
   7442      * [381]12114 Uninitialized memory accessed in dtor
   7443      * [382]12163 static_cast + explicit constructor regression
   7444      * [383]12181 Wrong code with comma operator and c++
   7445      * [384]12236 regparm and fastcall messes up parameters
   7446      * [385]12266 incorrect instantiation of unneeded template during
   7447        overload resolution
   7448      * [386]12296 istream::peek() doesn't set eofbit
   7449      * [387]12298 [sjlj exceptions] Stack unwind destroys
   7450        not-yet-constructed object
   7451      * [388]12369 ICE with templates and friends
   7452      * [389]12337 apparently infinite loop in g++
   7453      * [390]12344 stdcall attribute ignored if function returns a pointer
   7454      * [391]12451 missing(late) class forward declaration in cxxabi.h
   7455      * [392]12486 g++ accepts invalid use of a qualified name
   7456 
   7457     x86 specific (Intel/AMD)
   7458 
   7459      * [393]8869 [x86 MMX] ICE with const variable optimization and MMX
   7460        builtins
   7461      * [394]9786 ICE in fixup_abnormal_edges with -fnon-call-exceptions
   7462        -O2
   7463      * [395]11689 g++3.3 emits un-assembleable code for k6 architecture
   7464      * [396]12116 [k6] Invalid assembly output values with X-MAME code
   7465      * [397]12070 ICE converting between double and long double with
   7466        -msoft-float
   7467 
   7468     ia64-specific
   7469 
   7470      * [398]11184 [ia64 hpux] ICE on __builtin_apply building libobjc
   7471      * [399]11535 __builtin_return_address may not work on ia64
   7472      * [400]11693 [ia64] ICE in gen_nop_type
   7473      * [401]12224 [ia64] Thread-local storage doesn't work
   7474 
   7475     PowerPC-specific
   7476 
   7477      * [402]11087 [powerpc64-linux] GCC miscompiles raid1.c from linux
   7478        kernel
   7479      * [403]11319 loop miscompiled on ppc32
   7480      * [404]11949 ICE Compiler segfault with ffmpeg -maltivec code
   7481 
   7482     SPARC-specific
   7483 
   7484      * [405]11662 wrong code for expr. with cast to long long and
   7485        exclusive or
   7486      * [406]11965 invalid assembler code for a shift < 32 operation
   7487      * [407]12301 (c++) stack corruption when a returned expression throws
   7488        an exception
   7489 
   7490     Alpha-specific
   7491 
   7492      * [408]11717 [alpha-linux] unrecognizable insn compiling for.c of
   7493        kernel 2.4.22-pre8
   7494 
   7495     HPUX-specific
   7496 
   7497      * [409]11313 problem with #pragma weak and static inline functions
   7498      * [410]11712 __STDC_EXT__ not defined for C++ by default anymore?
   7499 
   7500     Solaris specific
   7501 
   7502      * [411]12166 Profiled programs crash if PROFDIR is set
   7503 
   7504     Solaris-x86 specific
   7505 
   7506      * [412]12101 i386 Solaris no longer works with GNU as?
   7507 
   7508     Miscellaneous embedded target-specific bugs
   7509 
   7510      * [413]10988 [m32r-elf] wrong blockmove code with -O3
   7511      * [414]11805 [h8300-unknown-coff] [H8300] ICE for simple code with
   7512        -O2
   7513      * [415]11902 [sh4] spec file improperly inserts rpath even when none
   7514        needed
   7515      * [416]11903 [sh4] -pthread fails to link due to error in spec file
   7516        on sh4
   7517      __________________________________________________________________
   7518 
   7519 GCC 3.3.3
   7520 
   7521   Minor features
   7522 
   7523    In addition to the bug fixes documented below, this release contains
   7524    few minor features such as:
   7525      * Support for --with-sysroot
   7526      * Support for automatic detection of executable stacks
   7527      * Support for SSE3 instructions
   7528      * Support for thread local storage debugging under GDB on S390
   7529 
   7530   Bug Fixes
   7531 
   7532    This section lists the problem reports (PRs) from [417]GCC's bug
   7533    tracking system that are known to be fixed in the 3.3.3 release. This
   7534    list might not be complete (that is, it is possible that some PRs that
   7535    have been fixed are not listed here).
   7536 
   7537     Bootstrap failures and issues
   7538 
   7539      * [418]11890 Building cross gcc-3.3.1 for sparc-sun-solaris2.6 fails
   7540      * [419]12399 boehm-gc fails (when building a cross compiler): libtool
   7541        unable to infer tagged configuration
   7542      * [420]13068 mklibgcc.in doesn't handle multi-level multilib
   7543        subdirectories properly
   7544 
   7545     Internal compiler errors (multi-platform)
   7546 
   7547      * [421]10060 ICE (stack overflow) on huge file (300k lines) due to
   7548        recursive behaviour of copy_rtx_if_shared, in emit_rtl.c
   7549      * [422]10555 (c++) ICE on undefined template argument
   7550      * [423]10706 (c++) ICE in mangle_class_name_for_template
   7551      * [424]11496 (fortran) error in flow_loops_find when -funroll-loops
   7552        active
   7553      * [425]11741 ICE in pre_insert_copy_insn, in gcse.c
   7554      * [426]12440 GCC crashes during compilation of quicktime4linux 2.0.0
   7555      * [427]12632 (fortran) -fbounds-check ICE
   7556      * [428]12712 (c++) ICE on short legit C++ code fragment with gcc
   7557        3.3.2
   7558      * [429]12726 (c++) ICE (segfault) on trivial code
   7559      * [430]12890 (c++) ICE on compilation of class with throwing method
   7560      * [431]12900 (c++) ICE in rtl_verify_flow_info_1
   7561      * [432]13060 (fortran) ICE in fixup_var_refs_1, in function.c on
   7562        correct code with -O2 -fno-force-mem
   7563      * [433]13289 (c++) ICE in regenerate_decl_from_template on recursive
   7564        template
   7565      * [434]13318 ICE: floating point exception in the loop optimizer
   7566      * [435]13392 (c++) ICE in convert_from_eh_region_ranges_1, in
   7567        except.c
   7568      * [436]13574 (c++) invalid array default initializer in class lets
   7569        gcc consume all memory and die
   7570      * [437]13475 ICE on SIMD variables with partial value initialization
   7571      * [438]13797 (c++) ICE on invalid template parameter
   7572      * [439]13824 (java) gcj SEGV with simple .java program
   7573 
   7574     C and optimization bugs
   7575 
   7576      * [440]8776 loop invariants are not removed (most likely)
   7577      * [441]10339 [sparc,ppc,ppc64] Invalid optimization: replacing
   7578        strncmp by memcmp
   7579      * [442]11350 undefined labels with -Os -fPIC
   7580      * [443]12826 Optimizer removes reference through volatile pointer
   7581      * [444]12500 stabs debug info: void no longer a predefined / builtin
   7582        type
   7583      * [445]12941 builtin-bitops-1.c miscompilation (latent bug)
   7584      * [446]12953 tree inliner bug (in inline_forbidden_p) and fix
   7585      * [447]13041 linux-2.6/sound/core/oss/rate.c miscompiled
   7586      * [448]13507 spurious printf format warning
   7587      * [449]13382 Type information for const pointer disappears during
   7588        optimization.
   7589      * [450]13394 noreturn attribute ignored on recursive invokation
   7590      * [451]13400 Compiled code crashes storing to read-only location
   7591      * [452]13521 Endless loop in calculate_global_regs_live
   7592 
   7593     C++ compiler and library
   7594 
   7595    Some of the bug fixes in this list were made to implement decisions
   7596    that the ISO C++ standards committee has made concerning several defect
   7597    reports (DRs). Links in the list below point to detailed discussion of
   7598    the relevant defect report.
   7599      * [453]2094 unimplemented: use of `ptrmem_cst' in template type
   7600        unification
   7601      * [454]2294 using declaration confusion
   7602      * [455]5050 template instantiation depth exceeds limit: recursion
   7603        problem?
   7604      * [456]9371 Bad exception handling in
   7605        i/ostream::operator>>/<<(streambuf*)
   7606      * [457]9546 bad exception handling in ostream members
   7607      * [458]10081 basic_ios::_M_cache_locale leaves NULL members in the
   7608        face of unknown locales
   7609      * [459]10093 [460][DR 61] Setting failbit in exceptions doesn't work
   7610      * [461]10095 istream::operator>>(int&) sets ios::badbit when
   7611        ios::failbit is set.
   7612      * [462]11554 Warning about reordering of initializers doesn't mention
   7613        location of constructor
   7614      * [463]12297 istream::sentry::sentry() handles eof() incorrectly.
   7615      * [464]12352 Exception safety problems in src/localename.cc
   7616      * [465]12438 Memory leak in locale::combine()
   7617      * [466]12540 Memory leak in locale::locale(const char*)
   7618      * [467]12594 DRs [468]60 [TC] and [469]63 [TC] not implemented
   7619      * [470]12657 Resolution of [471]DR 292 (WP) still unimplemented
   7620      * [472]12696 memory eating infinite loop in diagnostics (error
   7621        recovery problem)
   7622      * [473]12815 Code compiled with optimization behaves unexpectedly
   7623      * [474]12862 Conflicts between typedefs/enums and namespace member
   7624        declarations
   7625      * [475]12926 Wrong value after assignment in initialize list using
   7626        bit-fields
   7627      * [476]12967 Resolution of [477]DR 300 [WP] still unimplemented
   7628      * [478]12971 Resolution of [479]DR 328 [WP] still unimplemented
   7629      * [480]13007 basic_streambuf::pubimbue, imbue wrong
   7630      * [481]13009 Implicitly-defined assignment operator writes to wrong
   7631        memory
   7632      * [482]13057 regparm attribute not applied to destructor
   7633      * [483]13070 -Wformat option ignored in g++
   7634      * [484]13081 forward template declarations in <complex> let inlining
   7635        fail
   7636      * [485]13239 Assertion does not seem to work correctly anymore
   7637      * [486]13262 "xxx is private within this context" when initializing a
   7638        self-contained template class
   7639      * [487]13290 simple typo in concept checking for std::generate_n
   7640      * [488]13323 Template code does not compile in presence of typedef
   7641      * [489]13369 __verify_grouping (and __add_grouping?) not correct
   7642      * [490]13371 infinite loop with packed struct and inlining
   7643      * [491]13445 Template argument replacement "dereferences" a typedef
   7644      * [492]13461 Fails to access protected-ctor from public constant
   7645      * [493]13462 Non-standard-conforming type set::pointer
   7646      * [494]13478 gcc uses wrong constructor to initialize a const
   7647        reference
   7648      * [495]13544 "conflicting types" for enums in different scopes
   7649      * [496]13650 string::compare should not (always) use
   7650        traits_type::length()
   7651      * [497]13683 bogus warning about passing non-PODs through ellipsis
   7652      * [498]13688 Derived class is denied access to protected base class
   7653        member class
   7654      * [499]13774 Member variable cleared in virtual multiple inheritance
   7655        class
   7656      * [500]13884 Protect sstream.tcc from extern template use
   7657 
   7658     Java compiler and library
   7659 
   7660      * [501]10746 [win32] garbage collection crash in GCJ
   7661 
   7662     Objective-C compiler and library
   7663 
   7664      * [502]11433 Crash due to dereferencing null pointer when querying
   7665        protocol
   7666 
   7667     Fortran compiler and library
   7668 
   7669      * [503]12633 logical expression gives incorrect result with
   7670        -fugly-logint option
   7671      * [504]13037 [gcse-lm] g77 generates incorrect code
   7672      * [505]13213 Hex constant problem when compiling with -fugly-logint
   7673        and -ftypeless-boz
   7674 
   7675     x86-specific (Intel/AMD)
   7676 
   7677      * [506]4490 ICE with -m128bit-long-double
   7678      * [507]12292 [x86_64] ICE: RTL check: expected code `const_int', have
   7679        `reg' in make_field_assignment, in combine.c
   7680      * [508]12441 ICE: can't find a register to spill
   7681      * [509]12943 array static-init failure under -fpic, -fPIC
   7682      * [510]13608 Incorrect code with -O3 -ffast-math
   7683 
   7684     PowerPC-specific
   7685 
   7686      * [511]11598 testcase gcc.dg/20020118-1.c fails runtime check of
   7687        __attribute__((aligned(16)))
   7688      * [512]11793 ICE in extract_insn, in recog.c (const_vector's)
   7689      * [513]12467 vmsumubm emitted when vmsummbm appropriate (typo in
   7690        altivec.md)
   7691      * [514]12537 g++ generates writeable text sections
   7692 
   7693     SPARC-specific
   7694 
   7695      * [515]12496 wrong result for __atomic_add(&value, -1) when using -O0
   7696        -m64
   7697      * [516]12865 mprotect call to make trampoline executable may fail
   7698      * [517]13354 ICE in sparc_emit_set_const32
   7699 
   7700     ARM-specific
   7701 
   7702      * [518]10467 [arm] ICE in pre_insert_copy_insn,
   7703 
   7704     ia64-specific
   7705 
   7706      * [519]11226 ICE passing struct arg with two floats
   7707      * [520]11227 ICE for _Complex float, _Complex long double args
   7708      * [521]12644 GCC 3.3.2 fails to compile glibc on ia64
   7709      * [522]13149 build gcc-3.3.2 1305 error:unrecognizable insn
   7710      * Various fixes for libunwind
   7711 
   7712     Alpha-specific
   7713 
   7714      * [523]12654 Incorrect comparison code generated for Alpha
   7715      * [524]12965 SEGV+ICE in cc1plus on alpha-linux with -O2
   7716      * [525]13031 ICE (unrecognizable insn) when building gnome-libs-1.4.2
   7717 
   7718     HPPA-specific
   7719 
   7720      * [526]11634 [hppa] ICE in verify_local_live_at_start, in flow.c
   7721      * [527]12158 [hppa] compilation does not terminate at -O1
   7722 
   7723     S390-specific
   7724 
   7725      * [528]11992 Wrong built-in code for memcmp with length 1<<24: only
   7726        (1<<24)-1 possible for CLCL-Instruction
   7727 
   7728     SH-specific
   7729 
   7730      * [529]9365 segfault in gen_far_branch (config/sh/sh.c)
   7731      * [530]10392 optimizer generates faulty array indexing
   7732      * [531]11322 SH profiler outputs multiple definitions of symbol
   7733      * [532]13069 gcc/config/sh/rtems.h broken
   7734      * [533]13302 Putting a va_list in a struct causes seg fault
   7735      * [534]13585 Incorrect optimization of call to sfunc
   7736      * Fix inappropriately exported libgcc functions from the shared
   7737        library
   7738 
   7739     Other embedded target specific
   7740 
   7741      * [535]8916 [mcore] unsigned char assign gets hosed.
   7742      * [536]11576 [h8300] ICE in change_address_1, in emit-rtl.c
   7743      * [537]13122 [h8300] local variable gets corrupted by function call
   7744        when -fomit-frame-pointer is given
   7745      * [538]13256 [cris] strict_low_part mistreated in delay slots
   7746      * [539]13373 [mcore] optimization with -frerun-cse-after-loop
   7747        -fexpensive-optimizations produces wrong code on mcore
   7748 
   7749     GNU HURD-specific
   7750 
   7751      * [540]12561 gcc/config/t-gnu needs updating to work with
   7752        --with-sysroot
   7753 
   7754     Tru64 Unix specific
   7755 
   7756      * [541]6243 testsuite fails almost all tests due to no libintl in
   7757        LD_LIBRARY_PATH during test.
   7758      * [542]11397 weak aliases broken on Tru64 UNIX
   7759 
   7760     AIX-specific
   7761 
   7762      * [543]12505 build failure due to defines of uchar in cpphash.h and
   7763        sys/types.h
   7764      * [544]13150 WEAK symbols not exported by collect2
   7765 
   7766     IRIX-specific
   7767 
   7768      * [545]12666 fixincludes problem on IRIX 6.5.19m
   7769 
   7770     Solaris-specific
   7771 
   7772      * [546]12969 Including sys/byteorder.h breaks configure checks
   7773 
   7774     Testsuite problems (compiler is not affected)
   7775 
   7776      * [547]10819 testsuite creates CR+LF on compiler version lines in
   7777        test summary files
   7778      * [548]11612 abi_check not finding correct libgcc_s.so.1
   7779 
   7780     Miscellaneous
   7781 
   7782      * [549]13211 using -###, incorrect warnings about unused linker file
   7783        are produced
   7784      __________________________________________________________________
   7785 
   7786 GCC 3.3.4
   7787 
   7788    This is the [550]list of problem reports (PRs) from GCC's bug tracking
   7789    system that are known to be fixed in the 3.3.4 release. This list might
   7790    not be complete (that is, it is possible that some PRs that have been
   7791    fixed are not listed here).
   7792      __________________________________________________________________
   7793 
   7794 GCC 3.3.5
   7795 
   7796    This is the [551]list of problem reports (PRs) from GCC's bug tracking
   7797    system that are known to be fixed in the 3.3.5 release. This list might
   7798    not be complete (that is, it is possible that some PRs that have been
   7799    fixed are not listed here).
   7800      __________________________________________________________________
   7801 
   7802 GCC 3.3.6
   7803 
   7804    This is the [552]list of problem reports (PRs) from GCC's bug tracking
   7805    system that are known to be fixed in the 3.3.6 release. This list might
   7806    not be complete (that is, it is possible that some PRs that have been
   7807    fixed are not listed here).
   7808 
   7809 
   7810     For questions related to the use of GCC, please consult these web
   7811     pages and the [553]GCC manuals. If that fails, the
   7812     [554]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   7813     web pages and the development of GCC are welcome on our developer
   7814     list at [555]gcc (a] gcc.gnu.org. All of [556]our lists have public
   7815     archives.
   7816 
   7817    Copyright (C) [557]Free Software Foundation, Inc. Verbatim copying and
   7818    distribution of this entire article is permitted in any medium,
   7819    provided this notice is preserved.
   7820 
   7821    These pages are [558]maintained by the GCC team. Last modified
   7822    2011-10-24[559].
   7823 
   7824 References
   7825 
   7826    1. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
   7827    2. http://gcc.gnu.org/gcc-3.1/changes.html#obsolete_systems
   7828    3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
   7829    4. http://gcc.gnu.org/gcc-3.3/changes.html#nonnull_attribute
   7830    5. http://gcc.gnu.org/news/dfa.html
   7831    6. http://gcc.gnu.org/gcc-3.3/c99status.html
   7832    7. http://gcc.gnu.org/onlinedocs/gcc-3.3.6/g77/News.html
   7833    8. http://gcc.gnu.org/PR10140
   7834    9. http://gcc.gnu.org/PR10198
   7835   10. http://gcc.gnu.org/PR10338
   7836   11. http://gcc.gnu.org/PR3581
   7837   12. http://gcc.gnu.org/PR4382
   7838   13. http://gcc.gnu.org/PR5533
   7839   14. http://gcc.gnu.org/PR6387
   7840   15. http://gcc.gnu.org/PR6412
   7841   16. http://gcc.gnu.org/PR6620
   7842   17. http://gcc.gnu.org/PR6663
   7843   18. http://gcc.gnu.org/PR7068
   7844   19. http://gcc.gnu.org/PR7083
   7845   20. http://gcc.gnu.org/PR7647
   7846   21. http://gcc.gnu.org/PR7675
   7847   22. http://gcc.gnu.org/PR7718
   7848   23. http://gcc.gnu.org/PR8116
   7849   24. http://gcc.gnu.org/PR8358
   7850   25. http://gcc.gnu.org/PR8511
   7851   26. http://gcc.gnu.org/PR8564
   7852   27. http://gcc.gnu.org/PR8660
   7853   28. http://gcc.gnu.org/PR8766
   7854   29. http://gcc.gnu.org/PR8803
   7855   30. http://gcc.gnu.org/PR8846
   7856   31. http://gcc.gnu.org/PR8906
   7857   32. http://gcc.gnu.org/PR9216
   7858   33. http://gcc.gnu.org/PR9261
   7859   34. http://gcc.gnu.org/PR9263
   7860   35. http://gcc.gnu.org/PR9429
   7861   36. http://gcc.gnu.org/PR9516
   7862   37. http://gcc.gnu.org/PR9600
   7863   38. http://gcc.gnu.org/PR9629
   7864   39. http://gcc.gnu.org/PR9672
   7865   40. http://gcc.gnu.org/PR9749
   7866   41. http://gcc.gnu.org/PR9794
   7867   42. http://gcc.gnu.org/PR9829
   7868   43. http://gcc.gnu.org/PR9916
   7869   44. http://gcc.gnu.org/PR9936
   7870   45. http://gcc.gnu.org/PR10262
   7871   46. http://gcc.gnu.org/PR10278
   7872   47. http://gcc.gnu.org/PR10446
   7873   48. http://gcc.gnu.org/PR10451
   7874   49. http://gcc.gnu.org/PR10506
   7875   50. http://gcc.gnu.org/PR10549
   7876   51. http://gcc.gnu.org/PR2001
   7877   52. http://gcc.gnu.org/PR2391
   7878   53. http://gcc.gnu.org/PR2960
   7879   54. http://gcc.gnu.org/PR4046
   7880   55. http://gcc.gnu.org/PR6405
   7881   56. http://gcc.gnu.org/PR6798
   7882   57. http://gcc.gnu.org/PR6871
   7883   58. http://gcc.gnu.org/PR6909
   7884   59. http://gcc.gnu.org/PR7189
   7885   60. http://gcc.gnu.org/PR7642
   7886   61. http://gcc.gnu.org/PR8634
   7887   62. http://gcc.gnu.org/PR8750
   7888   63. http://gcc.gnu.org/PR2161
   7889   64. http://gcc.gnu.org/PR4319
   7890   65. http://gcc.gnu.org/PR8602
   7891   66. http://gcc.gnu.org/PR9177
   7892   67. http://gcc.gnu.org/PR9853
   7893   68. http://gcc.gnu.org/PR45
   7894   69. http://gcc.gnu.org/PR3784
   7895   70. http://gcc.gnu.org/PR764
   7896   71. http://gcc.gnu.org/PR5116
   7897   72. http://gcc.gnu.org/PR2862
   7898   73. http://gcc.gnu.org/PR3663
   7899   74. http://gcc.gnu.org/PR3797
   7900   75. http://gcc.gnu.org/PR3948
   7901   76. http://gcc.gnu.org/PR4137
   7902   77. http://gcc.gnu.org/PR4361
   7903   78. http://gcc.gnu.org/PR4802
   7904   79. http://gcc.gnu.org/PR5837
   7905   80. http://gcc.gnu.org/PR4803
   7906   81. http://gcc.gnu.org/PR5094
   7907   82. http://gcc.gnu.org/PR5730
   7908   83. http://gcc.gnu.org/PR6713
   7909   84. http://gcc.gnu.org/PR7015
   7910   85. http://gcc.gnu.org/PR7086
   7911   86. http://gcc.gnu.org/PR7099
   7912   87. http://gcc.gnu.org/PR7247
   7913   88. http://gcc.gnu.org/PR7441
   7914   89. http://gcc.gnu.org/PR7768
   7915   90. http://gcc.gnu.org/PR7804
   7916   91. http://gcc.gnu.org/PR8099
   7917   92. http://gcc.gnu.org/PR8117
   7918   93. http://gcc.gnu.org/PR8205
   7919   94. http://gcc.gnu.org/PR8645
   7920   95. http://gcc.gnu.org/PR8724
   7921   96. http://gcc.gnu.org/PR8805
   7922   97. http://gcc.gnu.org/PR8691
   7923   98. http://gcc.gnu.org/PR8700
   7924   99. http://gcc.gnu.org/PR8724
   7925  100. http://gcc.gnu.org/PR8949
   7926  101. http://gcc.gnu.org/PR9016
   7927  102. http://gcc.gnu.org/PR9053
   7928  103. http://gcc.gnu.org/PR9152
   7929  104. http://gcc.gnu.org/PR9182
   7930  105. http://gcc.gnu.org/PR9297
   7931  106. http://gcc.gnu.org/PR9318
   7932  107. http://gcc.gnu.org/PR9320
   7933  108. http://gcc.gnu.org/PR9400
   7934  109. http://gcc.gnu.org/PR9424
   7935  110. http://gcc.gnu.org/PR9425
   7936  111. http://gcc.gnu.org/PR9439
   7937  112. http://gcc.gnu.org/PR9474
   7938  113. http://gcc.gnu.org/PR9548
   7939  114. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#231
   7940  115. http://gcc.gnu.org/PR9555
   7941  116. http://gcc.gnu.org/PR9561
   7942  117. http://gcc.gnu.org/PR9563
   7943  118. http://gcc.gnu.org/PR9582
   7944  119. http://gcc.gnu.org/PR9622
   7945  120. http://gcc.gnu.org/PR9683
   7946  121. http://gcc.gnu.org/PR9791
   7947  122. http://gcc.gnu.org/PR9817
   7948  123. http://gcc.gnu.org/PR9825
   7949  124. http://gcc.gnu.org/PR9826
   7950  125. http://gcc.gnu.org/PR9924
   7951  126. http://gcc.gnu.org/PR9946
   7952  127. http://gcc.gnu.org/PR9964
   7953  128. http://gcc.gnu.org/PR9988
   7954  129. http://gcc.gnu.org/PR10033
   7955  130. http://gcc.gnu.org/PR10097
   7956  131. http://gcc.gnu.org/PR10132
   7957  132. http://gcc.gnu.org/PR10180
   7958  133. http://gcc.gnu.org/PR10199
   7959  134. http://gcc.gnu.org/PR10300
   7960  135. http://gcc.gnu.org/PR10427
   7961  136. http://gcc.gnu.org/PR10503
   7962  137. http://gcc.gnu.org/PR5956
   7963  138. http://gcc.gnu.org/PR1832
   7964  139. http://gcc.gnu.org/PR3924
   7965  140. http://gcc.gnu.org/PR5634
   7966  141. http://gcc.gnu.org/PR6367
   7967  142. http://gcc.gnu.org/PR6491
   7968  143. http://gcc.gnu.org/PR6742
   7969  144. http://gcc.gnu.org/PR7113
   7970  145. http://gcc.gnu.org/PR7236
   7971  146. http://gcc.gnu.org/PR7278
   7972  147. http://gcc.gnu.org/PR7384
   7973  148. http://gcc.gnu.org/PR7388
   7974  149. http://gcc.gnu.org/PR8587
   7975  150. http://gcc.gnu.org/PR9038
   7976  151. http://gcc.gnu.org/PR10197
   7977  152. http://gcc.gnu.org/PR6005
   7978  153. http://gcc.gnu.org/PR6389
   7979  154. http://gcc.gnu.org/PR6576
   7980  155. http://gcc.gnu.org/PR6652
   7981  156. http://gcc.gnu.org/PR7060
   7982  157. http://gcc.gnu.org/PR7073
   7983  158. http://gcc.gnu.org/PR7180
   7984  159. http://gcc.gnu.org/PR7416
   7985  160. http://gcc.gnu.org/PR7570
   7986  161. http://gcc.gnu.org/PR7578
   7987  162. http://gcc.gnu.org/PR7611
   7988  163. http://gcc.gnu.org/PR7709
   7989  164. http://gcc.gnu.org/PR7766
   7990  165. http://gcc.gnu.org/PR7785
   7991  166. http://gcc.gnu.org/PR7786
   7992  167. http://gcc.gnu.org/PR8142
   7993  168. http://gcc.gnu.org/PR8234
   7994  169. http://gcc.gnu.org/PR8415
   7995  170. http://gcc.gnu.org/PR8481
   7996  171. http://gcc.gnu.org/PR8593
   7997  172. http://gcc.gnu.org/PR8759
   7998  173. http://gcc.gnu.org/PR8997
   7999  174. http://gcc.gnu.org/PR9253
   8000  175. http://gcc.gnu.org/PR9254
   8001  176. http://gcc.gnu.org/PR9271
   8002  177. http://gcc.gnu.org/PR6767
   8003  178. http://gcc.gnu.org/PR9911
   8004  179. http://gcc.gnu.org/PR10020
   8005  180. http://gcc.gnu.org/PR10546
   8006  181. http://gcc.gnu.org/PR7029
   8007  182. http://gcc.gnu.org/PR2903
   8008  183. http://gcc.gnu.org/PR7873
   8009  184. http://gcc.gnu.org/PR7680
   8010  185. http://gcc.gnu.org/PR8705
   8011  186. http://gcc.gnu.org/PR9986
   8012  187. http://gcc.gnu.org/PR10056
   8013  188. http://gcc.gnu.org/PR6744
   8014  189. http://gcc.gnu.org/PR7361
   8015  190. http://gcc.gnu.org/PR9496
   8016  191. http://gcc.gnu.org/PR7067
   8017  192. http://gcc.gnu.org/PR8480
   8018  193. http://gcc.gnu.org/PR8784
   8019  194. http://gcc.gnu.org/PR10315
   8020  195. http://gcc.gnu.org/PR10267
   8021  196. http://gcc.gnu.org/PR7916
   8022  197. http://gcc.gnu.org/PR7926
   8023  198. http://gcc.gnu.org/PR8555
   8024  199. http://gcc.gnu.org/PR8994
   8025  200. http://gcc.gnu.org/PR9426
   8026  201. http://gcc.gnu.org/PR9806
   8027  202. http://gcc.gnu.org/PR10077
   8028  203. http://gcc.gnu.org/PR10233
   8029  204. http://gcc.gnu.org/PR10286
   8030  205. http://gcc.gnu.org/PR10308
   8031  206. http://gcc.gnu.org/PR11272
   8032  207. http://gcc.gnu.org/PR5754
   8033  208. http://gcc.gnu.org/PR6597
   8034  209. http://gcc.gnu.org/PR6949
   8035  210. http://gcc.gnu.org/PR7053
   8036  211. http://gcc.gnu.org/PR8164
   8037  212. http://gcc.gnu.org/PR8384
   8038  213. http://gcc.gnu.org/PR9559
   8039  214. http://gcc.gnu.org/PR9649
   8040  215. http://gcc.gnu.org/PR9864
   8041  216. http://gcc.gnu.org/PR10432
   8042  217. http://gcc.gnu.org/PR10475
   8043  218. http://gcc.gnu.org/PR10635
   8044  219. http://gcc.gnu.org/PR10661
   8045  220. http://gcc.gnu.org/PR10700
   8046  221. http://gcc.gnu.org/PR10712
   8047  222. http://gcc.gnu.org/PR10796
   8048  223. http://gcc.gnu.org/PR10890
   8049  224. http://gcc.gnu.org/PR10939
   8050  225. http://gcc.gnu.org/PR10956
   8051  226. http://gcc.gnu.org/PR11041
   8052  227. http://gcc.gnu.org/PR11059
   8053  228. http://gcc.gnu.org/PR11083
   8054  229. http://gcc.gnu.org/PR11105
   8055  230. http://gcc.gnu.org/PR11149
   8056  231. http://gcc.gnu.org/PR11228
   8057  232. http://gcc.gnu.org/PR11282
   8058  233. http://gcc.gnu.org/PR11301
   8059  234. http://gcc.gnu.org/PR11308
   8060  235. http://gcc.gnu.org/PR11473
   8061  236. http://gcc.gnu.org/PR11503
   8062  237. http://gcc.gnu.org/PR11513
   8063  238. http://gcc.gnu.org/PR11198
   8064  239. http://gcc.gnu.org/PR11304
   8065  240. http://gcc.gnu.org/PR11381
   8066  241. http://gcc.gnu.org/PR11536
   8067  242. http://gcc.gnu.org/PR11557
   8068  243. http://gcc.gnu.org/PR5897
   8069  244. http://gcc.gnu.org/PR11279
   8070  245. http://gcc.gnu.org/PR11022
   8071  246. http://gcc.gnu.org/PR2330
   8072  247. http://gcc.gnu.org/PR5388
   8073  248. http://gcc.gnu.org/PR5390
   8074  249. http://gcc.gnu.org/PR7877
   8075  250. http://gcc.gnu.org/PR9393
   8076  251. http://gcc.gnu.org/PR10032
   8077  252. http://gcc.gnu.org/PR10468
   8078  253. http://gcc.gnu.org/PR10527
   8079  254. http://gcc.gnu.org/PR10679
   8080  255. http://gcc.gnu.org/PR10682
   8081  256. http://gcc.gnu.org/PR10689
   8082  257. http://gcc.gnu.org/PR10845
   8083  258. http://gcc.gnu.org/PR10849
   8084  259. http://gcc.gnu.org/PR10888
   8085  260. http://gcc.gnu.org/PR10929
   8086  261. http://gcc.gnu.org/PR10931
   8087  262. http://gcc.gnu.org/PR10940
   8088  263. http://gcc.gnu.org/PR10968
   8089  264. http://gcc.gnu.org/PR10990
   8090  265. http://gcc.gnu.org/PR11039
   8091  266. http://gcc.gnu.org/PR11062
   8092  267. http://gcc.gnu.org/PR11095
   8093  268. http://gcc.gnu.org/PR11098
   8094  269. http://gcc.gnu.org/PR11137
   8095  270. http://gcc.gnu.org/PR11154
   8096  271. http://gcc.gnu.org/PR11329
   8097  272. http://gcc.gnu.org/PR11332
   8098  273. http://gcc.gnu.org/PR11431
   8099  274. http://gcc.gnu.org/PR11528
   8100  275. http://gcc.gnu.org/PR11546
   8101  276. http://gcc.gnu.org/PR11567
   8102  277. http://gcc.gnu.org/PR11645
   8103  278. http://gcc.gnu.org/PR5179
   8104  279. http://gcc.gnu.org/PR8204
   8105  280. http://gcc.gnu.org/PR10838
   8106  281. http://gcc.gnu.org/PR10886
   8107  282. http://gcc.gnu.org/PR11349
   8108  283. http://gcc.gnu.org/PR4823
   8109  284. http://gcc.gnu.org/PR8878
   8110  285. http://gcc.gnu.org/PR9815
   8111  286. http://gcc.gnu.org/PR10402
   8112  287. http://gcc.gnu.org/PR10504
   8113  288. http://gcc.gnu.org/PR10673
   8114  289. http://gcc.gnu.org/PR11044
   8115  290. http://gcc.gnu.org/PR11089
   8116  291. http://gcc.gnu.org/PR11420
   8117  292. http://gcc.gnu.org/PR9362
   8118  293. http://gcc.gnu.org/PR10142
   8119  294. http://gcc.gnu.org/PR10663
   8120  295. http://gcc.gnu.org/PR10835
   8121  296. http://gcc.gnu.org/PR10876
   8122  297. http://gcc.gnu.org/PR10955
   8123  298. http://gcc.gnu.org/PR11018
   8124  299. http://gcc.gnu.org/PR11556
   8125  300. http://gcc.gnu.org/PR10907
   8126  301. http://gcc.gnu.org/PR11320
   8127  302. http://gcc.gnu.org/PR11599
   8128  303. http://gcc.gnu.org/PR9745
   8129  304. http://gcc.gnu.org/PR10871
   8130  305. http://gcc.gnu.org/PR11440
   8131  306. http://gcc.gnu.org/PR7594
   8132  307. http://gcc.gnu.org/PR10557
   8133  308. http://gcc.gnu.org/PR11054
   8134  309. http://gcc.gnu.org/PR10834
   8135  310. http://gcc.gnu.org/PR10842
   8136  311. http://gcc.gnu.org/PR11052
   8137  312. http://gcc.gnu.org/PR11183
   8138  313. http://gcc.gnu.org/PR11084
   8139  314. http://gcc.gnu.org/PR10331
   8140  315. http://gcc.gnu.org/PR10413
   8141  316. http://gcc.gnu.org/PR11096
   8142  317. http://gcc.gnu.org/PR2873
   8143  318. http://gcc.gnu.org/PR3163
   8144  319. http://gcc.gnu.org/PR5287
   8145  320. http://gcc.gnu.org/PR10148
   8146  321. http://gcc.gnu.org/PR8787
   8147  322. http://gcc.gnu.org/PR10900
   8148  323. http://gcc.gnu.org/PR1607
   8149  324. http://gcc.gnu.org/PR4252
   8150  325. http://gcc.gnu.org/PR4490
   8151  326. http://gcc.gnu.org/PR10355
   8152  327. http://gcc.gnu.org/PR10726
   8153  328. http://gcc.gnu.org/PR10805
   8154  329. http://gcc.gnu.org/PR10815
   8155  330. http://gcc.gnu.org/PR10877
   8156  331. http://gcc.gnu.org/PR11280
   8157  332. http://gcc.gnu.org/PR11466
   8158  333. http://gcc.gnu.org/PR10737
   8159  334. http://gcc.gnu.org/PR10810
   8160  335. http://gcc.gnu.org/bugzilla/
   8161  336. http://gcc.gnu.org/PR8336
   8162  337. http://gcc.gnu.org/PR9330
   8163  338. http://gcc.gnu.org/PR9631
   8164  339. http://gcc.gnu.org/PR9877
   8165  340. http://gcc.gnu.org/PR11687
   8166  341. http://gcc.gnu.org/PR12263
   8167  342. http://gcc.gnu.org/PR12490
   8168  343. http://gcc.gnu.org/PR7277
   8169  344. http://gcc.gnu.org/PR7939
   8170  345. http://gcc.gnu.org/PR11063
   8171  346. http://gcc.gnu.org/PR11207
   8172  347. http://gcc.gnu.org/PR11522
   8173  348. http://gcc.gnu.org/PR11595
   8174  349. http://gcc.gnu.org/PR11646
   8175  350. http://gcc.gnu.org/PR11665
   8176  351. http://gcc.gnu.org/PR11852
   8177  352. http://gcc.gnu.org/PR11878
   8178  353. http://gcc.gnu.org/PR11883
   8179  354. http://gcc.gnu.org/PR11991
   8180  355. http://gcc.gnu.org/PR12146
   8181  356. http://gcc.gnu.org/PR12215
   8182  357. http://gcc.gnu.org/PR12369
   8183  358. http://gcc.gnu.org/PR12446
   8184  359. http://gcc.gnu.org/PR12510
   8185  360. http://gcc.gnu.org/PR12544
   8186  361. http://gcc.gnu.org/PR9862
   8187  362. http://gcc.gnu.org/PR10962
   8188  363. http://gcc.gnu.org/PR11370
   8189  364. http://gcc.gnu.org/PR11637
   8190  365. http://gcc.gnu.org/PR11885
   8191  366. http://gcc.gnu.org/PR12082
   8192  367. http://gcc.gnu.org/PR12180
   8193  368. http://gcc.gnu.org/PR12340
   8194  369. http://gcc.gnu.org/PR3907
   8195  370. http://gcc.gnu.org/PR5293
   8196  371. http://gcc.gnu.org/PR5296
   8197  372. http://gcc.gnu.org/PR7939
   8198  373. http://gcc.gnu.org/PR8656
   8199  374. http://gcc.gnu.org/PR10147
   8200  375. http://gcc.gnu.org/PR11400
   8201  376. http://gcc.gnu.org/PR11409
   8202  377. http://gcc.gnu.org/PR11740
   8203  378. http://gcc.gnu.org/PR11786
   8204  379. http://gcc.gnu.org/PR11867
   8205  380. http://gcc.gnu.org/PR11928
   8206  381. http://gcc.gnu.org/PR12114
   8207  382. http://gcc.gnu.org/PR12163
   8208  383. http://gcc.gnu.org/PR12181
   8209  384. http://gcc.gnu.org/PR12236
   8210  385. http://gcc.gnu.org/PR12266
   8211  386. http://gcc.gnu.org/PR12296
   8212  387. http://gcc.gnu.org/PR12298
   8213  388. http://gcc.gnu.org/PR12369
   8214  389. http://gcc.gnu.org/PR12337
   8215  390. http://gcc.gnu.org/PR12344
   8216  391. http://gcc.gnu.org/PR12451
   8217  392. http://gcc.gnu.org/PR12486
   8218  393. http://gcc.gnu.org/PR8869
   8219  394. http://gcc.gnu.org/PR9786
   8220  395. http://gcc.gnu.org/PR11689
   8221  396. http://gcc.gnu.org/PR12116
   8222  397. http://gcc.gnu.org/PR12070
   8223  398. http://gcc.gnu.org/PR11184
   8224  399. http://gcc.gnu.org/PR11535
   8225  400. http://gcc.gnu.org/PR11693
   8226  401. http://gcc.gnu.org/PR12224
   8227  402. http://gcc.gnu.org/PR11087
   8228  403. http://gcc.gnu.org/PR11319
   8229  404. http://gcc.gnu.org/PR11949
   8230  405. http://gcc.gnu.org/PR11662
   8231  406. http://gcc.gnu.org/PR11965
   8232  407. http://gcc.gnu.org/PR12301
   8233  408. http://gcc.gnu.org/PR11717
   8234  409. http://gcc.gnu.org/PR11313
   8235  410. http://gcc.gnu.org/PR11712
   8236  411. http://gcc.gnu.org/PR12166
   8237  412. http://gcc.gnu.org/PR12101
   8238  413. http://gcc.gnu.org/PR10988
   8239  414. http://gcc.gnu.org/PR11805
   8240  415. http://gcc.gnu.org/PR11902
   8241  416. http://gcc.gnu.org/PR11903
   8242  417. http://gcc.gnu.org/bugzilla/
   8243  418. http://gcc.gnu.org/PR11890
   8244  419. http://gcc.gnu.org/PR12399
   8245  420. http://gcc.gnu.org/PR13068
   8246  421. http://gcc.gnu.org/PR10060
   8247  422. http://gcc.gnu.org/PR10555
   8248  423. http://gcc.gnu.org/PR10706
   8249  424. http://gcc.gnu.org/PR11496
   8250  425. http://gcc.gnu.org/PR11741
   8251  426. http://gcc.gnu.org/PR12440
   8252  427. http://gcc.gnu.org/PR12632
   8253  428. http://gcc.gnu.org/PR12712
   8254  429. http://gcc.gnu.org/PR12726
   8255  430. http://gcc.gnu.org/PR12890
   8256  431. http://gcc.gnu.org/PR12900
   8257  432. http://gcc.gnu.org/PR13060
   8258  433. http://gcc.gnu.org/PR13289
   8259  434. http://gcc.gnu.org/PR13318
   8260  435. http://gcc.gnu.org/PR13392
   8261  436. http://gcc.gnu.org/PR13574
   8262  437. http://gcc.gnu.org/PR13475
   8263  438. http://gcc.gnu.org/PR13797
   8264  439. http://gcc.gnu.org/PR13824
   8265  440. http://gcc.gnu.org/PR8776
   8266  441. http://gcc.gnu.org/PR10339
   8267  442. http://gcc.gnu.org/PR11350
   8268  443. http://gcc.gnu.org/PR12826
   8269  444. http://gcc.gnu.org/PR12500
   8270  445. http://gcc.gnu.org/PR12941
   8271  446. http://gcc.gnu.org/PR12953
   8272  447. http://gcc.gnu.org/PR13041
   8273  448. http://gcc.gnu.org/PR13507
   8274  449. http://gcc.gnu.org/PR13382
   8275  450. http://gcc.gnu.org/PR13394
   8276  451. http://gcc.gnu.org/PR13400
   8277  452. http://gcc.gnu.org/PR13521
   8278  453. http://gcc.gnu.org/PR2094
   8279  454. http://gcc.gnu.org/PR2294
   8280  455. http://gcc.gnu.org/PR5050
   8281  456. http://gcc.gnu.org/PR9371
   8282  457. http://gcc.gnu.org/PR9546
   8283  458. http://gcc.gnu.org/PR10081
   8284  459. http://gcc.gnu.org/PR10093
   8285  460. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#61
   8286  461. http://gcc.gnu.org/PR10095
   8287  462. http://gcc.gnu.org/PR11554
   8288  463. http://gcc.gnu.org/PR12297
   8289  464. http://gcc.gnu.org/PR12352
   8290  465. http://gcc.gnu.org/PR12438
   8291  466. http://gcc.gnu.org/PR12540
   8292  467. http://gcc.gnu.org/PR12594
   8293  468. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#60
   8294  469. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#63
   8295  470. http://gcc.gnu.org/PR12657
   8296  471. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#292
   8297  472. http://gcc.gnu.org/PR12696
   8298  473. http://gcc.gnu.org/PR12815
   8299  474. http://gcc.gnu.org/PR12862
   8300  475. http://gcc.gnu.org/PR12926
   8301  476. http://gcc.gnu.org/PR12967
   8302  477. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html
   8303  478. http://gcc.gnu.org/PR12971
   8304  479. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#328
   8305  480. http://gcc.gnu.org/PR13007
   8306  481. http://gcc.gnu.org/PR13009
   8307  482. http://gcc.gnu.org/PR13057
   8308  483. http://gcc.gnu.org/PR13070
   8309  484. http://gcc.gnu.org/PR13081
   8310  485. http://gcc.gnu.org/PR13239
   8311  486. http://gcc.gnu.org/PR13262
   8312  487. http://gcc.gnu.org/PR13290
   8313  488. http://gcc.gnu.org/PR13323
   8314  489. http://gcc.gnu.org/PR13369
   8315  490. http://gcc.gnu.org/PR13371
   8316  491. http://gcc.gnu.org/PR13445
   8317  492. http://gcc.gnu.org/PR13461
   8318  493. http://gcc.gnu.org/PR13462
   8319  494. http://gcc.gnu.org/PR13478
   8320  495. http://gcc.gnu.org/PR13544
   8321  496. http://gcc.gnu.org/PR13650
   8322  497. http://gcc.gnu.org/PR13683
   8323  498. http://gcc.gnu.org/PR13688
   8324  499. http://gcc.gnu.org/PR13774
   8325  500. http://gcc.gnu.org/PR13884
   8326  501. http://gcc.gnu.org/PR10746
   8327  502. http://gcc.gnu.org/PR11433
   8328  503. http://gcc.gnu.org/PR12633
   8329  504. http://gcc.gnu.org/PR13037
   8330  505. http://gcc.gnu.org/PR13213
   8331  506. http://gcc.gnu.org/PR4490
   8332  507. http://gcc.gnu.org/PR12292
   8333  508. http://gcc.gnu.org/PR12441
   8334  509. http://gcc.gnu.org/PR12943
   8335  510. http://gcc.gnu.org/PR13608
   8336  511. http://gcc.gnu.org/PR11598
   8337  512. http://gcc.gnu.org/PR11793
   8338  513. http://gcc.gnu.org/PR12467
   8339  514. http://gcc.gnu.org/PR12537
   8340  515. http://gcc.gnu.org/PR12496
   8341  516. http://gcc.gnu.org/PR12865
   8342  517. http://gcc.gnu.org/PR13354
   8343  518. http://gcc.gnu.org/PR10467
   8344  519. http://gcc.gnu.org/PR11226
   8345  520. http://gcc.gnu.org/PR11227
   8346  521. http://gcc.gnu.org/PR12644
   8347  522. http://gcc.gnu.org/PR13149
   8348  523. http://gcc.gnu.org/PR12654
   8349  524. http://gcc.gnu.org/PR12965
   8350  525. http://gcc.gnu.org/PR13031
   8351  526. http://gcc.gnu.org/PR11634
   8352  527. http://gcc.gnu.org/PR12158
   8353  528. http://gcc.gnu.org/PR11992
   8354  529. http://gcc.gnu.org/PR9365
   8355  530. http://gcc.gnu.org/PR10392
   8356  531. http://gcc.gnu.org/PR11322
   8357  532. http://gcc.gnu.org/PR13069
   8358  533. http://gcc.gnu.org/PR13302
   8359  534. http://gcc.gnu.org/PR13585
   8360  535. http://gcc.gnu.org/PR8916
   8361  536. http://gcc.gnu.org/PR11576
   8362  537. http://gcc.gnu.org/PR13122
   8363  538. http://gcc.gnu.org/PR13256
   8364  539. http://gcc.gnu.org/PR13373
   8365  540. http://gcc.gnu.org/PR12561
   8366  541. http://gcc.gnu.org/PR6243
   8367  542. http://gcc.gnu.org/PR11397
   8368  543. http://gcc.gnu.org/PR12505
   8369  544. http://gcc.gnu.org/PR13150
   8370  545. http://gcc.gnu.org/PR12666
   8371  546. http://gcc.gnu.org/PR12969
   8372  547. http://gcc.gnu.org/PR10819
   8373  548. http://gcc.gnu.org/PR11612
   8374  549. http://gcc.gnu.org/PR13211
   8375  550. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.4
   8376  551. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.5
   8377  552. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.6
   8378  553. http://gcc.gnu.org/onlinedocs/
   8379  554. mailto:gcc-help (a] gcc.gnu.org
   8380  555. mailto:gcc (a] gcc.gnu.org
   8381  556. http://gcc.gnu.org/lists.html
   8382  557. http://www.fsf.org/
   8383  558. http://gcc.gnu.org/about.html
   8384  559. http://validator.w3.org/check/referer
   8385 ======================================================================
   8386 http://gcc.gnu.org/gcc-3.2/index.html
   8387 
   8388                              GCC 3.2 Release Series
   8389 
   8390    April 25, 2003
   8391 
   8392    The [1]GNU project and the GCC developers are pleased to announce the
   8393    release of GCC 3.2.3.
   8394 
   8395    The purpose of the GCC 3.2 release series is to provide a stable
   8396    platform for OS distributors to use building their next releases. A
   8397    primary objective was to stabilize the C++ ABI; we believe that the
   8398    interface to the compiler and the C++ standard library are now
   8399    relatively stable.
   8400 
   8401    Be aware that C++ code compiled by GCC 3.2.x will (in general) not
   8402    interoperate with code compiled by GCC 3.1.1 or earlier.
   8403 
   8404    Please refer to our [2]detailed list of news, caveats, and bug-fixes
   8405    for further information.
   8406 
   8407 Release History
   8408 
   8409    GCC 3.2.3
   8410           April 25, 2003 ([3]changes)
   8411 
   8412    GCC 3.2.2
   8413           February 5, 2003 ([4]changes)
   8414 
   8415    GCC 3.2.1
   8416           November 19, 2002 ([5]changes)
   8417 
   8418    GCC 3.2
   8419           August 14, 2002 ([6]changes)
   8420 
   8421 References and Acknowledgements
   8422 
   8423    GCC used to stand for the GNU C Compiler, but since the compiler
   8424    supports several other languages aside from C, it now stands for the
   8425    GNU Compiler Collection.
   8426 
   8427    A list of [7]successful builds is updated as new information becomes
   8428    available.
   8429 
   8430    The GCC developers would like to thank the numerous people that have
   8431    contributed new features, improvements, bug fixes, and other changes as
   8432    well as test results to GCC. This [8]amazing group of volunteers is
   8433    what makes GCC successful.
   8434 
   8435    For additional information about GCC please refer to the [9]GCC project
   8436    web site or contact the [10]GCC development mailing list.
   8437 
   8438    To obtain GCC please use [11]our mirror sites, or our CVS server.
   8439 
   8440 
   8441     For questions related to the use of GCC, please consult these web
   8442     pages and the [12]GCC manuals. If that fails, the
   8443     [13]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   8444     web pages and the development of GCC are welcome on our developer
   8445     list at [14]gcc (a] gcc.gnu.org. All of [15]our lists have public
   8446     archives.
   8447 
   8448    Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and
   8449    distribution of this entire article is permitted in any medium,
   8450    provided this notice is preserved.
   8451 
   8452    These pages are [17]maintained by the GCC team. Last modified
   8453    2011-04-25[18].
   8454 
   8455 References
   8456 
   8457    1. http://www.gnu.org/
   8458    2. http://gcc.gnu.org/gcc-3.2/changes.html
   8459    3. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
   8460    4. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.2
   8461    5. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.1
   8462    6. http://gcc.gnu.org/gcc-3.2/changes.html#3.2
   8463    7. http://gcc.gnu.org/gcc-3.2/buildstat.html
   8464    8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   8465    9. http://gcc.gnu.org/index.html
   8466   10. mailto:gcc (a] gcc.gnu.org
   8467   11. http://gcc.gnu.org/mirrors.html
   8468   12. http://gcc.gnu.org/onlinedocs/
   8469   13. mailto:gcc-help (a] gcc.gnu.org
   8470   14. mailto:gcc (a] gcc.gnu.org
   8471   15. http://gcc.gnu.org/lists.html
   8472   16. http://www.fsf.org/
   8473   17. http://gcc.gnu.org/about.html
   8474   18. http://validator.w3.org/check/referer
   8475 ======================================================================
   8476 http://gcc.gnu.org/gcc-3.2/changes.html
   8477 
   8478                              GCC 3.2 Release Series
   8479                         Changes, New Features, and Fixes
   8480 
   8481    The latest release in the 3.2 release series is [1]GCC 3.2.3.
   8482 
   8483 Caveats and New Features
   8484 
   8485   Caveats
   8486 
   8487      * The C++ compiler does not correctly zero-initialize
   8488        pointers-to-data members. You must explicitly initialize them. For
   8489        example: int S::*m(0); will work, but depending on
   8490        default-initialization to zero will not work. This bug cannot be
   8491        fixed in GCC 3.2 without inducing unacceptable risks. It will be
   8492        fixed in GCC 3.3.
   8493      * This GCC release is based on the GCC 3.1 sourcebase, and thus has
   8494        all the [2]changes in the GCC 3.1 series. In addition, GCC 3.2 has
   8495        a number of C++ ABI fixes which make its C++ compiler generate
   8496        binary code which is incompatible with the C++ compilers found in
   8497        earlier GCC releases, including GCC 3.1 and GCC 3.1.1.
   8498 
   8499   Frontend Enhancements
   8500 
   8501     C/C++/Objective-C
   8502 
   8503      * The method of constructing the list of directories to be searched
   8504        for header files has been revised. If a directory named by a -I
   8505        option is a standard system include directory, the option is
   8506        ignored to ensure that the default search order for system
   8507        directories and the special treatment of system header files are
   8508        not defeated.
   8509      * The C and Objective-C compilers no longer accept the "Naming Types"
   8510        extension (typedef foo = bar); it was already unavailable in C++.
   8511        Code which uses it will need to be changed to use the "typeof"
   8512        extension instead: typedef typeof(bar) foo. (We have removed this
   8513        extension without a period of deprecation because it has caused the
   8514        compiler to crash since version 3.0 and no one noticed until very
   8515        recently. Thus we conclude it is not in widespread use.)
   8516 
   8517     C++
   8518 
   8519      * GCC 3.2 fixed serveral differences between the C++ ABI implemented
   8520        in GCC and the multi-vendor standard, but more have been found
   8521        since the release. 3.2.1 adds a new warning, -Wabi, to warn about
   8522        code which is affected by these bugs. We will fix these bugs in
   8523        some future release, once we are confident that all have been
   8524        found; until then, it is our intention to make changes to the ABI
   8525        only if they are necessary for correct compilation of C++, as
   8526        opposed to conformance to the ABI documents.
   8527      * For details on how to build an ABI compliant compiler for GNU/Linux
   8528        systems, check the [3]common C++ ABI page.
   8529 
   8530   New Targets and Target Specific Improvements
   8531 
   8532     IA-32
   8533 
   8534      * Fixed a number of bugs in SSE and MMX intrinsics.
   8535      * Fixed common compiler crashes with SSE instruction set enabled
   8536        (implied by -march=pentium3, pentium4, athlon-xp)
   8537      * __m128 and __m128i is not 128bit aligned when used in structures.
   8538 
   8539     x86-64
   8540 
   8541      * A bug whereby the compiler could generate bad code for bzero has
   8542        been fixed.
   8543      * ABI fixes (implying ABI incompatibilities with previous version in
   8544        some corner cases)
   8545      * Fixed prefetch code generation
   8546      __________________________________________________________________
   8547 
   8548 GCC 3.2.3
   8549 
   8550    3.2.3 is a bug fix release only; there are no new features that were
   8551    not present in GCC 3.2.2.
   8552 
   8553   Bug Fixes
   8554 
   8555    This section lists the problem reports (PRs) from GCC's bug tracking
   8556    system that are known to be fixed in the 3.2.3 release. This list might
   8557    not be complete (that is, it is possible that some PRs that have been
   8558    fixed are not listed here), and some of the titles have been changed to
   8559    make them more clear.
   8560 
   8561     Internal Compiler Errors (multi-platform)
   8562 
   8563      * [4]3782: (c++) -quiet -fstats produces a segmentation fault in
   8564        cc1plus
   8565      * [5]6440: (c++) template specializations cause ICE
   8566      * [6]7050: (c++) ICE on: (i ? get_string() : throw)
   8567      * [7]7741: ICE on conflicting types (make_decl_rtl in varasm.c)
   8568      * [8]7982: (c++) ICE due to infinite recursion (using STL set)
   8569      * [9]8068: exceedingly high (infinite) memory usage
   8570      * [10]8178: ICE with __builtin_ffs
   8571      * [11]8396: ICE in copy_to_mode_reg, in explow.c
   8572      * [12]8674: (c++) ICE in cp_expr_size, in cp/cp-lang.c
   8573      * [13]9768: ICE when optimizing inline code at -O2
   8574      * [14]9798: (c++) Infinite recursion (segfault) in
   8575        cp/decl.c:push_using_directive with recursive using directives
   8576      * [15]9799: mismatching structure initializer with nested flexible
   8577        array member: ICE
   8578      * [16]9928: ICE on duplicate enum declaration
   8579      * [17]10114: ICE in mem_loc_descriptor, in dwarf2out.c (affects
   8580        sparc, alpha)
   8581      * [18]10352: ICE in find_reloads_toplev
   8582      * [19]10336: ICE with -Wunreachable-code
   8583 
   8584     C/optimizer bugs:
   8585 
   8586      * [20]8224: Incorrect joining of signed and unsigned division
   8587      * [21]8613: -O2 produces wrong code with builtin strlen and
   8588        postincrements
   8589      * [22]8828: gcc reports some code is unreachable when it is not
   8590      * [23]9226: GCSE breaking argument passing
   8591      * [24]9853: miscompilation of non-constant structure initializer
   8592      * [25]9797: C99-style struct initializers are miscompiled
   8593      * [26]9967: Some standard C function calls should not be replaced
   8594        when optimizing for size
   8595      * [27]10116: ce2: invalid merge of join_bb in the context of switch
   8596        statements
   8597      * [28]10171: wrong code for inlined function
   8598      * [29]10175: -Wunreachable-code doesn't work for single lines
   8599 
   8600     C++ compiler and library:
   8601 
   8602      * [30]8316: Confusing diagnostic for code that misuses conversion
   8603        operators
   8604      * [31]9169: filebuf output fails if codecvt<>::out returns noconv
   8605      * [32]9420: incomplete type incorrectly reported
   8606      * [33]9459: typeof in return type specification of template not
   8607        supported
   8608      * [34]9507: filebuf::open handles ios_base::ate incorrectly
   8609      * [35]9538: Out-of-bounds memory access in streambuf::sputbackc
   8610      * [36]9602: Total confusion about template/friend/virtual/abstract
   8611      * [37]9993: destructor not called for local object created within and
   8612        returned from infinite loop
   8613      * [38]10167: ieee_1003.1-2001 locale specialisations on a glibc-2.3.2
   8614        system
   8615 
   8616     Java compiler and library:
   8617 
   8618      * [39]9652: libgcj build fails on irix6.5.1[78]
   8619      * [40]10144: gas on solaris complains about bad .stabs lines for
   8620        java, native as unaffected
   8621 
   8622     x86-specific (Intel/AMD):
   8623 
   8624      * [41]8746: gcc miscompiles Linux kernel ppa driver on x86
   8625      * [42]9888: -mcpu=k6 -Os produces out of range loop instructions
   8626      * [43]9638: Cross-build for target i386-elf and i586-pc-linux-gnu
   8627        failed
   8628      * [44]9954: Cross-build for target i586-pc-linux-gnu (--with-newlib)
   8629        failed
   8630 
   8631     SPARC-specific:
   8632 
   8633      * [45]7784: [Sparc] ICE in extract_insn, in recog.c
   8634      * [46]7796: sparc extra failure with -m64 on execute/930921-1.c in
   8635        unroll.c
   8636      * [47]8281: ICE when compiling with -O2 -fPIC for Ultrasparc
   8637      * [48]8366: [Sparc] C testsuite failure with -m64 -fpic -O in
   8638        execute/loop-2d.c
   8639      * [49]8726: gcc -O2 miscompiles Samba 2.2.7 on 32-bit sparc
   8640      * [50]9414: Scheduling bug on Ultrasparc
   8641      * [51]10067: GCC-3.2.2 outputs invalid asm on sparc64
   8642 
   8643     m68k-specific:
   8644 
   8645      * [52]7248: broken "inclusive or" code
   8646      * [53]8343: m68k-elf/rtems ICE at instantiate_virtual_regs_1
   8647 
   8648     PowerPC-specific:
   8649 
   8650      * [54]9732: Wrong code with -O2 -fPIC
   8651      * [55]10073: ICE: powerpc cannot split insn
   8652 
   8653     Alpha-specific:
   8654 
   8655      * [56]7702: optimization problem on a DEC alpha under OSF1
   8656      * [57]9671: gcc.3.2.2 does not build on a HP Tru64 Unix v5.1B system
   8657 
   8658     HP-specific:
   8659 
   8660      * [58]8694: <string> breaks <ctype.h> on HP-UX 10.20 (DUP: 9275)
   8661      * [59]9953: (ada) gcc 3.2.x can't build 3.3-branch ada on HP-UX 10
   8662        (missing symbol)
   8663      * [60]10271: Floating point args don't get reloaded across function
   8664        calls with -O2
   8665 
   8666     MIPS specific:
   8667 
   8668      * [61]6362: mips-irix6 gcc-3.1 C testsuite failure with -mips4 in
   8669        compile/920501-4.c
   8670 
   8671     CRIS specific:
   8672 
   8673      * [62]10377: gcc-3.2.2 creates bad assembler code for cris
   8674 
   8675     Miscellaneous and minor bugs:
   8676 
   8677      * [63]6955: collect2 says "core dumped" when there is no core
   8678      __________________________________________________________________
   8679 
   8680 GCC 3.2.2
   8681 
   8682    Beginning with 3.2.2, GCC's Makefile suite supports redirection of make
   8683    install by means of the DESTDIR variable. Parts of the GCC tree have
   8684    featured that support long before, but now it is available even from
   8685    the top level.
   8686 
   8687    Other than that, GCC 3.2.2 is a bug fix release only; there are no new
   8688    features that were not present in GCC 3.2.1.
   8689 
   8690   Bug Fixes
   8691 
   8692    On the following i386-based systems GCC 3.2.1 broke the C ABI wrt.
   8693    functions returning structures: Cygwin, FreeBSD (GCC 3.2.1 as shipped
   8694    with FreeBSD 5.0 does not have this problem), Interix, a.out-based
   8695    GNU/Linux and NetBSD, OpenBSD, and Darwin. GCC 3.2.2 reverts this ABI
   8696    change, and thus restores ABI-compatibility with previous releases
   8697    (except GCC 3.2.1) on these platforms.
   8698 
   8699    This section lists the problem reports (PRs) from GCC's bug tracking
   8700    system that are known to be fixed in the 3.2.2 release. This list might
   8701    not be complete (that is, it is possible that some PRs that have been
   8702    fixed are not listed here) and some of the titles have been changed to
   8703    make them more clear.
   8704 
   8705     Internal Compiler Errors (multi-platform)
   8706 
   8707      * [64]5919: (c++) ICE when passing variable array to template
   8708        function
   8709      * [65]7129: (c++) ICE with min/max assignment operators (<?= and >?=)
   8710      * [66]7507: ICE with -O2 when address of called function is a
   8711        complicated expression
   8712      * [67]7622: ICE with nested inline functions if function's address is
   8713        taken
   8714      * [68]7681: (fortran) ICE in compensate_edge, in reg-stack.c (also PR
   8715        [69]9258)
   8716      * [70]8031: (c++) ICE in code comparing typeids and casting from
   8717        virtual base
   8718      * [71]8275: ICE in simplify_subreg
   8719      * [72]8332: (c++) builtin strlen/template interaction causes ICE
   8720      * [73]8372: (c++) ICE on explicit call of destructor
   8721      * [74]8439: (c, not c++) empty struct causes ICE
   8722      * [75]8442: (c++) ICE with nested template classes
   8723      * [76]8518: ICE when compiling mplayer ("extern inline" issue)
   8724      * [77]8615: (c++) ICE with out-of-range character constant template
   8725        argument
   8726      * [78]8663: (c++) ICE in cp_expr_size, at cp-lang.c:307
   8727      * [79]8799: (c++) ICE: error reporting routines re-entered
   8728      * [80]9328: (c++) ICE with typeof(X) for overloaded X
   8729      * [81]9465: (preprocessor) cpp -traditional ICE on null bytes
   8730 
   8731     C++ (compiler and library) bugs
   8732 
   8733      * [82]47: scoping in nested classes is broken
   8734      * [83]6745: problems with iostream rdbuf() member function
   8735      * [84]8214: conversion from const char* const to char* sometimes
   8736        accepted illegally
   8737      * [85]8493: builtin strlen and overload resolution (same bug as
   8738        [86]8332)
   8739      * [87]8503: strange behaviour of function types
   8740      * [88]8727: compiler confused by inheritance from an anonymous struct
   8741      * [89]7445: poor performance of std::locale::classic() in
   8742        multi-threaded applications
   8743      * [90]8230: mishandling of overflow in vector<T>::resize
   8744      * [91]8399: sync_with_stdio(false) breaks unformatted input
   8745      * [92]8662: illegal access of private member of unnamed class is
   8746        accepted
   8747      * [93]8707: "make distclean" fails in libstdc++-v3 directory
   8748      * [94]8708: __USE_MALLOC doesn't work
   8749      * [95]8790: Use of non-thread-safe strtok in src/localename.cc
   8750      * [96]8887: Bug in date formats with --enable-clocale=generic
   8751      * [97]9076: Call Frame Instructions are not handled correctly during
   8752        unwind operation
   8753      * [98]9151: std::setprecision limited to 16 digits when outputting a
   8754        double to a stream
   8755      * [99]9168: codecvt<char, char, mbstate_t> overwrites output buffers
   8756      * [100]9269: libstdc++ headers: explicit specialization of function
   8757        must precede its first use
   8758      * [101]9322: return value of basic_streambuf<>::getloc affected by
   8759        locale::global
   8760      * [102]9433: segfault in runtime support for dynamic_cast
   8761 
   8762     C and optimizer bugs
   8763 
   8764      * [103]8032: GCC incorrectly initializes static structs that have
   8765        flexible arrays
   8766      * [104]8639: simple arithmetic expression broken
   8767      * [105]8794: optimization improperly eliminates certain expressions
   8768      * [106]8832: traditional "asm volatile" code is illegally optimized
   8769      * [107]8988: loop optimizer bug: with -O2, code is generated that
   8770        segfaults (found on i386, bug present for all platforms)
   8771      * [108]9492: structure copy clobbers subsequent stores to structure
   8772 
   8773     Objective-C bugs
   8774 
   8775      * [109]9267: Objective-C parser won't build with newer bison versions
   8776        (e.g. 1.875)
   8777 
   8778     Ada bugs
   8779 
   8780      * [110]8344: Ada build problem due to conflict between gcc/final.o,
   8781        gcc/ada/final.o
   8782 
   8783     Preprocessor bugs
   8784 
   8785      * [111]8524: _Pragma within macros is improperly expanded
   8786      * [112]8880: __WCHAR_TYPE__ macro incorrectly set to "long int" with
   8787        -fshort-wchar
   8788 
   8789     ARM-specific
   8790 
   8791      * [113]9090: arm ICE with >= -O2; regression from gcc-2.95
   8792 
   8793     x86-specific (Intel/AMD)
   8794 
   8795      * [114]8588: ICE in extract_insn, at recog.c:NNNN (shift instruction)
   8796      * [115]8599: loop unroll bug with -march=k6-3
   8797      * [116]9506: ABI breakage in structure return (affects BSD and
   8798        Cygwin, but not GNU/Linux)
   8799 
   8800     FreeBSD 5.0 specific
   8801 
   8802      * [117]9484: GCC 3.2.1 Bootstrap failure on FreeBSD 5.0
   8803 
   8804     RTEMS-specific
   8805 
   8806      * [118]9292: hppa1.1-rtems configurery problems
   8807      * [119]9293: [m68k-elf/rtems] config/m68k/t-crtstuff bug
   8808      * [120]9295: [mips-rtems] config/mips/rtems.h init/fini issue
   8809      * [121]9296: gthr-rtems regression
   8810      * [122]9316: powerpc-rtems: extending multilibs
   8811 
   8812     HP-PA specific
   8813 
   8814      * [123]9493: ICE with -O2 when building a simple function
   8815 
   8816     Documentation
   8817 
   8818      * [124]7341: hyperlink to gcov in GCC documentation doesn't work
   8819      * [125]8947: Please add a warning about "-malign-double" in docs
   8820      * [126]7448, [127]8882: typo cleanups
   8821      __________________________________________________________________
   8822 
   8823 GCC 3.2.1
   8824 
   8825    3.2.1 adds a new warning, -Wabi. This option warns when GNU C++
   8826    generates code that is known not to be binary-compatible with the
   8827    vendor-neutral ia32/ia64 ABI. Please consult the GCC manual, included
   8828    in the distribution, for details.
   8829 
   8830    This release also removes an old GCC extension, "naming types", and the
   8831    documentation now directs users to use a different GCC extension,
   8832    __typeof__, instead. The feature had evidently been broken for a while.
   8833 
   8834    Otherwise, 3.2.1 is a bug fix release only; other than bug fixes and
   8835    the new warning there are no new features that were not present in GCC
   8836    3.2.
   8837 
   8838    In addition, the previous fix for [128]PR 7445 (poor performance of
   8839    std::locale::classic() in multi-threaded applications) was reverted
   8840    ("unfixed"), because the "fix" was not thread-safe.
   8841 
   8842   Bug Fixes
   8843 
   8844    This section lists the problem reports (PRs) from GCC's bug tracking
   8845    system that are known to be fixed in the 3.2.1 release. This list might
   8846    not be complete (that is, it is possible that some PRs that have been
   8847    fixed are not listed here). As you can see, the number of bug fixes is
   8848    quite large, so it is strongly recommended that users of earlier GCC
   8849    3.x releases upgrade to GCC 3.2.1.
   8850 
   8851     Internal Compiler Errors (multi-platform)
   8852 
   8853      * [129]2521: (c++) ICE in build_ptrmemfunc, in cp/typeck.c
   8854      * [130]5661: (c++) ICE instantiating template on array of unknown
   8855        size (bad code)
   8856      * [131]6419: (c++) ICE in make_decl_rtl for "longest" attribute on
   8857        64-bit platforms
   8858      * [132]6994: (c++) ICE in find_function_data
   8859      * [133]7150: preprocessor: GCC -dM -E gives an ICE
   8860      * [134]7160: ICE when optimizing branches without a return value
   8861      * [135]7228: (c++) ICE when using member template and template
   8862        function
   8863      * [136]7266: (c++) ICE with -pedantic on missing typename
   8864      * [137]7353: ICE from use of "Naming Types" extension, see above
   8865      * [138]7411: ICE in instantiate_virtual_regs_1, in function.c
   8866      * [139]7478: (c++) ICE on static_cast inside template
   8867      * [140]7526: preprocessor core dump when _Pragma implies #pragma
   8868        dependency
   8869      * [141]7721: (c++) ICE on simple (but incorrect) template ([142]7803
   8870        is a duplicate)
   8871      * [143]7754: (c++) ICE on union with template parameter
   8872      * [144]7788: (c++) redeclaring a definition as an incomplete class
   8873        causes ICE
   8874      * [145]8031: (c++) ICE in comptypes, in cp/typeck.c
   8875      * [146]8055: preprocessor dies with SIG11 when building FreeBSD
   8876        kernel
   8877      * [147]8067: (c++) ICE due to mishandling of __FUNCTION__ and related
   8878        variables
   8879      * [148]8134: (c++) ICE in force_store_init_value on legal code
   8880      * [149]8149: (c++) ICE on incomplete type
   8881      * [150]8160: (c++) ICE in build_modify_expr, in cp/typeck.c: array
   8882        initialization
   8883 
   8884     C++ (compiler and library) bugs
   8885 
   8886      * [151]5607: No pointer adjustment in covariant return types
   8887      * [152]6579: Infinite loop with statement expressions in member
   8888        initialization
   8889      * [153]6803: Default copy constructor bug in GCC 3.1
   8890      * [154]7176: g++ confused by friend and static member with same name
   8891      * [155]7188: Segfault with template class and recursive (incorrect)
   8892        initializer list
   8893      * [156]7306: Regression: GCC 3.x fails to compile code with virtual
   8894        inheritance if a method has a variable number of arguments
   8895      * [157]7461: ctype<char>::classic_table() returns offset array on
   8896        Cygwin
   8897      * [158]7524: f(const float arg[3]) fails
   8898      * [159]7584: Erroneous ambiguous base error on using declaration
   8899      * [160]7676: Member template overloading problem
   8900      * [161]7679: infinite loop when a right parenthesis is missing
   8901      * [162]7811: default locale not taken from environment
   8902      * [163]7961: compare( char *) implemented incorrectly in
   8903        basic_string<>
   8904      * [164]8071: basic_ostream::operator<<(streambuf*) loops forever if
   8905        streambuf::underflow() leaves gptr() NULL (dups: [165]8127,
   8906        [166]6745)
   8907      * [167]8096: deque::at() throws std::range_error instead of
   8908        std::out_of_range
   8909      * [168]8127: cout << cin.rdbuf() infinite loop
   8910      * [169]8218: Excessively large memory consumed for classes with large
   8911        array members
   8912      * [170]8287: GCC 3.2: Destructor called for non-constructed local
   8913        object
   8914      * [171]8347: empty vector range used in string construction causes
   8915        core dump
   8916      * [172]8348: fail() flag is set in istringstream when eof() flag is
   8917        set
   8918      * [173]8391: regression: infinite loop in cp/decl2.c(finish_file)
   8919 
   8920     C and optimizer bugs
   8921 
   8922      * [174]6627: -fno-align-functions doesn't seem to disable function
   8923        alignment
   8924      * [175]6631: life_analysis misoptimizes code to initialize fields of
   8925        a structure
   8926      * [176]7102: unsigned char division results in floating exception
   8927      * [177]7120: Run once loop should *always* be unrolled
   8928        (pessimization)
   8929      * [178]7209: Bug involving array referencing and ?: operator
   8930      * [179]7515: invalid inlining of global function with -O3
   8931      * [180]7814: incorrect scheduling for glibc-2.2.92 strcpy test
   8932      * [181]8467: bug in sibling call optimization
   8933 
   8934     Preprocessor bugs
   8935 
   8936      * [182]4890: incorrect line markers from the traditional preprocessor
   8937      * [183]7357: -M option omits system headers files (making it the same
   8938        as -MM)
   8939      * [184]7358: Changes to Sun's make Dependencies
   8940      * [185]7602: C++ header files found in CPLUS_INCLUDE_PATH treated as
   8941        C headers
   8942      * [186]7862: Interrupting GCC -MD removes .d file but not .o
   8943      * [187]8190: Failed compilation deletes -MD dependency file
   8944      * [188]8524: _Pragma within macro is improperly expanded
   8945 
   8946     x86 specific (Intel/AMD)
   8947 
   8948      * [189]5351: (i686-only) function pass-by-value structure copy
   8949        corrupts stack ([190]7591 is a duplicate)
   8950      * [191]6845, [192]7034, [193]7124, [194]7174: ICE's with
   8951        -march=pentium3/pentium2/athlon (these are all the same underlying
   8952        bug, in MMX register use)
   8953      * [195]7134, [196]7375, [197]7390: ICE with -march=athlon (maybe same
   8954        as above?)
   8955      * [198]6890: xmmintrin.h, _MM_TRANSPOSE4_PS is broken
   8956      * [199]6981: wrong code in 64-bit manipulation on x86
   8957      * [200]7242: GCC -mcpu=pentium[23] doesn't define __tune_pentiumpro__
   8958        macro
   8959      * [201]7396: ix86: cmpgt_ss, cmpge_ss, cmpngt_ss, and cmpnge_ss SSE
   8960        intrinsics are broken
   8961      * [202]7630: GCC 3.2 breaks on Mozilla 1.0's JS sources with
   8962        -march=pentium4
   8963      * [203]7693: Typo in i386 mmintrin.h header
   8964      * [204]7723: ICE - Pentium3 sse - GCC 3.2
   8965      * [205]7951: ICE on -march=pentium4 -O2 -mfpmath=sse
   8966      * [206]8146: (i686 only) gcc 3.2 miscompiles gcc 2.95.3
   8967 
   8968     PowerPC specific
   8969 
   8970      * [207]5967: GCC bug when profiling nested functions on powerpc
   8971      * [208]6984: wrong code generated with -O2, -O3, -Os for do-while
   8972        loop on PowerPC
   8973      * [209]7114: PowerPC: ICE building strcoll.op from glibc-2.2.5
   8974      * [210]7130: miscompiled code for GCC-3.1 on
   8975        powerpc-unknown-linux-gnu with -funroll-all-loops
   8976      * [211]7133: PowerPC ICE: unrecognizable insn
   8977      * [212]7380: ICE in extract_insn, at recog.c:2148
   8978      * [213]8252: ICE on Altivec code with optimization turned on
   8979      * [214]8451: Altivec ICE in GCC 3.2
   8980 
   8981     HP/PA specific
   8982 
   8983      * [215]7250: __ashrdi3 returns wrong value on 32 bit hppa
   8984 
   8985     SPARC specific
   8986 
   8987      * [216]6668: when using --disable-multilib, libgcc_s.so is installed
   8988        in the wrong place on sparc-solaris
   8989      * [217]7151: ICE when compiling for UltraSPARC
   8990      * [218]7335: SPARC: ICE in verify_wide_reg (flow.c:557) with long
   8991        double and -O1
   8992      * [219]7842: [REGRESSION] SPARC code gen bug
   8993 
   8994     ARM specific
   8995 
   8996      * [220]7856: [arm] invalid offset in constant pool reference
   8997      * [221]7967: optimization produces wrong code (ARM)
   8998 
   8999     Alpha specific
   9000 
   9001      * [222]7374: __builtin_fabsl broken on alpha
   9002 
   9003     IBM s390 specific
   9004 
   9005      * [223]7370: ICE in fixup_var_refs_1 on s390x
   9006      * [224]7409: loop optimization bug on s390x-linux-gnu
   9007      * [225]8232: s390x: ICE when using bcmp with int length argument
   9008 
   9009     SCO specific
   9010 
   9011      * [226]7623: SCO OpenServer build fails with machmode.def: undefined
   9012        symbol: BITS_PER_UNIT
   9013 
   9014     m68k/Coldfire specific
   9015 
   9016      * [227]8314: crtbegin, crtend need to be multilib'ed for this
   9017        platform
   9018 
   9019     Documentation
   9020 
   9021      * [228]761: Document some undocumented options
   9022      * [229]5610: Fix documentation about invoking SSE instructions
   9023        (-mfpmath=sse)
   9024      * [230]7484: List -Wmissing-declarations as C-only option
   9025      * [231]7531: -mcmodel not documented for x86-64
   9026      * [232]8120: Update documentation of bad use of ##
   9027      __________________________________________________________________
   9028 
   9029 GCC 3.2
   9030 
   9031    3.2 is a small bug fix release, but there is a change to the
   9032    application binary interface (ABI), hence the change to the second part
   9033    of the version number.
   9034 
   9035    The main purpose of the 3.2 release is to correct a couple of problems
   9036    in the C++ ABI, with the intention of providing a stable interface
   9037    going forward.  Accordingly, 3.2 is only a small change to 3.1.1.
   9038 
   9039   Bug Fixes
   9040 
   9041     C++
   9042 
   9043      * [233]7320: g++ 3.2 relocation problem
   9044      * [234]7470: vtable: virtual function pointers not in declaration
   9045        order
   9046 
   9047     libstdc++
   9048 
   9049      * [235]6410: Trouble with non-ASCII monetary symbols and wchar_t
   9050      * [236]6503, [237]6642, [238]7186: Problems with comparing or
   9051        subtracting various types of const and non-const iterators
   9052      * [239]7216: ambiguity with basic_iostream::traits_type
   9053      * [240]7220: problem with basic_istream::ignore(0,delimiter)
   9054      * [241]7222: locale::operator==() doesn't work on std::locale("")
   9055      * [242]7286: placement operator delete issue
   9056      * [243]7442: cxxabi.h does not match the C++ ABI
   9057      * [244]7445: poor performance of std::locale::classic() in
   9058        multi-threaded applications
   9059 
   9060     x86-64 specific
   9061 
   9062      * [245]7291: off-by-one in generated inline bzero code for x86-64
   9063 
   9064 
   9065     For questions related to the use of GCC, please consult these web
   9066     pages and the [246]GCC manuals. If that fails, the
   9067     [247]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   9068     web pages and the development of GCC are welcome on our developer
   9069     list at [248]gcc (a] gcc.gnu.org. All of [249]our lists have public
   9070     archives.
   9071 
   9072    Copyright (C) [250]Free Software Foundation, Inc. Verbatim copying and
   9073    distribution of this entire article is permitted in any medium,
   9074    provided this notice is preserved.
   9075 
   9076    These pages are [251]maintained by the GCC team. Last modified
   9077    2011-10-24[252].
   9078 
   9079 References
   9080 
   9081    1. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
   9082    2. http://gcc.gnu.org/gcc-3.1/changes.html
   9083    3. http://gcc.gnu.org/gcc-3.2/c++-abi.html
   9084    4. http://gcc.gnu.org/PR3782
   9085    5. http://gcc.gnu.org/PR6440
   9086    6. http://gcc.gnu.org/PR7050
   9087    7. http://gcc.gnu.org/PR7741
   9088    8. http://gcc.gnu.org/PR7982
   9089    9. http://gcc.gnu.org/PR8068
   9090   10. http://gcc.gnu.org/PR8178
   9091   11. http://gcc.gnu.org/PR8396
   9092   12. http://gcc.gnu.org/PR8674
   9093   13. http://gcc.gnu.org/PR9768
   9094   14. http://gcc.gnu.org/PR9798
   9095   15. http://gcc.gnu.org/PR9799
   9096   16. http://gcc.gnu.org/PR9928
   9097   17. http://gcc.gnu.org/PR10114
   9098   18. http://gcc.gnu.org/PR10352
   9099   19. http://gcc.gnu.org/PR10336
   9100   20. http://gcc.gnu.org/PR8224
   9101   21. http://gcc.gnu.org/PR8613
   9102   22. http://gcc.gnu.org/PR8828
   9103   23. http://gcc.gnu.org/PR9226
   9104   24. http://gcc.gnu.org/PR9853
   9105   25. http://gcc.gnu.org/PR9797
   9106   26. http://gcc.gnu.org/PR9967
   9107   27. http://gcc.gnu.org/PR10116
   9108   28. http://gcc.gnu.org/PR10171
   9109   29. http://gcc.gnu.org/PR10175
   9110   30. http://gcc.gnu.org/PR8316
   9111   31. http://gcc.gnu.org/PR9169
   9112   32. http://gcc.gnu.org/PR9420
   9113   33. http://gcc.gnu.org/PR9459
   9114   34. http://gcc.gnu.org/PR9507
   9115   35. http://gcc.gnu.org/PR9538
   9116   36. http://gcc.gnu.org/PR9602
   9117   37. http://gcc.gnu.org/PR9993
   9118   38. http://gcc.gnu.org/PR10167
   9119   39. http://gcc.gnu.org/PR9652
   9120   40. http://gcc.gnu.org/PR10144
   9121   41. http://gcc.gnu.org/PR8746
   9122   42. http://gcc.gnu.org/PR9888
   9123   43. http://gcc.gnu.org/PR9638
   9124   44. http://gcc.gnu.org/PR9954
   9125   45. http://gcc.gnu.org/PR7784
   9126   46. http://gcc.gnu.org/PR7796
   9127   47. http://gcc.gnu.org/PR8281
   9128   48. http://gcc.gnu.org/PR8366
   9129   49. http://gcc.gnu.org/PR8726
   9130   50. http://gcc.gnu.org/PR9414
   9131   51. http://gcc.gnu.org/PR10067
   9132   52. http://gcc.gnu.org/PR7248
   9133   53. http://gcc.gnu.org/PR8343
   9134   54. http://gcc.gnu.org/PR9732
   9135   55. http://gcc.gnu.org/PR10073
   9136   56. http://gcc.gnu.org/PR7702
   9137   57. http://gcc.gnu.org/PR9671
   9138   58. http://gcc.gnu.org/PR8694
   9139   59. http://gcc.gnu.org/PR9953
   9140   60. http://gcc.gnu.org/PR10271
   9141   61. http://gcc.gnu.org/PR6362
   9142   62. http://gcc.gnu.org/PR10377
   9143   63. http://gcc.gnu.org/PR6955
   9144   64. http://gcc.gnu.org/PR5919
   9145   65. http://gcc.gnu.org/PR7129
   9146   66. http://gcc.gnu.org/PR7507
   9147   67. http://gcc.gnu.org/PR7622
   9148   68. http://gcc.gnu.org/PR7681
   9149   69. http://gcc.gnu.org/PR9528
   9150   70. http://gcc.gnu.org/PR8031
   9151   71. http://gcc.gnu.org/PR8275
   9152   72. http://gcc.gnu.org/PR8332
   9153   73. http://gcc.gnu.org/PR8372
   9154   74. http://gcc.gnu.org/PR8439
   9155   75. http://gcc.gnu.org/PR8442
   9156   76. http://gcc.gnu.org/PR8518
   9157   77. http://gcc.gnu.org/PR8615
   9158   78. http://gcc.gnu.org/PR8663
   9159   79. http://gcc.gnu.org/PR8799
   9160   80. http://gcc.gnu.org/PR9328
   9161   81. http://gcc.gnu.org/PR9465
   9162   82. http://gcc.gnu.org/PR47
   9163   83. http://gcc.gnu.org/PR6745
   9164   84. http://gcc.gnu.org/PR8214
   9165   85. http://gcc.gnu.org/PR8493
   9166   86. http://gcc.gnu.org/PR8332
   9167   87. http://gcc.gnu.org/PR8503
   9168   88. http://gcc.gnu.org/PR8727
   9169   89. http://gcc.gnu.org/PR7445
   9170   90. http://gcc.gnu.org/PR8230
   9171   91. http://gcc.gnu.org/PR8399
   9172   92. http://gcc.gnu.org/PR8662
   9173   93. http://gcc.gnu.org/PR8707
   9174   94. http://gcc.gnu.org/PR8708
   9175   95. http://gcc.gnu.org/PR8790
   9176   96. http://gcc.gnu.org/PR8887
   9177   97. http://gcc.gnu.org/PR9076
   9178   98. http://gcc.gnu.org/PR9151
   9179   99. http://gcc.gnu.org/PR9168
   9180  100. http://gcc.gnu.org/PR9269
   9181  101. http://gcc.gnu.org/PR9322
   9182  102. http://gcc.gnu.org/PR9433
   9183  103. http://gcc.gnu.org/PR8032
   9184  104. http://gcc.gnu.org/PR8639
   9185  105. http://gcc.gnu.org/PR8794
   9186  106. http://gcc.gnu.org/PR8832
   9187  107. http://gcc.gnu.org/PR8988
   9188  108. http://gcc.gnu.org/PR9492
   9189  109. http://gcc.gnu.org/PR9267
   9190  110. http://gcc.gnu.org/PR8344
   9191  111. http://gcc.gnu.org/PR8524
   9192  112. http://gcc.gnu.org/PR8880
   9193  113. http://gcc.gnu.org/PR9090
   9194  114. http://gcc.gnu.org/PR8588
   9195  115. http://gcc.gnu.org/PR8599
   9196  116. http://gcc.gnu.org/PR9506
   9197  117. http://gcc.gnu.org/PR9484
   9198  118. http://gcc.gnu.org/PR9292
   9199  119. http://gcc.gnu.org/PR9293
   9200  120. http://gcc.gnu.org/PR9295
   9201  121. http://gcc.gnu.org/PR9296
   9202  122. http://gcc.gnu.org/PR9316
   9203  123. http://gcc.gnu.org/PR9493
   9204  124. http://gcc.gnu.org/PR7341
   9205  125. http://gcc.gnu.org/PR8947
   9206  126. http://gcc.gnu.org/PR7448
   9207  127. http://gcc.gnu.org/PR8882
   9208  128. http://gcc.gnu.org/PR7445
   9209  129. http://gcc.gnu.org/PR2521
   9210  130. http://gcc.gnu.org/PR5661
   9211  131. http://gcc.gnu.org/PR6419
   9212  132. http://gcc.gnu.org/PR6994
   9213  133. http://gcc.gnu.org/PR7150
   9214  134. http://gcc.gnu.org/PR7160
   9215  135. http://gcc.gnu.org/PR7228
   9216  136. http://gcc.gnu.org/PR7266
   9217  137. http://gcc.gnu.org/PR7353
   9218  138. http://gcc.gnu.org/PR7411
   9219  139. http://gcc.gnu.org/PR7478
   9220  140. http://gcc.gnu.org/PR7526
   9221  141. http://gcc.gnu.org/PR7721
   9222  142. http://gcc.gnu.org/PR7803
   9223  143. http://gcc.gnu.org/PR7754
   9224  144. http://gcc.gnu.org/PR7788
   9225  145. http://gcc.gnu.org/PR8031
   9226  146. http://gcc.gnu.org/PR8055
   9227  147. http://gcc.gnu.org/PR8067
   9228  148. http://gcc.gnu.org/PR8134
   9229  149. http://gcc.gnu.org/PR8149
   9230  150. http://gcc.gnu.org/PR8160
   9231  151. http://gcc.gnu.org/PR5607
   9232  152. http://gcc.gnu.org/PR6579
   9233  153. http://gcc.gnu.org/PR6803
   9234  154. http://gcc.gnu.org/PR7176
   9235  155. http://gcc.gnu.org/PR7188
   9236  156. http://gcc.gnu.org/PR7306
   9237  157. http://gcc.gnu.org/PR7461
   9238  158. http://gcc.gnu.org/PR7524
   9239  159. http://gcc.gnu.org/PR7584
   9240  160. http://gcc.gnu.org/PR7676
   9241  161. http://gcc.gnu.org/PR7679
   9242  162. http://gcc.gnu.org/PR7811
   9243  163. http://gcc.gnu.org/PR7961
   9244  164. http://gcc.gnu.org/PR8071
   9245  165. http://gcc.gnu.org/PR8127
   9246  166. http://gcc.gnu.org/PR6745
   9247  167. http://gcc.gnu.org/PR8096
   9248  168. http://gcc.gnu.org/PR8127
   9249  169. http://gcc.gnu.org/PR8218
   9250  170. http://gcc.gnu.org/PR8287
   9251  171. http://gcc.gnu.org/PR8347
   9252  172. http://gcc.gnu.org/PR8348
   9253  173. http://gcc.gnu.org/PR8391
   9254  174. http://gcc.gnu.org/PR6627
   9255  175. http://gcc.gnu.org/PR6631
   9256  176. http://gcc.gnu.org/PR7102
   9257  177. http://gcc.gnu.org/PR7120
   9258  178. http://gcc.gnu.org/PR7209
   9259  179. http://gcc.gnu.org/PR7515
   9260  180. http://gcc.gnu.org/PR7814
   9261  181. http://gcc.gnu.org/PR8467
   9262  182. http://gcc.gnu.org/PR4890
   9263  183. http://gcc.gnu.org/PR7357
   9264  184. http://gcc.gnu.org/PR7358
   9265  185. http://gcc.gnu.org/PR7602
   9266  186. http://gcc.gnu.org/PR7862
   9267  187. http://gcc.gnu.org/PR8190
   9268  188. http://gcc.gnu.org/PR8524
   9269  189. http://gcc.gnu.org/PR5351
   9270  190. http://gcc.gnu.org/PR7591
   9271  191. http://gcc.gnu.org/PR6845
   9272  192. http://gcc.gnu.org/PR7034
   9273  193. http://gcc.gnu.org/PR7124
   9274  194. http://gcc.gnu.org/PR7174
   9275  195. http://gcc.gnu.org/PR7134
   9276  196. http://gcc.gnu.org/PR7375
   9277  197. http://gcc.gnu.org/PR7390
   9278  198. http://gcc.gnu.org/PR6890
   9279  199. http://gcc.gnu.org/PR6981
   9280  200. http://gcc.gnu.org/PR7242
   9281  201. http://gcc.gnu.org/PR7396
   9282  202. http://gcc.gnu.org/PR7630
   9283  203. http://gcc.gnu.org/PR7693
   9284  204. http://gcc.gnu.org/PR7723
   9285  205. http://gcc.gnu.org/PR7951
   9286  206. http://gcc.gnu.org/PR8146
   9287  207. http://gcc.gnu.org/PR5967
   9288  208. http://gcc.gnu.org/PR6984
   9289  209. http://gcc.gnu.org/PR7114
   9290  210. http://gcc.gnu.org/PR7130
   9291  211. http://gcc.gnu.org/PR7133
   9292  212. http://gcc.gnu.org/PR7380
   9293  213. http://gcc.gnu.org/PR8252
   9294  214. http://gcc.gnu.org/PR8451
   9295  215. http://gcc.gnu.org/PR7250
   9296  216. http://gcc.gnu.org/PR6668
   9297  217. http://gcc.gnu.org/PR7151
   9298  218. http://gcc.gnu.org/PR7335
   9299  219. http://gcc.gnu.org/PR7842
   9300  220. http://gcc.gnu.org/PR7856
   9301  221. http://gcc.gnu.org/PR7967
   9302  222. http://gcc.gnu.org/PR7374
   9303  223. http://gcc.gnu.org/PR7370
   9304  224. http://gcc.gnu.org/PR7409
   9305  225. http://gcc.gnu.org/PR8232
   9306  226. http://gcc.gnu.org/PR7623
   9307  227. http://gcc.gnu.org/PR8314
   9308  228. http://gcc.gnu.org/PR761
   9309  229. http://gcc.gnu.org/PR5610
   9310  230. http://gcc.gnu.org/PR7484
   9311  231. http://gcc.gnu.org/PR7531
   9312  232. http://gcc.gnu.org/PR8120
   9313  233. http://gcc.gnu.org/PR7320
   9314  234. http://gcc.gnu.org/PR7470
   9315  235. http://gcc.gnu.org/PR6410
   9316  236. http://gcc.gnu.org/PR6503
   9317  237. http://gcc.gnu.org/PR6642
   9318  238. http://gcc.gnu.org/PR7186
   9319  239. http://gcc.gnu.org/PR7216
   9320  240. http://gcc.gnu.org/PR7220
   9321  241. http://gcc.gnu.org/PR7222
   9322  242. http://gcc.gnu.org/PR7286
   9323  243. http://gcc.gnu.org/PR7442
   9324  244. http://gcc.gnu.org/PR7445
   9325  245. http://gcc.gnu.org/PR7291
   9326  246. http://gcc.gnu.org/onlinedocs/
   9327  247. mailto:gcc-help (a] gcc.gnu.org
   9328  248. mailto:gcc (a] gcc.gnu.org
   9329  249. http://gcc.gnu.org/lists.html
   9330  250. http://www.fsf.org/
   9331  251. http://gcc.gnu.org/about.html
   9332  252. http://validator.w3.org/check/referer
   9333 ======================================================================
   9334 http://gcc.gnu.org/gcc-3.1/index.html
   9335 
   9336                                     GCC 3.1
   9337 
   9338    July 27, 2002
   9339 
   9340    The [1]GNU project and the GCC developers are pleased to announce the
   9341    release of GCC 3.1.1.
   9342 
   9343    The links below still apply to GCC 3.1.1.
   9344 
   9345    May 15, 2002
   9346 
   9347    The [2]GNU project and the GCC developers are pleased to announce the
   9348    release of GCC 3.1.
   9349 
   9350    GCC used to stand for the GNU C Compiler, but since the compiler
   9351    supports several other languages aside from C, it now stands for the
   9352    GNU Compiler Collection.
   9353 
   9354    A list of [3]successful builds is updated as new information becomes
   9355    available.
   9356 
   9357    The GCC developers would like to thank the numerous people that have
   9358    contributed [4]new features, improvements, bug fixes, and other changes
   9359    as well as test results to GCC. This [5]amazing group of volunteers is
   9360    what makes GCC successful.
   9361 
   9362    For additional information about GCC please refer to the [6]GCC project
   9363    web site or contact the [7]GCC development mailing list.
   9364 
   9365    To obtain GCC please use [8]our mirror sites, or our CVS server.
   9366      __________________________________________________________________
   9367 
   9368 
   9369     For questions related to the use of GCC, please consult these web
   9370     pages and the [9]GCC manuals. If that fails, the
   9371     [10]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   9372     web pages and the development of GCC are welcome on our developer
   9373     list at [11]gcc (a] gcc.gnu.org. All of [12]our lists have public
   9374     archives.
   9375 
   9376    Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
   9377    distribution of this entire article is permitted in any medium,
   9378    provided this notice is preserved.
   9379 
   9380    These pages are [14]maintained by the GCC team. Last modified
   9381    2011-04-25[15].
   9382 
   9383 References
   9384 
   9385    1. http://www.gnu.org/
   9386    2. http://www.gnu.org/
   9387    3. http://gcc.gnu.org/gcc-3.1/buildstat.html
   9388    4. http://gcc.gnu.org/gcc-3.1/changes.html
   9389    5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   9390    6. http://gcc.gnu.org/index.html
   9391    7. mailto:gcc (a] gcc.gnu.org
   9392    8. http://gcc.gnu.org/mirrors.html
   9393    9. http://gcc.gnu.org/onlinedocs/
   9394   10. mailto:gcc-help (a] gcc.gnu.org
   9395   11. mailto:gcc (a] gcc.gnu.org
   9396   12. http://gcc.gnu.org/lists.html
   9397   13. http://www.fsf.org/
   9398   14. http://gcc.gnu.org/about.html
   9399   15. http://validator.w3.org/check/referer
   9400 ======================================================================
   9401 http://gcc.gnu.org/gcc-3.1/changes.html
   9402 
   9403                              GCC 3.1 Release Series
   9404                         Changes, New Features, and Fixes
   9405 
   9406 Additional changes in GCC 3.1.1
   9407 
   9408      * A bug related to how structures and unions are returned has been
   9409        fixed for powerpc-*-netbsd*.
   9410      * An important bug in the implementation of -fprefetch-loop-arrays
   9411        has been fixed. Previously the optimization prefetched random
   9412        blocks of memory for most targets except for i386.
   9413      * The Java compiler now compiles Java programs much faster and also
   9414        works with parallel make.
   9415      * Nested functions have been fixed for mips*-*-netbsd*.
   9416      * Some missing floating point support routines have beed added for
   9417        mips*-*-netbsd*.
   9418      * This [1]message gives additional information about the bugs fixed
   9419        in this release.
   9420 
   9421 Caveats
   9422 
   9423      * The -traditional C compiler option has been deprecated and will be
   9424        removed in GCC 3.3. (It remains possible to preprocess non-C code
   9425        with the traditional preprocessor.)
   9426      * The default debugging format for most ELF platforms (including
   9427        GNU/Linux and FreeBSD; notable exception is Solaris) has changed
   9428        from stabs to DWARF2. This requires GDB 5.1.1 or later.
   9429 
   9430 General Optimizer Improvements
   9431 
   9432      * Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat,
   9433        and Andreas Jaeger, SuSE Labs, has contributed [2]infrastructure
   9434        for profile driven optimizations.
   9435        Options -fprofile-arcs and -fbranch-probabilities can now be used
   9436        to improve speed of the generated code by profiling the actual
   9437        program behaviour on typical runs. In the absence of profile info
   9438        the compiler attempts to guess the profile statically.
   9439      * [3]SPEC2000 and SPEC95 benchmark suites are now used daily to
   9440        monitor performance of the generated code.
   9441        According to the SPECInt2000 results on an AMD Athlon CPU, the code
   9442        generated by GCC 3.1 is 6% faster on the average (8.2% faster with
   9443        profile feedback) compared to GCC 3.0. The code produced by GCC 3.0
   9444        is about 2.1% faster compared to 2.95.3. Tests were done using the
   9445        -O2 -march=athlon command-line options.
   9446      * Alexandre Oliva, of Red Hat, has generalized the tree inlining
   9447        infrastructure developed by CodeSourcery, LLC for the C++ front
   9448        end, so that it is now used in the C front end too. Inlining
   9449        functions as trees exposes them earlier to the compiler, giving it
   9450        more opportunities for optimization.
   9451      * Support for data prefetching instructions has been added to the GCC
   9452        back end and several targets. A new __builtin_prefetch intrinsic is
   9453        available to explicitly insert prefetch instructions and
   9454        experimental support for loop array prefetching has been added (see
   9455        -fprefetch-loop-array documentation).
   9456      * Support for emitting debugging information for macros has been
   9457        added for DWARF2. It is activated using -g3.
   9458 
   9459 New Languages and Language specific improvements
   9460 
   9461   C/C++
   9462 
   9463      * A few more [4]ISO C99 features.
   9464      * The preprocessor is 10-50% faster than the preprocessor in GCC 3.0.
   9465      * The preprocessor's symbol table has been merged with the symbol
   9466        table of the C, C++ and Objective-C front ends.
   9467      * The preprocessor consumes less memory than the preprocessor in GCC
   9468        3.0, often significantly so. On normal input files, it typically
   9469        consumes less memory than pre-3.0 cccp-based GCC, too.
   9470 
   9471   C++
   9472 
   9473      * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std
   9474        was a workaround to allow std compliant code to work with the
   9475        non-std compliant libstdc++-v2. libstdc++-v3 is std compliant.
   9476      * The C++ ABI has been fixed so that void (A::*)() const is mangled
   9477        as "M1AKFvvE", rather than "MK1AFvvE" as before. This change only
   9478        affects pointer to cv-qualified member function types.
   9479      * The C++ ABI has been changed to correctly handle this code:
   9480     struct A {
   9481       void operator delete[] (void *, size_t);
   9482     };
   9483 
   9484     struct B : public A {
   9485     };
   9486 
   9487     new B[10];
   9488 
   9489        The amount of storage allocated for the array will be greater than
   9490        it was in 3.0, in order to store the number of elements in the
   9491        array, so that the correct size can be passed to operator delete[]
   9492        when the array is deleted. Previously, the value passed to operator
   9493        delete[] was unpredictable.
   9494        This change will only affect code that declares a two-argument
   9495        operator delete[] with a second parameter of type size_t in a base
   9496        class, and does not override that definition in a derived class.
   9497      * The C++ ABI has been changed so that:
   9498     struct A {
   9499       void operator delete[] (void *, size_t);
   9500       void operator delete[] (void *);
   9501     };
   9502 
   9503        does not cause unnecessary storage to be allocated when an array of
   9504        A objects is allocated.
   9505        This change will only affect code that declares both of these forms
   9506        of operator delete[], and declared the two-argument form before the
   9507        one-argument form.
   9508      * The C++ ABI has been changed so that when a parameter is passed by
   9509        value, any cleanup for that parameter is performed in the caller,
   9510        as specified by the ia64 C++ ABI, rather than the called function
   9511        as before. As a result, classes with a non-trivial destructor but a
   9512        trivial copy constructor will be passed and returned by invisible
   9513        reference, rather than by bitwise copy as before.
   9514      * G++ now supports the "named return value optimization": for code
   9515        like
   9516     A f () {
   9517       A a;
   9518       ...
   9519       return a;
   9520     }
   9521 
   9522        G++ will allocate a in the return value slot, so that the return
   9523        becomes a no-op. For this to work, all return statements in the
   9524        function must return the same variable.
   9525      * Improvements to the C++ library are listed in [5]the libstdc++-v3
   9526        FAQ.
   9527 
   9528   Objective-C
   9529 
   9530      * Annoying linker warnings (due to incorrect code being generated)
   9531        have been fixed.
   9532      * If a class method cannot be found, the compiler no longer issues a
   9533        warning if a corresponding instance method exists in the root
   9534        class.
   9535      * Forward @protocol declarations have been fixed.
   9536      * Loading of categories has been fixed in certain situations (GNU run
   9537        time only).
   9538      * The class lookup in the run-time library has been rewritten so that
   9539        class method dispatch is more than twice as fast as it used to be
   9540        (GNU run time only).
   9541 
   9542   Java
   9543 
   9544      * libgcj now includes RMI, java.lang.ref.*, javax.naming, and
   9545        javax.transaction.
   9546      * Property files and other system resources can be compiled into
   9547        executables which use libgcj using the new gcj --resource feature.
   9548      * libgcj has been ported to more platforms. In particular there is
   9549        now a mostly-functional mingw32 (Windows) target port.
   9550      * JNI and CNI invocation interfaces were implemented, so gcj-compiled
   9551        Java code can now be called from a C/C++ application.
   9552      * gcj can now use builtin functions for certain known methods, for
   9553        instance Math.cos.
   9554      * gcj can now automatically remove redundant array-store checks in
   9555        some common cases.
   9556      * The --no-store-checks optimization option was added. This can be
   9557        used to omit runtime store checks for code which is known not to
   9558        throw ArrayStoreException
   9559      * The following third party interface standards were added to libgcj:
   9560        org.w3c.dom and org.xml.sax.
   9561      * java.security has been merged with GNU Classpath. The new package
   9562        is now JDK 1.2 compliant, and much more complete.
   9563      * A bytecode verifier was added to the libgcj interpreter.
   9564      * java.lang.Character was rewritten to comply with the Unicode 3.0
   9565        standard, and improve performance.
   9566      * Partial support for many more locales was added to libgcj.
   9567      * Socket timeouts have been implemented.
   9568      * libgcj has been merged into a single shared library. There are no
   9569        longer separate shared libraries for the garbage collector and
   9570        zlib.
   9571      * Several performance improvements were made to gcj and libgcj:
   9572           + Hash synchronization (thin locks)
   9573           + A special allocation path for finalizer-free objects
   9574           + Thread-local allocation
   9575           + Parallel GC, and other GC tweaks
   9576 
   9577   Fortran
   9578 
   9579    Fortran improvements are listed in [6]the Fortran documentation.
   9580 
   9581   Ada
   9582 
   9583    [7]Ada Core Technologies, Inc, has contributed its GNAT Ada 95 front
   9584    end and associated tools. The GNAT compiler fully implements the Ada
   9585    language as defined by the ISO/IEC 8652 standard.
   9586 
   9587    Please note that the integration of the Ada front end is still work in
   9588    progress.
   9589 
   9590 New Targets and Target Specific Improvements
   9591 
   9592      * Hans-Peter Nilsson has contributed a port to [8]MMIX, the CPU
   9593        architecture used in new editions of Donald E. Knuth's The Art of
   9594        Computer Programming.
   9595      * [9]Axis Communications has contributed its port to the CRIS CPU
   9596        architecture, used in the ETRAX system-on-a-chip series. See
   9597        [10]Axis' developer site for technical information.
   9598      * Alexandre Oliva, of Red Hat, has contributed a port to the
   9599        [11]SuperH SH5 64-bit RISC microprocessor architecture, extending
   9600        the existing SH port.
   9601      * UltraSPARC is fully supported in 64-bit mode. The option -m64
   9602        enables it.
   9603      * For compatibility with the Sun compiler #pragma redefine_extname
   9604        has been implemented on Solaris.
   9605      * The x86 back end has had some noticeable work done to it.
   9606           + SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
   9607             Jaeger have contributed a port to the AMD x86-64 architecture.
   9608             For more information on x86-64 see [12]http://www.x86-64.org.
   9609           + The compiler now supports MMX, 3DNow!, SSE, and SSE2
   9610             instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
   9611             enable the respective instruction sets. Intel C++ compatible
   9612             MMX/3DNow!/SSE intrinsics are implemented. SSE2 intrinsics
   9613             will be added in next major release.
   9614           + Following those improvements, targets for Pentium MMX, K6-2,
   9615             K6-3, Pentium III, Pentium 4, and Athlon 4 Mobile/XP/MP were
   9616             added. Refer to the documentation on -march= and -mcpu=
   9617             options for details.
   9618           + For those targets that support it, -mfpmath=sse will cause the
   9619             compiler to generate SSE/SSE2 instructions for floating point
   9620             math instead of x87 instructions. Usually, this will lead to
   9621             quicker code -- especially on the Pentium 4. Note that only
   9622             scalar floating point instructions are used and GCC does not
   9623             exploit SIMD features yet.
   9624           + Prefetch support has been added to the Pentium III, Pentium 4,
   9625             K6-2, K6-3, and Athlon series.
   9626           + Code generated for floating point to integer conversions has
   9627             been improved leading to better performance of many 3D
   9628             applications.
   9629      * The PowerPC back end has added 64-bit PowerPC GNU/Linux support.
   9630      * C++ support for AIX has been improved.
   9631      * Aldy Hernandez, of Red Hat, Inc, has contributed extensions to the
   9632        PowerPC port supporting the AltiVec programming model (SIMD). The
   9633        support, though presently useful, is experimental and is expected
   9634        to stabilize for 3.2. The support is written to conform to
   9635        Motorola's AltiVec specs. See -maltivec.
   9636 
   9637 Obsolete Systems
   9638 
   9639    Support for a number of older systems has been declared obsolete in GCC
   9640    3.1. Unless there is activity to revive them, the next release of GCC
   9641    will have their sources permanently removed.
   9642 
   9643    All configurations of the following processor architectures have been
   9644    declared obsolete:
   9645      * MIL-STD-1750A, 1750a-*-*
   9646      * AMD A29k, a29k-*-*
   9647      * Convex, c*-convex-*
   9648      * Clipper, clipper-*-*
   9649      * Elxsi, elxsi-*-*
   9650      * Intel i860, i860-*-*
   9651      * Sun picoJava, pj-*-* and pjl-*-*
   9652      * Western Electric 32000, we32k-*-*
   9653 
   9654    Most configurations of the following processor architectures have been
   9655    declared obsolete, but we are preserving a few systems which may have
   9656    active developers. It is unlikely that the remaining systems will
   9657    survive much longer unless we see definite signs of port activity.
   9658      * Motorola 88000 except
   9659           + Generic a.out, m88k-*-aout*
   9660           + Generic SVR4, m88k-*-sysv4
   9661           + OpenBSD, m88k-*-openbsd*
   9662      * NS32k except
   9663           + NetBSD, ns32k-*-netbsd*
   9664           + OpenBSD, ns32k-*-openbsd*.
   9665      * ROMP except
   9666           + OpenBSD, romp-*-openbsd*.
   9667 
   9668    Finally, only some configurations of these processor architectures are
   9669    being obsoleted.
   9670      * Alpha:
   9671           + OSF/1, alpha*-*-osf[123]*. (Digital Unix and Tru64 Unix, aka
   9672             alpha*-*-osf[45], are still supported.)
   9673      * ARM:
   9674           + RISCiX, arm-*-riscix*.
   9675      * i386:
   9676           + 386BSD, i?86-*-bsd*
   9677           + Chorus, i?86-*-chorusos*
   9678           + DG/UX, i?86-*-dgux*
   9679           + FreeBSD 1.x, i?86-*-freebsd1.*
   9680           + IBM AIX, i?86-*-aix*
   9681           + ISC UNIX, i?86-*-isc*
   9682           + GNU/Linux with pre-BFD linker, i?86-*-linux*oldld*
   9683           + NEXTstep, i?86-next-*
   9684           + OSF UNIX, i?86-*-osf1* and i?86-*-osfrose*
   9685           + RTEMS/coff, i?86-*-rtemscoff*
   9686           + RTEMS/go32, i?86-go32-rtems*
   9687           + Sequent/BSD, i?86-sequent-bsd*
   9688           + Sequent/ptx before version 3, i?86-sequent-ptx[12]* and
   9689             i?86-sequent-sysv3*
   9690           + SunOS, i?86-*-sunos*
   9691      * Motorola 68000:
   9692           + Altos, m68[k0]*-altos-*
   9693           + Apollo, m68[k0]*-apollo-*
   9694           + Apple A/UX, m68[k0]*-apple-*
   9695           + Bull, m68[k0]*-bull-*
   9696           + Convergent, m68[k0]*-convergent-*
   9697           + Generic SVR3, m68[k0]*-*-sysv3*
   9698           + ISI, m68[k0]*-isi-*
   9699           + LynxOS, m68[k0]*-*-lynxos*
   9700           + NEXT, m68[k0]*-next-*
   9701           + RTEMS/coff, m68[k0]*-*-rtemscoff*
   9702           + Sony, m68[k0]*-sony-*
   9703      * MIPS:
   9704           + DEC Ultrix, mips-*-ultrix* and mips-dec-*
   9705           + Generic BSD, mips-*-bsd*
   9706           + Generic System V, mips-*-sysv*
   9707           + IRIX before version 5, mips-sgi-irix[1234]*
   9708           + RiscOS, mips-*-riscos*
   9709           + Sony, mips-sony-*
   9710           + Tandem, mips-tandem-*
   9711      * SPARC:
   9712           + RTEMS/a.out, sparc-*-rtemsaout*.
   9713 
   9714 Documentation improvements
   9715 
   9716      * The old manual ("Using and Porting the GNU Compiler Collection")
   9717        has been replaced by a users manual ("Using the GNU Compiler
   9718        Collection") and a separate internals reference manual ("GNU
   9719        Compiler Collection Internals").
   9720      * More complete and much improved documentation about GCC's internal
   9721        representation used by the C and C++ front ends.
   9722      * Many cleanups and improvements in general.
   9723 
   9724 
   9725     For questions related to the use of GCC, please consult these web
   9726     pages and the [13]GCC manuals. If that fails, the
   9727     [14]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   9728     web pages and the development of GCC are welcome on our developer
   9729     list at [15]gcc (a] gcc.gnu.org. All of [16]our lists have public
   9730     archives.
   9731 
   9732    Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
   9733    distribution of this entire article is permitted in any medium,
   9734    provided this notice is preserved.
   9735 
   9736    These pages are [18]maintained by the GCC team. Last modified
   9737    2011-04-25[19].
   9738 
   9739 References
   9740 
   9741    1. http://gcc.gnu.org/ml/gcc/2002-07/msg01208.html
   9742    2. http://gcc.gnu.org/news/profiledriven.html
   9743    3. http://gcc.gnu.org/benchmarks/
   9744    4. http://gcc.gnu.org/gcc-3.1/c99status.html
   9745    5. http://gcc.gnu.org/onlinedocs/libstdc++/faq.html
   9746    6. http://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html
   9747    7. http://www.adacore.com/home/
   9748    8. http://www-cs-faculty.stanford.edu/~knuth/mmix.html
   9749    9. http://www.axis.com/
   9750   10. http://developer.axis.com/
   9751   11. http://www.superh.com/
   9752   12. http://www.x86-64.org/
   9753   13. http://gcc.gnu.org/onlinedocs/
   9754   14. mailto:gcc-help (a] gcc.gnu.org
   9755   15. mailto:gcc (a] gcc.gnu.org
   9756   16. http://gcc.gnu.org/lists.html
   9757   17. http://www.fsf.org/
   9758   18. http://gcc.gnu.org/about.html
   9759   19. http://validator.w3.org/check/referer
   9760 ======================================================================
   9761 http://gcc.gnu.org/gcc-3.0/gcc-3.0.html
   9762 
   9763                                    GCC 3.0.4
   9764 
   9765    February 20, 2002
   9766 
   9767    The [1]GNU project and the GCC developers are pleased to announce the
   9768    release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
   9769    series.
   9770 
   9771    GCC used to stand for the GNU C Compiler, but since the compiler
   9772    supports several other languages aside from C, it now stands for the
   9773    GNU Compiler Collection.
   9774 
   9775    GCC 3.0.x has several new optimizations, new targets, new languages and
   9776    many other new features, relative to GCC 2.95.x. See the [2]new
   9777    features page for a more complete list.
   9778 
   9779    A list of [3]successful builds is updated as new information becomes
   9780    available.
   9781 
   9782    The GCC developers would like to thank the numerous people that have
   9783    contributed new features, test results, bug fixes, etc to GCC. This
   9784    [4]amazing group of volunteers is what makes GCC successful.
   9785 
   9786    And finally, we can't in good conscience fail to mention some
   9787    [5]caveats to using GCC 3.0.x.
   9788 
   9789    For additional information about GCC please refer to the [6]GCC project
   9790    web site or contact the [7]GCC development mailing list.
   9791 
   9792    To obtain GCC please use [8]our mirror sites, or our CVS server.
   9793      __________________________________________________________________
   9794 
   9795 Previous 3.0.x Releases
   9796 
   9797    December 20, 2001: GCC 3.0.3 has been released.
   9798    October 25, 2001: GCC 3.0.2 has been released.
   9799    August 20, 2001: GCC 3.0.1 has been released.
   9800    June 18, 2001: GCC 3.0 has been released.
   9801 
   9802 
   9803     For questions related to the use of GCC, please consult these web
   9804     pages and the [9]GCC manuals. If that fails, the
   9805     [10]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   9806     web pages and the development of GCC are welcome on our developer
   9807     list at [11]gcc (a] gcc.gnu.org. All of [12]our lists have public
   9808     archives.
   9809 
   9810    Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
   9811    distribution of this entire article is permitted in any medium,
   9812    provided this notice is preserved.
   9813 
   9814    These pages are [14]maintained by the GCC team. Last modified
   9815    2011-04-25[15].
   9816 
   9817 References
   9818 
   9819    1. http://www.gnu.org/
   9820    2. http://gcc.gnu.org/gcc-3.0/features.html
   9821    3. http://gcc.gnu.org/gcc-3.0/buildstat.html
   9822    4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   9823    5. http://gcc.gnu.org/gcc-3.0/caveats.html
   9824    6. http://gcc.gnu.org/index.html
   9825    7. mailto:gcc (a] gcc.gnu.org
   9826    8. http://gcc.gnu.org/mirrors.html
   9827    9. http://gcc.gnu.org/onlinedocs/
   9828   10. mailto:gcc-help (a] gcc.gnu.org
   9829   11. mailto:gcc (a] gcc.gnu.org
   9830   12. http://gcc.gnu.org/lists.html
   9831   13. http://www.fsf.org/
   9832   14. http://gcc.gnu.org/about.html
   9833   15. http://validator.w3.org/check/referer
   9834 ======================================================================
   9835 http://gcc.gnu.org/gcc-3.0/features.html
   9836 
   9837                               GCC 3.0 New Features
   9838 
   9839 Additional changes in GCC 3.0.4
   9840 
   9841      * GCC 3.0 now supports newer versions of the [1]NetBSD operating
   9842        system, which use the ELF object file format, on x86 processors.
   9843      * Correct debugging information is generated from functions that have
   9844        lines from multiple files (e.g. yacc output).
   9845      * A fix for whitespace handling in the -traditional preprocessor,
   9846        which can affect Fortran.
   9847      * Fixes to the exception handling runtime.
   9848      * More fixes for bad code generation in C++.
   9849      * A fix for shared library generation under AIX 4.3.
   9850      * Documentation updates.
   9851      * Port of GCC to Tensilica's Xtensa processor contributed.
   9852      * A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).
   9853 
   9854 Additional changes in GCC 3.0.3
   9855 
   9856      * A fix to correct an accidental change to the PowerPC ABI.
   9857      * Fixes for bad code generation on a variety of architectures.
   9858      * Improvements to the debugging information generated for C++
   9859        classes.
   9860      * Fixes for bad code generation in C++.
   9861      * A fix to avoid crashes in the C++ demangler.
   9862      * A fix to the C++ standard library to avoid buffer overflows.
   9863      * Miscellaneous improvements for a variety of architectures.
   9864 
   9865 Additional changes in GCC 3.0.2
   9866 
   9867      * Fixes for bad code generation during loop unrolling.
   9868      * Fixes for bad code generation by the sibling call optimization.
   9869      * Minor improvements to x86 code generation.
   9870      * Implementation of function descriptors in C++ vtables for IA64.
   9871      * Numerous minor bug-fixes.
   9872 
   9873 Additional changes in GCC 3.0.1
   9874 
   9875      * C++ fixes for incorrect code-generation.
   9876      * Improved cross-compiling support for the C++ standard library.
   9877      * Fixes for some embedded targets that worked in GCC 2.95.3, but not
   9878        in GCC 3.0.
   9879      * Fixes for various exception-handling bugs.
   9880      * A port to the S/390 architecture.
   9881 
   9882 General Optimizer Improvements
   9883 
   9884      * [2]Basic block reordering pass.
   9885      * New if-conversion pass with support for conditional (predicated)
   9886        execution.
   9887      * New tail call and sibling call elimination optimizations.
   9888      * New register renaming pass.
   9889      * New (experimental) [3]static single assignment (SSA) representation
   9890        support.
   9891      * New dead-code elimination pass implemented using the SSA
   9892        representation.
   9893      * [4]Global null pointer test elimination.
   9894      * [5]Global code hoisting/unification.
   9895      * More builtins and optimizations for stdio.h, string.h and old BSD
   9896        functions, as well as for ISO C99 functions.
   9897      * New builtin __builtin_expect for giving hints to the branch
   9898        predictor.
   9899 
   9900 New Languages and Language specific improvements
   9901 
   9902      * The GNU Compiler for the Java(TM) language (GCJ) is now integrated
   9903        and supported, including the run-time library containing most
   9904        common non-GUI Java classes, a bytecode interpreter, and the Boehm
   9905        conservative garbage collector. Many bugs have been fixed. GCJ can
   9906        compile Java source or Java bytecodes to either native code or Java
   9907        class files, and supports native methods written in either the
   9908        standard JNI or the more efficient and convenient CNI.
   9909      * Here is a [6]partial list of C++ improvements, both new features
   9910        and those no longer supported.
   9911      * New C++ ABI. On the IA-64 platform GCC is capable of
   9912        inter-operating with other IA-64 compilers.
   9913      * The new ABI also significantly reduces the size of symbol and debug
   9914        information.
   9915      * New [7]C++ support library and many C++ bug fixes, vastly improving
   9916        our conformance to the ISO C++ standard.
   9917      * New [8]inliner for C++.
   9918      * Rewritten C preprocessor, integrated into the C, C++ and Objective
   9919        C compilers, with very many improvements including ISO C99 support
   9920        and [9]improvements to dependency generation.
   9921      * Support for more [10]ISO C99 features.
   9922      * Many improvements to support for checking calls to format functions
   9923        such as printf and scanf, including support for ISO C99 format
   9924        features, extensions from the Single Unix Specification and GNU
   9925        libc 2.2, checking of strfmon formats and features to assist in
   9926        auditing for format string security bugs.
   9927      * New warnings for C code that may have undefined semantics because
   9928        of violations of sequence point rules in the C standard (such as a
   9929        = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall.
   9930      * Additional warning option -Wfloat-equal.
   9931      * Improvements to -Wtraditional.
   9932      * Fortran improvements are listed in [11]the Fortran documentation.
   9933 
   9934 New Targets and Target Specific Improvements
   9935 
   9936      * New x86 back-end, generating much improved code.
   9937      * Support for a generic i386-elf target contributed.
   9938      * New option to emit x86 assembly code using Intel style syntax
   9939        (-mintel-syntax).
   9940      * HPUX 11 support contributed.
   9941      * Improved PowerPC code generation, including scheduled prologue and
   9942        epilogue.
   9943      * Port of GCC to Intel's IA-64 processor contributed.
   9944      * Port of GCC to Motorola's MCore 210 and 340 contributed.
   9945      * New unified back-end for Arm, Thumb and StrongArm contributed.
   9946      * Port of GCC to Intel's XScale processor contributed.
   9947      * Port of GCC to Atmel's AVR microcontrollers contributed.
   9948      * Port of GCC to Mitsubishi's D30V processor contributed.
   9949      * Port of GCC to Matsushita's AM33 processor (a member of the MN10300
   9950        processor family) contributed.
   9951      * Port of GCC to Fujitsu's FR30 processor contributed.
   9952      * Port of GCC to Motorola's 68HC11 and 68HC12 processors contributed.
   9953      * Port of GCC to Sun's picoJava processor core contributed.
   9954 
   9955 Documentation improvements
   9956 
   9957      * Substantially rewritten and improved C preprocessor manual.
   9958      * Many improvements to other documentation.
   9959      * Manpages for gcc, cpp and gcov are now generated automatically from
   9960        the master Texinfo manual, eliminating the problem of manpages
   9961        being out of date. (The generated manpages are only extracts from
   9962        the full manual, which is provided in Texinfo form, from which
   9963        info, HTML, other formats and a printed manual can be generated.)
   9964      * Generated info files are included in the release tarballs alongside
   9965        their Texinfo sources, avoiding problems on some platforms with
   9966        building makeinfo as part of the GCC distribution.
   9967 
   9968 Other significant improvements
   9969 
   9970      * Garbage collection used internally by the compiler for most memory
   9971        allocation instead of obstacks.
   9972      * Lengauer and Tarjan algorithm used for computing dominators in the
   9973        CFG. This algorithm can be significantly faster and more space
   9974        efficient than our older algorithm.
   9975      * gccbug script provided to assist in submitting bug reports to our
   9976        bug tracking system. (Bug reports previously submitted directly to
   9977        our mailing lists, for which you received no bug tracking number,
   9978        should be submitted again using gccbug if you can reproduce the
   9979        problem with GCC 3.0.)
   9980      * The internal libgcc library is [12]built as a shared library on
   9981        systems that support it.
   9982      * Extensive testsuite included with GCC, with many new tests. In
   9983        addition to tests for GCC bugs that have been fixed, many tests
   9984        have been added for language features, compiler warnings and
   9985        builtin functions.
   9986      * Additional language-independent warning options -Wpacked, -Wpadded,
   9987        -Wunreachable-code and -Wdisabled-optimization.
   9988      * Target-independent options -falign-functions, -falign-loops and
   9989        -falign-jumps.
   9990 
   9991    Plus a great many bug fixes and almost all the [13]features found in
   9992    GCC 2.95.
   9993 
   9994 
   9995     For questions related to the use of GCC, please consult these web
   9996     pages and the [14]GCC manuals. If that fails, the
   9997     [15]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   9998     web pages and the development of GCC are welcome on our developer
   9999     list at [16]gcc (a] gcc.gnu.org. All of [17]our lists have public
   10000     archives.
   10001 
   10002    Copyright (C) [18]Free Software Foundation, Inc. Verbatim copying and
   10003    distribution of this entire article is permitted in any medium,
   10004    provided this notice is preserved.
   10005 
   10006    These pages are [19]maintained by the GCC team. Last modified
   10007    2011-04-25[20].
   10008 
   10009 References
   10010 
   10011    1. http://www.netbsd.org/
   10012    2. http://gcc.gnu.org/news/reorder.html
   10013    3. http://gcc.gnu.org/news/ssa.html
   10014    4. http://gcc.gnu.org/news/null.html
   10015    5. http://gcc.gnu.org/news/unify.html
   10016    6. http://gcc.gnu.org/gcc-3.0/c++features.html
   10017    7. http://gcc.gnu.org/libstdc++/
   10018    8. http://gcc.gnu.org/news/inlining.html
   10019    9. http://gcc.gnu.org/news/dependencies.html
   10020   10. http://gcc.gnu.org/gcc-3.0/c99status.html
   10021   11. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
   10022   12. http://gcc.gnu.org/gcc-3.0/libgcc.html
   10023   13. http://gcc.gnu.org/gcc-2.95/features.html
   10024   14. http://gcc.gnu.org/onlinedocs/
   10025   15. mailto:gcc-help (a] gcc.gnu.org
   10026   16. mailto:gcc (a] gcc.gnu.org
   10027   17. http://gcc.gnu.org/lists.html
   10028   18. http://www.fsf.org/
   10029   19. http://gcc.gnu.org/about.html
   10030   20. http://validator.w3.org/check/referer
   10031 ======================================================================
   10032 http://gcc.gnu.org/gcc-3.0/caveats.html
   10033 
   10034                                 GCC 3.0 Caveats
   10035 
   10036      * -fstrict-aliasing is now part of -O2 and higher optimization
   10037        levels. This allows the compiler to assume the strictest aliasing
   10038        rules applicable to the language being compiled. For C and C++,
   10039        this activates optimizations based on the type of expressions. This
   10040        optimization may thus break old, non-compliant code.
   10041      * Enumerations are now properly promoted to int in function
   10042        parameters and function returns. Normally this change is not
   10043        visible, but when using -fshort-enums this is an ABI change.
   10044      * The undocumented extension that allowed C programs to have a label
   10045        at the end of a compound statement has been deprecated and may be
   10046        removed in a future version. Programs that now generate a warning
   10047        about this may be fixed by adding a null statement (a single
   10048        semicolon) after the label.
   10049      * The poorly documented extension that allowed string constants in C,
   10050        C++ and Objective C to contain unescaped newlines has been
   10051        deprecated and may be removed in a future version. Programs using
   10052        this extension may be fixed in several ways: the bare newline may
   10053        be replaced by \n, or preceded by \n\, or string concatenation may
   10054        be used with the bare newline preceded by \n" and " placed at the
   10055        start of the next line.
   10056      * The Chill compiler is not included in GCC 3.0, because of the lack
   10057        of a volunteer to convert it to use garbage collection.
   10058      * Certain non-standard iostream methods from earlier versions of
   10059        libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach,
   10060        ostream::form, and istream::gets.
   10061      * The new C++ ABI is not yet fully supported by current (as of
   10062        2001-07-01) releases and development versions of GDB, or any
   10063        earlier versions. There is a problem setting breakpoints by line
   10064        number, and other related issues that have been fixed in GCC 3.0
   10065        but not yet handled in GDB:
   10066        [1]http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
   10067 
   10068 
   10069     For questions related to the use of GCC, please consult these web
   10070     pages and the [2]GCC manuals. If that fails, the
   10071     [3]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10072     web pages and the development of GCC are welcome on our developer
   10073     list at [4]gcc (a] gcc.gnu.org. All of [5]our lists have public archives.
   10074 
   10075    Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
   10076    distribution of this entire article is permitted in any medium,
   10077    provided this notice is preserved.
   10078 
   10079    These pages are [7]maintained by the GCC team. Last modified
   10080    2011-04-25[8].
   10081 
   10082 References
   10083 
   10084    1. http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
   10085    2. http://gcc.gnu.org/onlinedocs/
   10086    3. mailto:gcc-help (a] gcc.gnu.org
   10087    4. mailto:gcc (a] gcc.gnu.org
   10088    5. http://gcc.gnu.org/lists.html
   10089    6. http://www.fsf.org/
   10090    7. http://gcc.gnu.org/about.html
   10091    8. http://validator.w3.org/check/referer
   10092 ======================================================================
   10093 http://gcc.gnu.org/gcc-2.95/index.html
   10094 
   10095                                     GCC 2.95
   10096 
   10097    March 16, 2001: The GNU project and the GCC developers are pleased to
   10098    announce the release of GCC version 2.95.3.
   10099 
   10100 Release History
   10101 
   10102    GCC 2.95.3
   10103           March 16, 2001
   10104 
   10105    GCC 2.95.2
   10106           October 27, 1999
   10107 
   10108    GCC 2.95.1
   10109           August 19, 1999
   10110 
   10111    GCC 2.95
   10112           July 31, 1999. This is the first release of GCC since the April
   10113           1999 GCC/EGCS reunification and includes nearly a year's worth
   10114           of new development and bugfixes.
   10115 
   10116 References and Acknowledgements
   10117 
   10118    GCC used to stand for the GNU C Compiler, but since the compiler
   10119    supports several other languages aside from C, it now stands for the
   10120    GNU Compiler Collection.
   10121 
   10122    The whole suite has been extensively [1]regression tested and
   10123    [2]package tested. It should be reliable and suitable for widespread
   10124    use.
   10125 
   10126    The compiler has several new optimizations, new targets, new languages
   10127    and other new features. See the [3]new features page for a more
   10128    complete list of new features found in the GCC 2.95 releases.
   10129 
   10130    The sources include installation instructions in both HTML and
   10131    plaintext forms in the install directory in the distribution. However,
   10132    the most up to date [4]installation instructions and [5]build/test
   10133    status are on the web pages. We will update those pages as new
   10134    information becomes available.
   10135 
   10136    The GCC developers would like to thank the numerous people that have
   10137    contributed new features, test results, bugfixes, etc to GCC. This
   10138    [6]amazing group of volunteers is what makes GCC successful.
   10139 
   10140    And finally, we can't in good conscience fail to mention some
   10141    [7]caveats to using GCC 2.95.
   10142 
   10143    Download GCC 2.95 from one of our many [8]mirror sites.
   10144 
   10145    For additional information about GCC please see the [9]GCC project web
   10146    server or contact the [10]GCC development mailing list.
   10147 
   10148 
   10149     For questions related to the use of GCC, please consult these web
   10150     pages and the [11]GCC manuals. If that fails, the
   10151     [12]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10152     web pages and the development of GCC are welcome on our developer
   10153     list at [13]gcc (a] gcc.gnu.org. All of [14]our lists have public
   10154     archives.
   10155 
   10156    Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
   10157    distribution of this entire article is permitted in any medium,
   10158    provided this notice is preserved.
   10159 
   10160    These pages are [16]maintained by the GCC team. Last modified
   10161    2011-04-25[17].
   10162 
   10163 References
   10164 
   10165    1. http://gcc.gnu.org/gcc-2.95/regress.html
   10166    2. http://gcc.gnu.org/gcc-2.95/othertest.html
   10167    3. http://gcc.gnu.org/gcc-2.95/features.html
   10168    4. http://gcc.gnu.org/install/
   10169    5. http://gcc.gnu.org/gcc-2.95/buildstat.html
   10170    6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   10171    7. http://gcc.gnu.org/gcc-2.95/caveats.html
   10172    8. http://gcc.gnu.org/mirrors.html
   10173    9. http://gcc.gnu.org/index.html
   10174   10. mailto:gcc (a] gcc.gnu.org
   10175   11. http://gcc.gnu.org/onlinedocs/
   10176   12. mailto:gcc-help (a] gcc.gnu.org
   10177   13. mailto:gcc (a] gcc.gnu.org
   10178   14. http://gcc.gnu.org/lists.html
   10179   15. http://www.fsf.org/
   10180   16. http://gcc.gnu.org/about.html
   10181   17. http://validator.w3.org/check/referer
   10182 ======================================================================
   10183 http://gcc.gnu.org/gcc-2.95/features.html
   10184 
   10185                              GCC 2.95 New Features
   10186 
   10187      * General Optimizer Improvements:
   10188           + [1]Localized register spilling to improve speed and code
   10189             density especially on small register class machines.
   10190           + [2]Global CSE using lazy code motion algorithms.
   10191           + [3]Improved global constant/copy propagation.
   10192           + [4]Improved control flow graph analysis and manipulation.
   10193           + [5]Local dead store elimination.
   10194           + [6]Memory Load hoisting/store sinking in loops.
   10195           + [7]Type based alias analysis is enabled by default. Note this
   10196             feature will expose bugs in the Linux kernel. Please refer to
   10197             the FAQ (as shipped with GCC 2.95) for additional information
   10198             on this issue.
   10199           + Major revamp of GIV detection, combination and simplification
   10200             to improve loop performance.
   10201           + Major improvements to register allocation and reloading.
   10202      * New Languages and Language specific improvements
   10203           + [8]Many C++ improvements.
   10204           + [9]Many Fortran improvements.
   10205           + [10]Java front-end has been integrated. [11]runtime library is
   10206             available separately.
   10207           + [12]ISO C99 support
   10208           + [13]Chill front-end and runtime has been integrated.
   10209           + Boehm garbage collector support in libobjc.
   10210           + More support for various pragmas which appear in vendor
   10211             include files
   10212      * New Targets and Target Specific Improvements
   10213           + [14]SPARC backend rewrite.
   10214           + -mschedule=8000 will optimize code for PA8000 class
   10215             processors; -mpa-risc-2-0 will generate code for PA2.0
   10216             processors
   10217           + Various micro-optimizations for the ia32 port. K6
   10218             optimizations
   10219           + Compiler will attempt to align doubles in the stack on the
   10220             ia32 port
   10221           + Alpha EV6 support
   10222           + PowerPC 750
   10223           + RS6000/PowerPC: -mcpu=401 was added as an alias for -mcpu=403.
   10224             -mcpu=e603e was added to do -mcpu=603e and -msoft-float.
   10225           + c3x, c4x
   10226           + HyperSPARC
   10227           + SparcLite86x
   10228           + sh4
   10229           + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
   10230             arm-linux)
   10231           + vxWorks targets include support for vxWorks threads
   10232           + StrongARM 110 and ARM9 support added. ARM Scheduling
   10233             parameters rewritten.
   10234           + Various changes to the MIPS port to avoid assembler macros,
   10235             which in turn improves performance
   10236           + Various performance improvements to the i960 port.
   10237           + Major rewrite of ns32k port
   10238      * Other significant improvements
   10239           + [15]Ability to dump cfg information and display it using vcg.
   10240           + The new faster scheme for fixing vendor header files is
   10241             enabled by default.
   10242           + Experimental internationalization support.
   10243           + multibyte character support
   10244           + Some compile-time speedups for pathological problems
   10245           + Better support for complex types
   10246      * Plus the usual mountain of bugfixes
   10247      * Core compiler is based on the gcc2 development tree from Sept 30,
   10248        1998, so we have all of the [16]features found in GCC 2.8.
   10249 
   10250 Additional Changes in GCC 2.95.1
   10251 
   10252      * Generic bugfixes and improvements
   10253           + Various documentation fixes related to the GCC/EGCS merger.
   10254           + Fix memory management bug which could lead to spurious aborts,
   10255             core dumps or random parsing errors in the compiler.
   10256           + Fix a couple bugs in the dwarf1 and dwarf2 debug record
   10257             support.
   10258           + Fix infinite loop in the CSE optimizer.
   10259           + Avoid undefined behavior in compiler FP emulation code
   10260           + Fix install problem when prefix is overridden on the make
   10261             install command.
   10262           + Fix problem with unwanted installation of assert.h on some
   10263             systems.
   10264           + Fix problem with finding the wrong assembler in a single tree
   10265             build.
   10266           + Avoid increasing the known alignment of a register that is
   10267             already known to be a pointer.
   10268      * Platform specific bugfixes and improvements
   10269           + Codegen bugfix for prologue/epilogue for cpu32 target.
   10270           + Fix long long code generation bug for the Coldfire target.
   10271           + Fix various aborts in the SH compiler.
   10272           + Fix bugs in libgcc support library for the SH.
   10273           + Fix alpha ev6 code generation bug.
   10274           + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on
   10275             AIX platforms.
   10276           + Fix -fpic code generation bug for rs6000/ppc svr4 targets.
   10277           + Fix varargs/stdarg code generation bug for rs6000/ppc svr4
   10278             targets.
   10279           + Fix weak symbol handling for rs6000/ppc svr4 targets.
   10280           + Fix various problems with 64bit code generation for the
   10281             rs6000/ppc port.
   10282           + Fix codegen bug which caused tetex to be mis-compiled on the
   10283             x86.
   10284           + Fix compiler abort in new cfg code exposed by x86 port.
   10285           + Fix out of range array reference in code convert flat
   10286             registers to the x87 stacked FP register file.
   10287           + Fix minor vxworks configuration bug.
   10288           + Fix return type of bsearch for SunOS 4.x.
   10289      * Language & Runtime specific fixes.
   10290           + The G++ signature extension has been deprecated. It will be
   10291             removed in the next major release of G++. Use of signatures
   10292             will result in a warning from the compiler.
   10293           + Several bugs relating to templates and namespaces were fixed.
   10294           + A bug that caused crashes when combining templates with -g on
   10295             DWARF1 platforms was fixed.
   10296           + Pointers-to-members, virtual functions, and multiple
   10297             inheritance should now work together correctly.
   10298           + Some code-generation bugs relating to function try blocks were
   10299             fixed.
   10300           + G++ is a little bit more lenient with certain archaic
   10301             constructs than in GCC 2.95.
   10302           + Fix to prevent shared library version #s from bring truncated
   10303             to 1 digit
   10304           + Fix missing std:: in the libstdc++ library.
   10305           + Fix stream locking problems in libio.
   10306           + Fix problem in java compiler driver.
   10307 
   10308 Additional Changes in GCC 2.95.2
   10309 
   10310    The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While
   10311    the optimizations performed by -fstrict-aliasing are valid according to
   10312    the C and C++ standards, the optimization have caused some problems,
   10313    particularly with old non-conforming code.
   10314 
   10315    The GCC developers are experimenting with ways to warn users about code
   10316    which violates the C/C++ standards, but those warnings are not ready
   10317    for widespread use at this time. Rather than wait for those warnings
   10318    the GCC developers have chosen to disable -fstrict-aliasing by default
   10319    for the GCC 2.95.2 release.
   10320 
   10321    We strongly encourage developers to find and fix code which violates
   10322    the C/C++ standards as -fstrict-aliasing may be enabled by default in
   10323    future releases. Use the option -fstrict-aliasing to re-enable these
   10324    optimizations.
   10325      * Generic bugfixes and improvements
   10326           + Fix incorrectly optimized memory reference in global common
   10327             subexpression elimination (GCSE) optimization pass.
   10328           + Fix code generation bug in regmove.c in which it could
   10329             incorrectly change a "const" value.
   10330           + Fix bug in optimization of conditionals involving volatile
   10331             memory references.
   10332           + Avoid over-allocation of stack space for some procedures.
   10333           + Fixed bug in the compiler which caused incorrect optimization
   10334             of an obscure series of bit manipulations, shifts and
   10335             arithmetic.
   10336           + Fixed register allocator bug which caused teTeX to be
   10337             mis-compiled on SPARC targets.
   10338           + Avoid incorrect optimization of degenerate case statements for
   10339             certain targets such as the ARM.
   10340           + Fix out of range memory reference in the jump optimizer.
   10341           + Avoid dereferencing null pointer in fix-header.
   10342           + Fix test for GCC specific features so that it is possible to
   10343             bootstrap with gcc-2.6.2 and older versions of GCC.
   10344           + Fix typo in scheduler which could potentially cause out of
   10345             range memory accesses.
   10346           + Avoid incorrect loop reversal which caused incorrect code for
   10347             certain loops on PowerPC targets.
   10348           + Avoid incorrect optimization of switch statements on certain
   10349             targets (for example the ARM).
   10350      * Platform specific bugfixes and improvements
   10351           + Work around bug in Sun V5.0 compilers which caused bootstrap
   10352             comparison failures on SPARC targets.
   10353           + Fix SPARC backend bug which caused aborts in final.c.
   10354           + Fix sparc-hal-solaris2* configuration fragments.
   10355           + Fix bug in sparc block profiling.
   10356           + Fix obscure code generation bug for the PARISC targets.
   10357           + Define __STDC_EXT__ for HPUX configurations.
   10358           + Various POWERPC64 code generation bugfixes.
   10359           + Fix abort for PPC targets using ELF (ex GNU/Linux).
   10360           + Fix collect2 problems for AIX targets.
   10361           + Correct handling of .file directive for PPC targets.
   10362           + Fix bug in fix_trunc x86 patterns.
   10363           + Fix x86 port to correctly pop the FP stack for functions that
   10364             return structures in memory.
   10365           + Fix minor bug in strlen x86 pattern.
   10366           + Use stabs debugging instead of dwarf1 for x86-solaris targets.
   10367           + Fix template repository code to handle leading underscore in
   10368             mangled names.
   10369           + Fix weak/weak alias support for OpenBSD.
   10370           + GNU/Linux for the ARM has C++ compatible include files.
   10371      * Language & Runtime specific fixes.
   10372           + Fix handling of constructor attribute in the C front-end which
   10373             caused problems building the Chill runtime library on some
   10374             targets.
   10375           + Fix minor problem merging type qualifiers in the C front-end.
   10376           + Fix aliasing bug for pointers and references (C/C++).
   10377           + Fix incorrect "non-constant initializer bug" when -traditional
   10378             or -fwritable-strings is enabled.
   10379           + Fix build error for Chill front-end on SunOS.
   10380           + Do not complain about duplicate instantiations when using
   10381             -frepo (C++).
   10382           + Fix array bounds handling in C++ front-end which caused
   10383             problems with dwarf debugging information in some
   10384             circumstances.
   10385           + Fix minor namespace problem.
   10386           + Fix problem linking java programs.
   10387 
   10388 Additional Changes in GCC 2.95.3
   10389 
   10390      * Generic bugfixes and improvements
   10391           + Fix numerous problems that caused incorrect optimization in
   10392             the register reloading code.
   10393           + Fix numerous problems that caused incorrect optimization in
   10394             the loop optimizer.
   10395           + Fix aborts in the functions build_insn_chain and scan_loops
   10396             under some circumstances.
   10397           + Fix an alias analysis bug.
   10398           + Fix an infinite compilation bug in the combiner.
   10399           + A few problems with complex number support have been fixed.
   10400           + It is no longer possible for gcc to act as a fork bomb when
   10401             installed incorrectly.
   10402           + The -fpack-struct option should be recognized now.
   10403           + Fixed a bug that caused incorrect code to be generated due to
   10404             a lost stack adjustment.
   10405      * Platform specific bugfixes and improvements
   10406           + Support building ARM toolchains hosted on Windows.
   10407           + Fix attribute calculations in ARM toolchains.
   10408           + arm-linux support has been improved.
   10409           + Fix a PIC failure on sparc targets.
   10410           + On ix86 targets, the regparm attribute should now work
   10411             reliably.
   10412           + Several updates for the h8300 port.
   10413           + Fix problem building libio with glibc 2.2.
   10414 
   10415 
   10416     For questions related to the use of GCC, please consult these web
   10417     pages and the [17]GCC manuals. If that fails, the
   10418     [18]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10419     web pages and the development of GCC are welcome on our developer
   10420     list at [19]gcc (a] gcc.gnu.org. All of [20]our lists have public
   10421     archives.
   10422 
   10423    Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
   10424    distribution of this entire article is permitted in any medium,
   10425    provided this notice is preserved.
   10426 
   10427    These pages are [22]maintained by the GCC team. Last modified
   10428    2011-04-25[23].
   10429 
   10430 References
   10431 
   10432    1. http://gcc.gnu.org/news/spill.html
   10433    2. http://gcc.gnu.org/news/lcm.html
   10434    3. http://gcc.gnu.org/news/cprop.html
   10435    4. http://gcc.gnu.org/news/cfg.html
   10436    5. http://gcc.gnu.org/news/dse.html
   10437    6. http://gcc.gnu.org/news/hoist.html
   10438    7. http://gcc.gnu.org/news/alias.html
   10439    8. http://gcc.gnu.org/gcc-2.95/c++features.html
   10440    9. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
   10441   10. http://gcc.gnu.org/java/gcj-announce.txt
   10442   11. http://gcc.gnu.org/news/javaannounce.html
   10443   12. http://gcc.gnu.org/c99status.html
   10444   13. http://gcc.gnu.org/news/chill.html
   10445   14. http://gcc.gnu.org/news/sparc.html
   10446   15. http://gcc.gnu.org/news/egcs-vcg.html
   10447   16. http://gcc.gnu.org/egcs-1.0/features-2.8.html
   10448   17. http://gcc.gnu.org/onlinedocs/
   10449   18. mailto:gcc-help (a] gcc.gnu.org
   10450   19. mailto:gcc (a] gcc.gnu.org
   10451   20. http://gcc.gnu.org/lists.html
   10452   21. http://www.fsf.org/
   10453   22. http://gcc.gnu.org/about.html
   10454   23. http://validator.w3.org/check/referer
   10455 ======================================================================
   10456 http://gcc.gnu.org/gcc-2.95/caveats.html
   10457 
   10458                                 GCC 2.95 Caveats
   10459 
   10460      * GCC 2.95 will issue an error for invalid asm statements that had
   10461        been silently accepted by earlier versions of the compiler. This is
   10462        particularly noticeable when compiling older versions of the Linux
   10463        kernel (2.0.xx). Please refer to the FAQ (as shipped with GCC 2.95)
   10464        for more information on this issue.
   10465      * GCC 2.95 implements type based alias analysis to disambiguate
   10466        memory references. Some programs, particularly the Linux kernel
   10467        violate ANSI/ISO aliasing rules and therefore may not operate
   10468        correctly when compiled with GCC 2.95. Please refer to the FAQ (as
   10469        shipped with GCC 2.95) for more information on this issue.
   10470      * GCC 2.95 has a known bug in its handling of complex variables for
   10471        64bit targets. Instead of silently generating incorrect code, GCC
   10472        2.95 will issue a fatal error for situations it can not handle.
   10473        This primarily affects the Fortran community as Fortran makes more
   10474        use of complex variables than C or C++.
   10475      * GCC 2.95 has an integrated libstdc++, but does not have an
   10476        integrated libg++. Furthermore old libg++ releases will not work
   10477        with GCC 2.95. You can retrieve a recent copy of libg++ from the
   10478        [1]GCC ftp server.
   10479        Note most C++ programs only need libstdc++.
   10480      * Exception handling may not work with shared libraries, particularly
   10481        on alphas, hppas, rs6000/powerpc and mips based platforms.
   10482        Exception handling is known to work on x86 GNU/Linux platforms with
   10483        shared libraries.
   10484      * In general, GCC 2.95 is more rigorous about rejecting invalid C++
   10485        code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0,
   10486        or EGCS 1.1. As a result it may be necessary to fix C++ code before
   10487        it will compile with GCC 2.95.
   10488      * G++ is also converting toward the ISO C++ standard; as a result
   10489        code which was previously valid (and thus accepted by other
   10490        compilers and older versions of g++) may no longer be accepted. The
   10491        flag -fpermissive may allow some non-conforming code to compile
   10492        with GCC 2.95.
   10493      * GCC 2.95 compiled C++ code is not binary compatible with EGCS
   10494        1.1.x, EGCS 1.0.x or GCC 2.8.x.
   10495      * GCC 2.95 does not have changes from the GCC 2.8 tree that were made
   10496        between Sept 30, 1998 and April 30, 1999 (the official end of the
   10497        GCC 2.8 project). Future GCC releases will include all the changes
   10498        from the defunct GCC 2.8 sources.
   10499 
   10500 
   10501     For questions related to the use of GCC, please consult these web
   10502     pages and the [2]GCC manuals. If that fails, the
   10503     [3]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10504     web pages and the development of GCC are welcome on our developer
   10505     list at [4]gcc (a] gcc.gnu.org. All of [5]our lists have public archives.
   10506 
   10507    Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
   10508    distribution of this entire article is permitted in any medium,
   10509    provided this notice is preserved.
   10510 
   10511    These pages are [7]maintained by the GCC team. Last modified
   10512    2011-04-25[8].
   10513 
   10514 References
   10515 
   10516    1. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz
   10517    2. http://gcc.gnu.org/onlinedocs/
   10518    3. mailto:gcc-help (a] gcc.gnu.org
   10519    4. mailto:gcc (a] gcc.gnu.org
   10520    5. http://gcc.gnu.org/lists.html
   10521    6. http://www.fsf.org/
   10522    7. http://gcc.gnu.org/about.html
   10523    8. http://validator.w3.org/check/referer
   10524 ======================================================================
   10525 http://gcc.gnu.org/egcs-1.1/index.html
   10526 
   10527                                     EGCS 1.1
   10528 
   10529    September 3, 1998: We are pleased to announce the release of EGCS 1.1.
   10530    December 1, 1998: We are pleased to announce the release of EGCS 1.1.1.
   10531    March 15, 1999: We are pleased to announce the release of EGCS 1.1.2.
   10532 
   10533    EGCS is a free software project to further the development of the GNU
   10534    compilers using an open development environment.
   10535 
   10536    EGCS 1.1 is a major new release of the EGCS compiler system. It has
   10537    been [1]extensively tested and is believed to be stable and suitable
   10538    for widespread use.
   10539 
   10540    EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8
   10541    development sources; it contains all of the new features found in GCC
   10542    2.8.1 as well as all new development from GCC up to June 6, 1998.
   10543 
   10544    EGCS 1.1 also contains many improvements and features not found in GCC
   10545    or in older versions of EGCS:
   10546      * Global common subexpression elimination and global constant/copy
   10547        propagation (aka [2]gcse)
   10548      * Ongoing improvements to the [3]alias analysis support to allow for
   10549        better optimizations throughout the compiler.
   10550      * Vastly improved [4]C++ compiler and integrated C++ runtime
   10551        libraries.
   10552      * Fixes for the /tmp symlink race security problems.
   10553      * New targets including mips16, arm-thumb and 64 bit PowerPC.
   10554      * Improvements to GNU Fortran (g77) compiler and runtime library made
   10555        since g77 version 0.5.23.
   10556 
   10557    See the [5]new features page for a more complete list of new features
   10558    found in EGCS 1.1 releases.
   10559 
   10560    EGCS 1.1.1 is a minor update to fix several serious problems in EGCS
   10561    1.1:
   10562      * General improvements and fixes
   10563           + Avoid some stack overflows when compiling large functions.
   10564           + Avoid incorrect loop invariant code motions.
   10565           + Fix some core dumps on Linux kernel code.
   10566           + Bring back the imake -Di386 and friends fix from EGCS 1.0.2.
   10567           + Fix code generation problem in gcse.
   10568           + Various documentation related fixes.
   10569      * g++/libstdc++ improvements and fixes
   10570           + MT safe EH fix for setjmp/longjmp based exception handling.
   10571           + Fix a few bad interactions between optimization and exception
   10572             handling.
   10573           + Fixes for demangling of template names starting with "__".
   10574           + Fix a bug that would fail to run destructors in some cases
   10575             with -O2.
   10576           + Fix 'new' of classes with virtual bases.
   10577           + Fix crash building Qt on the Alpha.
   10578           + Fix failure compiling WIFEXITED macro on GNU/Linux.
   10579           + Fix some -frepo failures.
   10580      * g77 and libf2c improvements and fixes
   10581           + Various documentation fixes.
   10582           + Avoid compiler crash on RAND intrinsic.
   10583           + Fix minor bugs in makefiles exposed by BSD make programs.
   10584           + Define _XOPEN_SOURCE for libI77 build to avoid potential
   10585             problems on some 64-bit systems.
   10586           + Fix problem with implicit endfile on rewind.
   10587           + Fix spurious recursive I/O errors.
   10588      * platform specific improvements and fixes
   10589           + Match all versions of UnixWare7.
   10590           + Do not assume x86 SVR4 or UnixWare targets can handle stabs.
   10591           + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion
   10592             from unsigned ints to double precision floats.
   10593           + Fix ARM ABI issue with NetBSD.
   10594           + Fix a few arm code generation bugs.
   10595           + Fixincludes will fix additional broken SCO OpenServer header
   10596             files.
   10597           + Fix a m68k backend bug which caused invalid offsets in reg+d
   10598             addresses.
   10599           + Fix problems with 64bit AIX 4.3 support.
   10600           + Fix handling of long longs for varargs/stdarg functions on the
   10601             ppc.
   10602           + Minor fixes to CPP predefines for Windows.
   10603           + Fix code generation problems with gpr<->fpr copies for 64bit
   10604             ppc.
   10605           + Fix a few coldfire code generation bugs.
   10606           + Fix some more header file problems on SunOS 4.x.
   10607           + Fix assert.h handling for RTEMS.
   10608           + Fix Windows handling of TREE_SYMBOL_REFERENCED.
   10609           + Fix x86 compiler abort in reg-stack pass.
   10610           + Fix cygwin/windows problem with section attributes.
   10611           + Fix Alpha code generation problem exposed by SMP Linux
   10612             kernels.
   10613           + Fix typo in m68k 32->64bit integer conversion.
   10614           + Make sure target libraries build with -fPIC for PPC & Alpha
   10615             targets.
   10616 
   10617    EGCS 1.1.2 is a minor update to fix several serious problems in EGCS
   10618    1.1.1:
   10619      * General improvements and fixes
   10620           + Fix bug in loop optimizer which caused the SPARC (and
   10621             potentially other) ports to segfault.
   10622           + Fix infinite recursion in alias analysis and combiner code.
   10623           + Fix bug in regclass preferencing.
   10624           + Fix incorrect loop reversal which caused incorrect code to be
   10625             generated for several targets.
   10626           + Fix return value for builtin memcpy.
   10627           + Reduce compile time for certain loops which exposed quadratic
   10628             behavior in the loop optimizer.
   10629           + Fix bug which caused volatile memory to be written multiple
   10630             times when only one write was needed/desired.
   10631           + Fix compiler abort in caller-save.c
   10632           + Fix combiner bug which caused incorrect code generation for
   10633             certain division by constant operations.
   10634           + Fix incorrect code generation due to a bug in range check
   10635             optimizations.
   10636           + Fix incorrect code generation due to mis-handling of clobbered
   10637             values in CSE.
   10638           + Fix compiler abort/segfault due to incorrect register
   10639             splitting when unrolling loops.
   10640           + Fix code generation involving autoincremented addresses with
   10641             ternary operators.
   10642           + Work around bug in the scheduler which caused qt to be
   10643             mis-compiled on some platforms.
   10644           + Fix code generation problems with -fshort-enums.
   10645           + Tighten security for temporary files.
   10646           + Improve compile time for codes which make heavy use of
   10647             overloaded functions.
   10648           + Fix multiply defined constructor/destructor symbol problems.
   10649           + Avoid setting bogus RPATH environment variable during
   10650             bootstrap.
   10651           + Avoid GNU-make dependencies in the texinfo subdir.
   10652           + Install CPP wrapper script in $(prefix)/bin if --enable-cpp.
   10653             --enable-cpp=<dirname> can be used to specify an additional
   10654             install directory for the cpp wrapper script.
   10655           + Fix CSE bug which caused incorrect label-label refs to appear
   10656             on some platforms.
   10657           + Avoid linking in EH routines from libgcc if they are not
   10658             needed.
   10659           + Avoid obscure bug in aliasing code.
   10660           + Fix bug in weak symbol handling.
   10661      * Platform-specific improvements and fixes
   10662           + Fix detection of PPro/PII on Unixware 7.
   10663           + Fix compiler segfault when building spec99 and other programs
   10664             for SPARC targets.
   10665           + Fix code-generation bugs for integer and floating point
   10666             conditional move instructions on the PPro/PII.
   10667           + Use fixincludes to fix byteorder problems on i?86-*-sysv.
   10668           + Fix build failure for the arc port.
   10669           + Fix floating point format configuration for i?86-gnu port.
   10670           + Fix problems with hppa1.0-hp-hpux10.20 configuration when
   10671             threads are enabled.
   10672           + Fix coldfire code generation bugs.
   10673           + Fix "unrecognized insn" problems for Alpha and PPC ports.
   10674           + Fix h8/300 code generation problem with floating point values
   10675             in memory.
   10676           + Fix unrecognized insn problems for the m68k port.
   10677           + Fix namespace-pollution problem for the x86 port.
   10678           + Fix problems with old assembler on x86 NeXT systems.
   10679           + Fix PIC code-generation problems for the SPARC port.
   10680           + Fix minor bug with LONG_CALLS in PowerPC SVR4 support.
   10681           + Fix minor ISO namespace violation in Alpha varargs/stdarg
   10682             support.
   10683           + Fix incorrect "braf" instruction usage for the SH port.
   10684           + Fix minor bug in va-sh which prevented its use with -ansi.
   10685           + Fix problems recognizing and supporting FreeBSD.
   10686           + Handle OpenBSD systems correctly.
   10687           + Minor fixincludes fix for Digital UNIX 4.0B.
   10688           + Fix problems with ctors/dtors in SCO shared libraries.
   10689           + Abort instead of generating incorrect code for PPro/PII
   10690             floating point conditional moves.
   10691           + Avoid multiply defined symbols on GNU/Linux systems using
   10692             libc-5.4.xx.
   10693           + Fix abort in alpha compiler.
   10694      * Fortran-specific fixes
   10695           + Fix the IDate intrinsic (VXT) (in libg2c) so the returned year
   10696             is in the documented, non-Y2K-compliant range of 0-99, instead
   10697             of being returned as 100 in the year 2000.
   10698           + Fix the `Date_and_Time' intrinsic (in libg2c) to return the
   10699             milliseconds value properly in Values(8).
   10700           + Fix the `LStat' intrinsic (in libg2c) to return device-ID
   10701             information properly in SArray(7).
   10702 
   10703    Each release includes installation instructions in both HTML and
   10704    plaintext forms (see the INSTALL directory in the toplevel directory of
   10705    the distribution). However, we also keep the most up to date
   10706    [6]installation instructions and [7]build/test status on our web page.
   10707    We will update those pages as new information becomes available.
   10708 
   10709    The EGCS project would like to thank the numerous people that have
   10710    contributed new features, test results, bugfixes, etc. This [8]amazing
   10711    group of volunteers is what makes EGCS successful.
   10712 
   10713    And finally, we can't in good conscience fail to mention some
   10714    [9]caveats to using EGCS 1.1.
   10715 
   10716    Download EGCS from egcs.cygnus.com (USA California).
   10717 
   10718    The EGCS 1.1 release is also available on many mirror sites.
   10719    [10]Goto mirror list to find a closer site.
   10720 
   10721 
   10722     For questions related to the use of GCC, please consult these web
   10723     pages and the [11]GCC manuals. If that fails, the
   10724     [12]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10725     web pages and the development of GCC are welcome on our developer
   10726     list at [13]gcc (a] gcc.gnu.org. All of [14]our lists have public
   10727     archives.
   10728 
   10729    Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
   10730    distribution of this entire article is permitted in any medium,
   10731    provided this notice is preserved.
   10732 
   10733    These pages are [16]maintained by the GCC team. Last modified
   10734    2011-10-24[17].
   10735 
   10736 References
   10737 
   10738    1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html
   10739    2. http://gcc.gnu.org/news/gcse.html
   10740    3. http://gcc.gnu.org/news/alias.html
   10741    4. http://gcc.gnu.org/egcs-1.1/c++features.html
   10742    5. http://gcc.gnu.org/egcs-1.1/features.html
   10743    6. http://gcc.gnu.org/install/
   10744    7. http://gcc.gnu.org/egcs-1.1/buildstat.html
   10745    8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   10746    9. http://gcc.gnu.org/egcs-1.1/caveats.html
   10747   10. http://gcc.gnu.org/mirrors.html
   10748   11. http://gcc.gnu.org/onlinedocs/
   10749   12. mailto:gcc-help (a] gcc.gnu.org
   10750   13. mailto:gcc (a] gcc.gnu.org
   10751   14. http://gcc.gnu.org/lists.html
   10752   15. http://www.fsf.org/
   10753   16. http://gcc.gnu.org/about.html
   10754   17. http://validator.w3.org/check/referer
   10755 ======================================================================
   10756 http://gcc.gnu.org/egcs-1.1/features.html
   10757 
   10758                              EGCS 1.1 new features
   10759 
   10760      * Integrated GNU Fortran (g77) compiler and runtime library with
   10761        improvements, based on g77 version 0.5.23.
   10762      * Vast improvements in the C++ compiler; so many they have [1]page of
   10763        their own!
   10764      * Compiler implements [2]global common subexpression elimination and
   10765        global copy/constant propagation.
   10766      * More major improvements in the [3]alias analysis code.
   10767      * More major improvements in the exception handling code to improve
   10768        performance, lower static overhead and provide the infrastructure
   10769        for future improvements.
   10770      * The infamous /tmp symlink race security problems have been fixed.
   10771      * The regmove optimization pass has been nearly completely rewritten
   10772        to improve performance of generated code.
   10773      * The compiler now recomputes register usage information before local
   10774        register allocation. By providing more accurate information to the
   10775        priority based allocator, we get better register allocation.
   10776      * The register reloading phase of the compiler optimizes spill code
   10777        much better than in previous releases.
   10778      * Some bad interactions between the register allocator and
   10779        instruction scheduler have been fixed, resulting in much better
   10780        code for certain programs. Additionally, we have tuned the
   10781        scheduler in various ways to improve performance of generated code
   10782        for some architectures.
   10783      * The compiler's branch shortening algorithms have been significantly
   10784        improved to work better on targets which align jump targets.
   10785      * The compiler now supports -Os to prefer optimizing for code space
   10786        over optimizing for code speed.
   10787      * The compiler will now totally eliminate library calls which compute
   10788        constant values. This primarily helps targets with no integer
   10789        div/mul support and targets without floating point support.
   10790      * The compiler now supports an extensive "--help" option.
   10791      * cpplib has been greatly improved and may be suitable for limited
   10792        use.
   10793      * Memory footprint for the compiler has been significantly reduced
   10794        for some pathological cases.
   10795      * The time to build EGCS has been improved for certain targets
   10796        (particularly the alpha and mips platforms).
   10797      * Many infrastructure improvements throughout the compiler, plus the
   10798        usual mountain of bugfixes and minor improvements.
   10799      * Target dependent improvements:
   10800           + SPARC port now includes V8 plus and V9 support as well as
   10801             performance tuning for Ultra class machines. The SPARC port
   10802             now uses the Haifa scheduler.
   10803           + Alpha port has been tuned for the EV6 processor and has an
   10804             optimized expansion of memcpy/bzero. The Alpha port now uses
   10805             the Haifa scheduler.
   10806           + RS6000/PowerPC: support for the Power64 architecture and AIX
   10807             4.3. The RS6000/PowerPC port now uses the Haifa scheduler.
   10808           + x86: Alignment of static store data and jump targets is per
   10809             Intel recommendations now. Various improvements throughout the
   10810             x86 port to improve performance on Pentium processors
   10811             (including improved epilogue sequences for Pentium chips and
   10812             backend improvements which should help register allocation on
   10813             all x86 variants. Conditional move support has been fixed and
   10814             enabled for PPro processors. The x86 port also better supports
   10815             64bit operations now. Unixware 7, a System V Release 5 target,
   10816             is now supported and SCO OpenServer targets can support GAS.
   10817           + MIPS has improved multiply/multiply-add support and now
   10818             includes mips16 ISA support.
   10819           + M68k has many micro-optimizations and Coldfire fixes.
   10820      * Core compiler is based on the GCC development tree from June 9,
   10821        1998, so we have all of the [4]features found in GCC 2.8.
   10822 
   10823 
   10824     For questions related to the use of GCC, please consult these web
   10825     pages and the [5]GCC manuals. If that fails, the
   10826     [6]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10827     web pages and the development of GCC are welcome on our developer
   10828     list at [7]gcc (a] gcc.gnu.org. All of [8]our lists have public archives.
   10829 
   10830    Copyright (C) [9]Free Software Foundation, Inc. Verbatim copying and
   10831    distribution of this entire article is permitted in any medium,
   10832    provided this notice is preserved.
   10833 
   10834    These pages are [10]maintained by the GCC team. Last modified
   10835    2011-04-25[11].
   10836 
   10837 References
   10838 
   10839    1. http://gcc.gnu.org/egcs-1.1/c++features.html
   10840    2. http://gcc.gnu.org/news/gcse.html
   10841    3. http://gcc.gnu.org/news/alias.html
   10842    4. http://gcc.gnu.org/egcs-1.0/features-2.8.html
   10843    5. http://gcc.gnu.org/onlinedocs/
   10844    6. mailto:gcc-help (a] gcc.gnu.org
   10845    7. mailto:gcc (a] gcc.gnu.org
   10846    8. http://gcc.gnu.org/lists.html
   10847    9. http://www.fsf.org/
   10848   10. http://gcc.gnu.org/about.html
   10849   11. http://validator.w3.org/check/referer
   10850 ======================================================================
   10851 http://gcc.gnu.org/egcs-1.1/caveats.html
   10852 
   10853                                 EGCS 1.1 Caveats
   10854 
   10855      * EGCS has an integrated libstdc++, but does not have an integrated
   10856        libg++. Furthermore old libg++ releases will not work with EGCS; HJ
   10857        Lu has made a libg++-2.8.1.2 snapshot available which may work with
   10858        EGCS.
   10859        Note most C++ programs only need libstdc++.
   10860      * Exception handling may not work with shared libraries, particularly
   10861        on alphas, hppas, rs6000/powerpc and mips based platforms.
   10862        Exception handling is known to work on x86-linux platforms with
   10863        shared libraries.
   10864      * Some versions of the Linux kernel have bugs which prevent them from
   10865        being compiled or from running when compiled by EGCS. See the FAQ
   10866        (as shipped with EGCS 1.1) for additional information.
   10867      * In general, EGCS is more rigorous about rejecting invalid C++ code
   10868        or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As
   10869        a result it may be necessary to fix C++ code before it will compile
   10870        with EGCS.
   10871      * G++ is also converting toward the ISO C++ standard; as a result
   10872        code which was previously valid (and thus accepted by other
   10873        compilers and older versions of g++) may no longer be accepted.
   10874      * EGCS 1.1 compiled C++ code is not binary compatible with EGCS 1.0.x
   10875        or GCC 2.8.x due to changes necessary to support thread safe
   10876        exception handling.
   10877 
   10878 
   10879     For questions related to the use of GCC, please consult these web
   10880     pages and the [1]GCC manuals. If that fails, the
   10881     [2]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   10882     web pages and the development of GCC are welcome on our developer
   10883     list at [3]gcc (a] gcc.gnu.org. All of [4]our lists have public archives.
   10884 
   10885    Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
   10886    distribution of this entire article is permitted in any medium,
   10887    provided this notice is preserved.
   10888 
   10889    These pages are [6]maintained by the GCC team. Last modified
   10890    2011-04-25[7].
   10891 
   10892 References
   10893 
   10894    1. http://gcc.gnu.org/onlinedocs/
   10895    2. mailto:gcc-help (a] gcc.gnu.org
   10896    3. mailto:gcc (a] gcc.gnu.org
   10897    4. http://gcc.gnu.org/lists.html
   10898    5. http://www.fsf.org/
   10899    6. http://gcc.gnu.org/about.html
   10900    7. http://validator.w3.org/check/referer
   10901 ======================================================================
   10902 http://gcc.gnu.org/egcs-1.0/index.html
   10903 
   10904                                     EGCS 1.0
   10905 
   10906    December 3, 1997: We are pleased to announce the release of EGCS 1.0.
   10907    January 6, 1998: We are pleased to announce the release of EGCS 1.0.1.
   10908    March 16, 1998: We are pleased to announce the release of EGCS 1.0.2.
   10909    May 15, 1998 We are pleased to announce the release of EGCS 1.0.3.
   10910 
   10911    EGCS is a collaborative effort involving several groups of hackers
   10912    using an open development model to accelerate development and testing
   10913    of GNU compilers and runtime libraries.
   10914 
   10915    An important goal of EGCS is to allow wide scale testing of
   10916    experimental features and optimizations; therefore, EGCS contains some
   10917    features and optimizations which are still under development. However,
   10918    EGCS has been carefully tested and should be comparable in quality to
   10919    most GCC releases.
   10920 
   10921    EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8
   10922    development sources; it contains nearly all of the new features found
   10923    in GCC 2.8.
   10924 
   10925    EGCS 1.0 also contains many improvements and features not found in GCC
   10926    2.7 and even the GCC 2.8 series (which was released after the original
   10927    EGCS 1.0 release).
   10928      * Integrated C++ runtime libraries, including support for most major
   10929        GNU/Linux systems!
   10930      * The integrated libstdc++ library includes a verbatim copy of SGI's
   10931        STL release.
   10932      * Integrated GNU Fortran compiler.
   10933      * New instruction scheduler.
   10934      * New alias analysis code.
   10935 
   10936    See the [1]new features page for a more complete list of new features.
   10937 
   10938    EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few
   10939    critical bugs and add support for Red Hat 5.0 Linux. Changes since the
   10940    EGCS 1.0 release:
   10941      * Add support for Red Hat 5.0 Linux and better support for Linux
   10942        systems using glibc2.
   10943        Many programs failed to link when compiled with EGCS 1.0 on Red Hat
   10944        5.0 or on systems with newer versions of glibc2. EGCS 1.0.1 should
   10945        fix these problems.
   10946      * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception
   10947        handling interfaces.
   10948        To avoid future compatibility problems, we strongly urge anyone who
   10949        is planning on distributing shared libraries that contain C++ code
   10950        to upgrade to EGCS 1.0.1 first.
   10951        Soon after EGCS 1.0 was released, the GCC developers made some
   10952        incompatible changes in libgcc's exception handling interfaces.
   10953        These changes were needed to solve problems on some platforms. This
   10954        means that GCC 2.8.0, when released, will not be seamlessly
   10955        compatible with shared libraries built by EGCS 1.0. The reason is
   10956        that the libgcc.a in GCC 2.8.0 will not contain a function needed
   10957        by the old interface.
   10958        The result of this is that there may be compatibility problems with
   10959        shared libraries built by EGCS 1.0 when used with GCC 2.8.0.
   10960        With EGCS 1.0.1, generated code uses the new (GCC 2.8.0) interface,
   10961        and libgcc.a has the support routines for both the old and the new
   10962        interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be freely mixed,
   10963        and EGCS 1.0.1 and GCC 2.8.0 code can be freely mixed).
   10964        The maintainers of GCC 2.x have decided against including seamless
   10965        support for the old interface in 2.8.0, since it was never
   10966        "official", so to avoid future compatibility problems we recommend
   10967        against distributing any shared libraries built by EGCS 1.0 that
   10968        contain C++ code (upgrade to 1.0.1 and use that).
   10969      * Various bugfixes in the x86, hppa, mips, and rs6000/ppc backends.
   10970        The x86 changes fix code generation errors exposed when building
   10971        glibc2 and the usual GNU/Linux dynamic linker (ld.so).
   10972        The hppa change fixes a compiler abort when configured for use with
   10973        RTEMS.
   10974        The MIPS changes fix problems with the definition of LONG_MAX on
   10975        newer systems, allow for command line selection of the target ABI,
   10976        and fix one code generation problem.
   10977        The rs6000/ppc change fixes some problems with passing structures
   10978        to varargs/stdarg functions.
   10979      * A few machine independent bugfixes, mostly to fix code generation
   10980        errors when building Linux kernels or glibc.
   10981      * Fix a few critical exception handling and template bugs in the C++
   10982        compiler.
   10983      * Fix Fortran namelist bug on alphas.
   10984      * Fix build problems on x86-solaris systems.
   10985 
   10986    EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several
   10987    serious problems in EGCS 1.0.1.
   10988      * General improvements and fixes
   10989           + Memory consumption significantly reduced, especially for
   10990             templates and inline functions.
   10991           + Fix various problems with glibc2.1.
   10992           + Fix loop optimization bug exposed by rs6000/ppc port.
   10993           + Fix to avoid potential code generation problems in jump.c.
   10994           + Fix some undefined symbol problems in dwarf1 debug support.
   10995      * g++/libstdc++ improvements and fixes
   10996           + libstdc++ in the EGCS release has been updated and should be
   10997             link compatible with libstdc++-2.8.
   10998           + Various fixes in libio/libstdc++ to work better on GNU/Linux
   10999             systems.
   11000           + Fix problems with duplicate symbols on systems that do not
   11001             support weak symbols.
   11002           + Memory corruption bug and undefined symbols in bastring have
   11003             been fixed.
   11004           + Various exception handling fixes.
   11005           + Fix compiler abort for very long thunk names.
   11006      * g77 improvements and fixes
   11007           + Fix compiler crash for omitted bound in Fortran CASE
   11008             statement.
   11009           + Add missing entries to g77 lang-options.
   11010           + Fix problem with -fpedantic in the g77 compiler.
   11011           + Fix "backspace" problem with g77 on alphas.
   11012           + Fix x86 backend problem with Fortran literals and -fpic.
   11013           + Fix some of the problems with negative subscripts for g77 on
   11014             alphas.
   11015           + Fixes for Fortran builds on cygwin32/mingw32.
   11016      * platform specific improvements and fixes
   11017           + Fix long double problems on x86 (exposed by glibc).
   11018           + x86 ports define i386 again to keep imake happy.
   11019           + Fix exception handling support on NetBSD ports.
   11020           + Several changes to collect2 to fix many problems with AIX.
   11021           + Define __ELF__ for GNU/Linux on rs6000.
   11022           + Fix -mcall-linux problem on GNU/Linux on rs6000.
   11023           + Fix stdarg/vararg problem for GNU/Linux on rs6000.
   11024           + Allow autoconf to select a proper install problem on AIX 3.1.
   11025           + m68k port support includes -mcpu32 option as well as cpu32
   11026             multilibs.
   11027           + Fix stdarg bug for irix6.
   11028           + Allow EGCS to build on irix5 without the gnu assembler.
   11029           + Fix problem with static linking on sco5.
   11030           + Fix bootstrap on sco5 with native compiler.
   11031           + Fix for abort building newlib on H8 target.
   11032           + Fix fixincludes handling of math.h on SunOS.
   11033           + Minor fix for Motorola 3300 m68k systems.
   11034 
   11035    EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few
   11036    problems reported by Red Hat for builds of Red Hat 5.1.
   11037      * Generic bugfixes:
   11038           + Fix a typo in the libio library which resulted in incorrect
   11039             behavior of istream::get.
   11040           + Fix the Fortran negative array index problem.
   11041           + Fix a major problem with the ObjC runtime thread support
   11042             exposed by glibc2.
   11043           + Reduce memory consumption of the Haifa scheduler.
   11044      * Target specific bugfixes:
   11045           + Fix one x86 floating point code generation bug exposed by
   11046             glibc2 builds.
   11047           + Fix one x86 internal compiler error exposed by glibc2 builds.
   11048           + Fix profiling bugs on the Alpha.
   11049           + Fix ImageMagick & emacs 20.2 build problems on the Alpha.
   11050           + Fix rs6000/ppc bug when converting values from integer types
   11051             to floating point types.
   11052 
   11053    The EGCS 1.0 releases include installation instructions in both HTML
   11054    and plaintext forms (see the INSTALL directory in the toplevel
   11055    directory of the distribution). However, we also keep the most up to
   11056    date [2]installation instructions and [3]build/test status on our web
   11057    page. We will update those pages as new information becomes available.
   11058 
   11059    And, we can't in good conscience fail to mention some [4]caveats to
   11060    using EGCS.
   11061 
   11062    Update: Big thanks to Stanford for providing a high speed link for
   11063    downloading EGCS (go.cygnus.com)!
   11064 
   11065    Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
   11066    (USA California -- High speed link provided by Stanford).
   11067 
   11068    The EGCS 1.0 release is also available many mirror sites.
   11069    [5]Goto mirror list to find a closer site
   11070 
   11071    We'd like to thank the numerous people that have contributed new
   11072    features, test results, bugfixes, etc. Unfortunately, they're far too
   11073    numerous to mention by name.
   11074 
   11075 
   11076     For questions related to the use of GCC, please consult these web
   11077     pages and the [6]GCC manuals. If that fails, the
   11078     [7]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   11079     web pages and the development of GCC are welcome on our developer
   11080     list at [8]gcc (a] gcc.gnu.org. All of [9]our lists have public archives.
   11081 
   11082    Copyright (C) [10]Free Software Foundation, Inc. Verbatim copying and
   11083    distribution of this entire article is permitted in any medium,
   11084    provided this notice is preserved.
   11085 
   11086    These pages are [11]maintained by the GCC team. Last modified
   11087    2011-10-24[12].
   11088 
   11089 References
   11090 
   11091    1. http://gcc.gnu.org/egcs-1.0/features.html
   11092    2. http://gcc.gnu.org/install/
   11093    3. http://gcc.gnu.org/egcs-1.0/buildstat.html
   11094    4. http://gcc.gnu.org/egcs-1.0/caveats.html
   11095    5. http://gcc.gnu.org/mirrors.html
   11096    6. http://gcc.gnu.org/onlinedocs/
   11097    7. mailto:gcc-help (a] gcc.gnu.org
   11098    8. mailto:gcc (a] gcc.gnu.org
   11099    9. http://gcc.gnu.org/lists.html
   11100   10. http://www.fsf.org/
   11101   11. http://gcc.gnu.org/about.html
   11102   12. http://validator.w3.org/check/referer
   11103 ======================================================================
   11104 http://gcc.gnu.org/egcs-1.0/features.html
   11105 
   11106                                EGCS 1.0 features
   11107 
   11108      * Core compiler is based on the gcc2 development tree from Aug 2,
   11109        1997, so we have most of the [1]features found in GCC 2.8.
   11110      * Integrated GNU Fortran compiler based on g77-0.5.22-19970929.
   11111      * Vast improvements in the C++ compiler; so many they have [2]page of
   11112        their own!
   11113      * Integrated C++ runtime libraries, including support for most major
   11114        GNU/Linux systems!
   11115      * New instruction scheduler from IBM Haifa which includes support for
   11116        function wide instruction scheduling as well as superscalar
   11117        scheduling.
   11118      * Significantly improved alias analysis code.
   11119      * Improved register allocation for two address machines.
   11120      * Significant code generation improvements for Fortran code on
   11121        Alphas.
   11122      * Various optimizations from the g77 project as well as improved loop
   11123        optimizations.
   11124      * Dwarf2 debug format support for some targets.
   11125      * egcs libstdc++ includes the SGI STL implementation without changes.
   11126      * As a result of these and other changes, egcs libstc++ is not binary
   11127        compatible with previous releases of libstdc++.
   11128      * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The SCO
   11129        Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0 and
   11130        1.1), Support for RTEMS on several embedded targets, Support for
   11131        arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and
   11132        MN103, NEC V850, Sparclet, Solaris & GNU/Linux on PowerPCs, etc.
   11133      * Integrated testsuites for gcc, g++, g77, libstdc++ and libio.
   11134      * RS6000/PowerPC ports generate code which can run on all
   11135        RS6000/PowerPC variants by default.
   11136      * -mcpu= and -march= switches for the x86 port to allow better
   11137        control over how the x86 port generates code.
   11138      * Includes the template repository patch (aka repo patch); note the
   11139        new template code makes repo obsolete for ELF systems using gnu-ld
   11140        such as GNU/Linux.
   11141      * Plus the usual assortment of bugfixes and improvements.
   11142 
   11143 
   11144     For questions related to the use of GCC, please consult these web
   11145     pages and the [3]GCC manuals. If that fails, the
   11146     [4]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   11147     web pages and the development of GCC are welcome on our developer
   11148     list at [5]gcc (a] gcc.gnu.org. All of [6]our lists have public archives.
   11149 
   11150    Copyright (C) [7]Free Software Foundation, Inc. Verbatim copying and
   11151    distribution of this entire article is permitted in any medium,
   11152    provided this notice is preserved.
   11153 
   11154    These pages are [8]maintained by the GCC team. Last modified
   11155    2011-10-24[9].
   11156 
   11157 References
   11158 
   11159    1. http://gcc.gnu.org/egcs-1.0/features-2.8.html
   11160    2. http://gcc.gnu.org/egcs-1.0/c++features.html
   11161    3. http://gcc.gnu.org/onlinedocs/
   11162    4. mailto:gcc-help (a] gcc.gnu.org
   11163    5. mailto:gcc (a] gcc.gnu.org
   11164    6. http://gcc.gnu.org/lists.html
   11165    7. http://www.fsf.org/
   11166    8. http://gcc.gnu.org/about.html
   11167    9. http://validator.w3.org/check/referer
   11168 ======================================================================
   11169 http://gcc.gnu.org/egcs-1.0/caveats.html
   11170 
   11171                                 EGCS 1.0 Caveats
   11172 
   11173      * EGCS has an integrated libstdc++, but does not have an integrated
   11174        libg++. Furthermore old libg++ releases will not work with egc; HJ
   11175        Lu has made a libg++-2.8.1.2 available which may work with EGCS.
   11176        Note most C++ programs only need libstdc++.
   11177      * Note that using -pedantic or -Wreturn-type can cause an explosion
   11178        in the amount of memory needed for template-heavy C++ code, such as
   11179        code that uses STL. Also note that -Wall includes -Wreturn-type, so
   11180        if you use -Wall you will need to specify -Wno-return-type to turn
   11181        it off.
   11182      * Exception handling may not work with shared libraries, particularly
   11183        on alphas, hppas, and mips based platforms. Exception handling is
   11184        known to work on x86-linux platforms with shared libraries.
   11185      * Some versions of the Linux kernel have bugs which prevent them from
   11186        being compiled or from running when compiled by EGCS. See the FAQ
   11187        (as shipped with EGCS 1.0) for additional information.
   11188      * In general, EGCS is more rigorous about rejecting invalid C++ code
   11189        or deprecated C++ constructs than G++ 2.7. As a result it may be
   11190        necessary to fix C++ code before it will compile with EGCS.
   11191      * G++ is also aggressively tracking the C++ standard; as a result
   11192        code which was previously valid (and thus accepted by other
   11193        compilers and older versions of G++) may no longer be accepted.
   11194      * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS
   11195        1.0.x and later releases should work with Red Hat Linux 5.0.
   11196 
   11197 
   11198     For questions related to the use of GCC, please consult these web
   11199     pages and the [1]GCC manuals. If that fails, the
   11200     [2]gcc-help (a] gcc.gnu.org mailing list might help. Comments on these
   11201     web pages and the development of GCC are welcome on our developer
   11202     list at [3]gcc (a] gcc.gnu.org. All of [4]our lists have public archives.
   11203 
   11204    Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
   11205    distribution of this entire article is permitted in any medium,
   11206    provided this notice is preserved.
   11207 
   11208    These pages are [6]maintained by the GCC team. Last modified
   11209    2011-04-25[7].
   11210 
   11211 References
   11212 
   11213    1. http://gcc.gnu.org/onlinedocs/
   11214    2. mailto:gcc-help (a] gcc.gnu.org
   11215    3. mailto:gcc (a] gcc.gnu.org
   11216    4. http://gcc.gnu.org/lists.html
   11217    5. http://www.fsf.org/
   11218    6. http://gcc.gnu.org/about.html
   11219    7. http://validator.w3.org/check/referer
   11220 ======================================================================
   11221