OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [NEWS] - Diff between revs 263 and 333

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 263 Rev 333
This file contains information about GCC releases which has been generated
This file contains information about GCC releases which has been generated
automatically from the online release notes.  It covers releases of GCC
automatically from the online release notes.  It covers releases of GCC
(and the former EGCS project) since EGCS 1.0, on the line of development
(and the former EGCS project) since EGCS 1.0, on the line of development
that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
see ONEWS.
see ONEWS.
======================================================================
======================================================================
http://gcc.gnu.org/gcc-4.5/index.html
http://gcc.gnu.org/gcc-4.5/index.html
                           GCC 4.5 Release Series
                           GCC 4.5 Release Series
   July 31, 2010
   July 31, 2010
   The [1]GNU project and the GCC developers are pleased to announce the
   The [1]GNU project and the GCC developers are pleased to announce the
   release of GCC 4.5.1.
   release of GCC 4.5.1.
   This release is a bug-fix release, containing fixes for regressions in
   This release is a bug-fix release, containing fixes for regressions in
   GCC 4.5.0 relative to previous releases of GCC.
   GCC 4.5.0 relative to previous releases of GCC.
Release History
Release History
   GCC 4.5.1
   GCC 4.5.1
          Jul 31, 2010 ([2]changes)
          Jul 31, 2010 ([2]changes)
   GCC 4.5.0
   GCC 4.5.0
          April 14, 2010 ([3]changes)
          April 14, 2010 ([3]changes)
References and Acknowledgements
References and Acknowledgements
   GCC used to stand for the GNU C Compiler, but since the compiler
   GCC used to stand for the GNU C Compiler, but since the compiler
   supports several other languages aside from C, it now stands for the
   supports several other languages aside from C, it now stands for the
   GNU Compiler Collection.
   GNU Compiler Collection.
   A list of [4]successful builds is updated as new information becomes
   A list of [4]successful builds is updated as new information becomes
   available.
   available.
   The GCC developers would like to thank the numerous people that have
   The GCC developers would like to thank the numerous people that have
   contributed new features, improvements, bug fixes, and other changes as
   contributed new features, improvements, bug fixes, and other changes as
   well as test results to GCC. This [5]amazing group of volunteers is
   well as test results to GCC. This [5]amazing group of volunteers is
   what makes GCC successful.
   what makes GCC successful.
   For additional information about GCC please refer to the [6]GCC project
   For additional information about GCC please refer to the [6]GCC project
   web site or contact the [7]GCC development mailing list.
   web site or contact the [7]GCC development mailing list.
   To obtain GCC please use [8]our mirror sites or [9]our SVN server.
   To obtain GCC please use [8]our mirror sites or [9]our SVN server.
   Please send FSF & GNU inquiries & questions to [10]gnu@gnu.org. There
   Please send FSF & GNU inquiries & questions to [10]gnu@gnu.org. There
   are also [11]other ways to contact the FSF.
   are also [11]other ways to contact the FSF.
   These pages are [12]maintained by the GCC team.
   These pages are [12]maintained by the GCC team.
    For questions related to the use of GCC, please consult these web
    For questions related to the use of GCC, please consult these web
    pages and the [13]GCC manuals. If that fails, the
    pages and the [13]GCC manuals. If that fails, the
    [14]gcc-help@gcc.gnu.org mailing list might help.
    [14]gcc-help@gcc.gnu.org mailing list might help.
    Please send comments on these web pages and the development of GCC to
    Please send comments on these web pages and the development of GCC to
    our developer mailing list at [15]gcc@gnu.org or [16]gcc@gcc.gnu.org.
    our developer mailing list at [15]gcc@gnu.org or [16]gcc@gcc.gnu.org.
    All of our lists have [17]public archives.
    All of our lists have [17]public archives.
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Floor, Boston, MA 02110, USA.
   Floor, Boston, MA 02110, USA.
   Verbatim copying and distribution of this entire article is permitted
   Verbatim copying and distribution of this entire article is permitted
   in any medium, provided this notice is preserved.
   in any medium, provided this notice is preserved.
   Last modified 2010-07-31 [18]Valid XHTML 1.0
   Last modified 2010-07-31 [18]Valid XHTML 1.0
References
References
   1. http://www.gnu.org/
   1. http://www.gnu.org/
   2. http://gcc.gnu.org/gcc-4.5/changes.html
   2. http://gcc.gnu.org/gcc-4.5/changes.html
   3. http://gcc.gnu.org/gcc-4.5/changes.html
   3. http://gcc.gnu.org/gcc-4.5/changes.html
   4. http://gcc.gnu.org/gcc-4.5/buildstat.html
   4. http://gcc.gnu.org/gcc-4.5/buildstat.html
   5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   6. http://gcc.gnu.org/index.html
   6. http://gcc.gnu.org/index.html
   7. mailto:gcc@gcc.gnu.org
   7. mailto:gcc@gcc.gnu.org
   8. http://gcc.gnu.org/mirrors.html
   8. http://gcc.gnu.org/mirrors.html
   9. http://gcc.gnu.org/svn.html
   9. http://gcc.gnu.org/svn.html
  10. mailto:gnu@gnu.org
  10. mailto:gnu@gnu.org
  11. http://www.gnu.org/home.html#ContactInfo
  11. http://www.gnu.org/home.html#ContactInfo
  12. http://gcc.gnu.org/about.html
  12. http://gcc.gnu.org/about.html
  13. http://gcc.gnu.org/onlinedocs/
  13. http://gcc.gnu.org/onlinedocs/
  14. mailto:gcc-help@gcc.gnu.org
  14. mailto:gcc-help@gcc.gnu.org
  15. mailto:gcc@gnu.org
  15. mailto:gcc@gnu.org
  16. mailto:gcc@gcc.gnu.org
  16. mailto:gcc@gcc.gnu.org
  17. http://gcc.gnu.org/lists.html
  17. http://gcc.gnu.org/lists.html
  18. http://validator.w3.org/check/referer
  18. http://validator.w3.org/check/referer
======================================================================
======================================================================
http://gcc.gnu.org/gcc-4.5/changes.html
http://gcc.gnu.org/gcc-4.5/changes.html
                           GCC 4.5 Release Series
                           GCC 4.5 Release Series
                      Changes, New Features, and Fixes
                      Changes, New Features, and Fixes
Caveats
Caveats
     * GCC now requires the [1]MPC library in order to build. See the
     * GCC now requires the [1]MPC library in order to build. See the
       [2]prerequisites page for version requirements.
       [2]prerequisites page for version requirements.
     * Support for a number of older systems and recently unmaintained or
     * Support for a number of older systems and recently unmaintained or
       untested target ports of GCC has been declared obsolete in GCC 4.5.
       untested target ports of GCC has been declared obsolete in GCC 4.5.
       Unless there is activity to revive them, the next release of GCC
       Unless there is activity to revive them, the next release of GCC
       will have their sources permanently removed.
       will have their sources permanently removed.
       The following ports for individual systems on particular
       The following ports for individual systems on particular
       architectures have been obsoleted:
       architectures have been obsoleted:
          + IRIX releases before 6.5 (mips-sgi-irix5*,
          + IRIX releases before 6.5 (mips-sgi-irix5*,
            mips-sgi-irix6.[0-4])
            mips-sgi-irix6.[0-4])
          + Solaris 7 (*-*-solaris2.7)
          + Solaris 7 (*-*-solaris2.7)
          + Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*,
          + Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*,
            alpha-dec-osf5.0*)
            alpha-dec-osf5.0*)
          + Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions
          + Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions
            can be found in the [3]announcement.
            can be found in the [3]announcement.
       Support for the classic POWER architecture implemented in the
       Support for the classic POWER architecture implemented in the
       original RIOS and RIOS2 processors of the old IBM RS/6000 product
       original RIOS and RIOS2 processors of the old IBM RS/6000 product
       line has been obsoleted in the rs6000 port. This does not affect
       line has been obsoleted in the rs6000 port. This does not affect
       the new generation Power and PowerPC architectures.
       the new generation Power and PowerPC architectures.
     * Support has been removed for all the [4]configurations obsoleted in
     * Support has been removed for all the [4]configurations obsoleted in
       GCC 4.4.
       GCC 4.4.
     * Support has been removed for the protoize and unprotoize utilities,
     * Support has been removed for the protoize and unprotoize utilities,
       obsoleted in GCC 4.4.
       obsoleted in GCC 4.4.
     * Support has been removed for tuning for Itanium1 (Merced) variants.
     * Support has been removed for tuning for Itanium1 (Merced) variants.
       Note that code tuned for Itanium2 should also run correctly on
       Note that code tuned for Itanium2 should also run correctly on
       Itanium1.
       Itanium1.
     * GCC now generates unwind info also for epilogues. DWARF debuginfo
     * GCC now generates unwind info also for epilogues. DWARF debuginfo
       generated by GCC now uses more features of DWARF3 than it used to
       generated by GCC now uses more features of DWARF3 than it used to
       do and also some DWARF4 features. GDB older than 7.0 is not able to
       do and also some DWARF4 features. GDB older than 7.0 is not able to
       handle either of these, so to debug GCC 4.5 generated binaries or
       handle either of these, so to debug GCC 4.5 generated binaries or
       libraries GDB 7.0 or later is needed. You can disable use of DWARF4
       libraries GDB 7.0 or later is needed. You can disable use of DWARF4
       features with -gdwarf-3 -gstrict-dwarf options, or with -gdwarf-2
       features with -gdwarf-3 -gstrict-dwarf options, or with -gdwarf-2
       -gstrict-dwarf restrict GCC to just DWARF2 standard, but epilogue
       -gstrict-dwarf restrict GCC to just DWARF2 standard, but epilogue
       unwind info is emitted unconditionally whenever unwind info is
       unwind info is emitted unconditionally whenever unwind info is
       emitted.
       emitted.
     * On x86 targets, code containing floating-point calculations may run
     * On x86 targets, code containing floating-point calculations may run
       significantly slower when compiled with GCC 4.5 in strict C99
       significantly slower when compiled with GCC 4.5 in strict C99
       conformance mode than they did with earlier GCC versions. This is
       conformance mode than they did with earlier GCC versions. This is
       due to stricter standard conformance of the compiler and can be
       due to stricter standard conformance of the compiler and can be
       avoided by using the option -fexcess-precision=fast; also see
       avoided by using the option -fexcess-precision=fast; also see
       [5]below.
       [5]below.
     * The function attribute noinline no longer prevents GCC from cloning
     * The function attribute noinline no longer prevents GCC from cloning
       the function. A new attribute noclone has been introduced for this
       the function. A new attribute noclone has been introduced for this
       purpose. Cloning a function means that it is duplicated and the new
       purpose. Cloning a function means that it is duplicated and the new
       copy is specialized for certain contexts (for example when a
       copy is specialized for certain contexts (for example when a
       parameter is a known constant).
       parameter is a known constant).
General Optimizer Improvements
General Optimizer Improvements
     * The -save-temps now takes an optional argument. The -save-temps and
     * The -save-temps now takes an optional argument. The -save-temps and
       -save-temps=cwd switches write the temporary files in the current
       -save-temps=cwd switches write the temporary files in the current
       working directory based on the original source file. The
       working directory based on the original source file. The
       -save-temps=obj switch will write files into the directory
       -save-temps=obj switch will write files into the directory
       specified with the -o option, and the intermediate filenames are
       specified with the -o option, and the intermediate filenames are
       based on the output file. This will allow the user to get the
       based on the output file. This will allow the user to get the
       compiler intermediate files when doing parallel builds without two
       compiler intermediate files when doing parallel builds without two
       builds of the same filename located in different directories from
       builds of the same filename located in different directories from
       interfering with each other.
       interfering with each other.
     * Debugging dumps are now created in the same directory as the object
     * Debugging dumps are now created in the same directory as the object
       file rather than in the current working directory. This allows the
       file rather than in the current working directory. This allows the
       user to get debugging dumps when doing parallel builds without two
       user to get debugging dumps when doing parallel builds without two
       builds of the same filename interfering with each other.
       builds of the same filename interfering with each other.
     * GCC has been integrated with the [6]MPC library. This allows GCC to
     * GCC has been integrated with the [6]MPC library. This allows GCC to
       evaluate complex arithmetic at compile time [7]more accurately. It
       evaluate complex arithmetic at compile time [7]more accurately. It
       also allows GCC to evaluate calls to complex built-in math
       also allows GCC to evaluate calls to complex built-in math
       functions having constant arguments and replace them at compile
       functions having constant arguments and replace them at compile
       time with their mathematically equivalent results. In doing so, GCC
       time with their mathematically equivalent results. In doing so, GCC
       can generate correct results regardless of the math library
       can generate correct results regardless of the math library
       implementation or floating point precision of the host platform.
       implementation or floating point precision of the host platform.
       This also allows GCC to generate identical results regardless of
       This also allows GCC to generate identical results regardless of
       whether one compiles in native or cross-compile configurations to a
       whether one compiles in native or cross-compile configurations to a
       particular target. The following built-in functions take advantage
       particular target. The following built-in functions take advantage
       of this new capability: cacos, cacosh, casin, casinh, catan,
       of this new capability: cacos, cacosh, casin, casinh, catan,
       catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
       catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
       and ctanh. The float and long double variants of these functions
       and ctanh. The float and long double variants of these functions
       (e.g. csinf and csinl) are also handled.
       (e.g. csinf and csinl) are also handled.
     * A new link-time optimizer has been added ([8]-flto). When this
     * A new link-time optimizer has been added ([8]-flto). When this
       option is used, GCC generates a bytecode representation of each
       option is used, GCC generates a bytecode representation of each
       input file and writes it to special ELF sections in each object
       input file and writes it to special ELF sections in each object
       file. When the object files are linked together, all the function
       file. When the object files are linked together, all the function
       bodies are read from these ELF sections and instantiated as if they
       bodies are read from these ELF sections and instantiated as if they
       had been part of the same translation unit. This enables
       had been part of the same translation unit. This enables
       interprocedural optimizations to work across different files (and
       interprocedural optimizations to work across different files (and
       even different languages), potentially improving the performance of
       even different languages), potentially improving the performance of
       the generated code. To use the link-timer optimizer, -flto needs to
       the generated code. To use the link-timer optimizer, -flto needs to
       be specified at compile time and during the final link. If the
       be specified at compile time and during the final link. If the
       program does not require any symbols to be exported, it is possible
       program does not require any symbols to be exported, it is possible
       to combine -flto and the experimental [9]-fwhopr with
       to combine -flto and the experimental [9]-fwhopr with
       [10]-fwhole-program to allow the interprocedural optimizers to use
       [10]-fwhole-program to allow the interprocedural optimizers to use
       more aggressive assumptions.
       more aggressive assumptions.
     * The automatic parallelization pass was enhanced to support
     * The automatic parallelization pass was enhanced to support
       parallelization of outer loops.
       parallelization of outer loops.
     * Automatic parallelization can be enabled as part of Graphite. In
     * Automatic parallelization can be enabled as part of Graphite. In
       addition to -ftree-parallelize-loops=, specify
       addition to -ftree-parallelize-loops=, specify
       -floop-parallelize-all to enable the Graphite-based optimization.
       -floop-parallelize-all to enable the Graphite-based optimization.
     * The infrastructure for optimizing based on [11]restrict qualified
     * The infrastructure for optimizing based on [11]restrict qualified
       pointers has been rewritten and should result in code generation
       pointers has been rewritten and should result in code generation
       improvements. Optimizations based on restrict qualified pointers
       improvements. Optimizations based on restrict qualified pointers
       are now also available when using -fno-strict-aliasing.
       are now also available when using -fno-strict-aliasing.
     * There is a new optimization pass that attempts to change prototype
     * There is a new optimization pass that attempts to change prototype
       of functions to avoid unused parameters, pass only relevant parts
       of functions to avoid unused parameters, pass only relevant parts
       of structures and turn arguments passed by reference to arguments
       of structures and turn arguments passed by reference to arguments
       passed by value when possible. It is enabled by -O2 and above as
       passed by value when possible. It is enabled by -O2 and above as
       well as -Os and can be manually invoked using the new command-line
       well as -Os and can be manually invoked using the new command-line
       switch -fipa-sra.
       switch -fipa-sra.
     * GCC now optimize exception handling code. In particular cleanup
     * GCC now optimize exception handling code. In particular cleanup
       regions that are proved to not have any effect are optimized out.
       regions that are proved to not have any effect are optimized out.
New Languages and Language specific improvements
New Languages and Language specific improvements
  All languages
  All languages
     * The -fshow-column option is now on by default. This means error
     * The -fshow-column option is now on by default. This means error
       messages now have a column associated with them.
       messages now have a column associated with them.
  Ada
  Ada
     * Compilation of programs heavily using discriminated record types
     * Compilation of programs heavily using discriminated record types
       with variant parts has been sped up and generates more compact
       with variant parts has been sped up and generates more compact
       code.
       code.
     * Stack checking now works reasonably well on most plaforms. In some
     * Stack checking now works reasonably well on most plaforms. In some
       specific cases, stack overflows may still fail to be detected, but
       specific cases, stack overflows may still fail to be detected, but
       a compile-time warning will be issued for these cases.
       a compile-time warning will be issued for these cases.
  C family
  C family
     * If a header named in a #include directive is not found, the
     * If a header named in a #include directive is not found, the
       compiler exits immediately. This avoids a cascade of errors arising
       compiler exits immediately. This avoids a cascade of errors arising
       from declarations expected to be found in that header being
       from declarations expected to be found in that header being
       missing.
       missing.
     * A new built-in function __builtin_unreachable() has been added that
     * A new built-in function __builtin_unreachable() has been added that
       tells the compiler that control will never reach that point. It may
       tells the compiler that control will never reach that point. It may
       be used after asm statements that terminate by transferring control
       be used after asm statements that terminate by transferring control
       elsewhere, and in other places that are known to be unreachable.
       elsewhere, and in other places that are known to be unreachable.
     * The -Wlogical-op option now warns for logical expressions such as
     * The -Wlogical-op option now warns for logical expressions such as
       (c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be
       (c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be
       mistakes. This option is disabled by default.
       mistakes. This option is disabled by default.
     * An asm goto feature has been added to allow asm statements that
     * An asm goto feature has been added to allow asm statements that
       jump to C labels.
       jump to C labels.
     * C++0x raw strings are supported for C++ and for C with -std=gnu99.
     * C++0x raw strings are supported for C++ and for C with -std=gnu99.
     * The deprecated attribute now takes an optional string argument, for
     * The deprecated attribute now takes an optional string argument, for
       example, __attribute__((deprecated("text string"))), that will be
       example, __attribute__((deprecated("text string"))), that will be
       printed together with the deprecation warning.
       printed together with the deprecation warning.
  C
  C
     * The -Wenum-compare option, which warns when comparing values of
     * The -Wenum-compare option, which warns when comparing values of
       different enum types, now works for C. It formerly only worked for
       different enum types, now works for C. It formerly only worked for
       C++. This warning is enabled by -Wall. It may be avoided by using a
       C++. This warning is enabled by -Wall. It may be avoided by using a
       type cast.
       type cast.
     * The -Wcast-qual option now warns about casts which are unsafe in
     * The -Wcast-qual option now warns about casts which are unsafe in
       that they permit const-correctness to be violated without further
       that they permit const-correctness to be violated without further
       warnings. Specifically, it warns about cases where a qualifier is
       warnings. Specifically, it warns about cases where a qualifier is
       added when all the lower types are not const. For example, it warns
       added when all the lower types are not const. For example, it warns
       about a cast from char ** to const char **.
       about a cast from char ** to const char **.
     * The -Wc++-compat option is significantly improved. It issues new
     * The -Wc++-compat option is significantly improved. It issues new
       warnings for:
       warnings for:
          + Using C++ reserved operator names as identifiers.
          + Using C++ reserved operator names as identifiers.
          + Conversions to enum types without explicit casts.
          + Conversions to enum types without explicit casts.
          + Using va_arg with an enum type.
          + Using va_arg with an enum type.
          + Using different enum types in the two branches of ?:.
          + Using different enum types in the two branches of ?:.
          + Using ++ or -- on a variable of enum type.
          + Using ++ or -- on a variable of enum type.
          + Using the same name as both a struct, union or enum tag and a
          + Using the same name as both a struct, union or enum tag and a
            typedef, unless the typedef refers to the tagged type itself.
            typedef, unless the typedef refers to the tagged type itself.
          + Using a struct, union, or enum which is defined within another
          + Using a struct, union, or enum which is defined within another
            struct or union.
            struct or union.
          + A struct field defined using a typedef if there is a field in
          + A struct field defined using a typedef if there is a field in
            the struct, or an enclosing struct, whose name is the typedef
            the struct, or an enclosing struct, whose name is the typedef
            name.
            name.
          + Duplicate definitions at file scope.
          + Duplicate definitions at file scope.
          + Uninitialized const variables.
          + Uninitialized const variables.
          + A global variable with an anonymous struct, union, or enum
          + A global variable with an anonymous struct, union, or enum
            type.
            type.
          + Using a string constant to initialize a char array whose size
          + Using a string constant to initialize a char array whose size
            is the length of the string.
            is the length of the string.
     * The new -Wjump-misses-init option warns about cases where a goto or
     * The new -Wjump-misses-init option warns about cases where a goto or
       switch skips the initialization of a variable. This sort of branch
       switch skips the initialization of a variable. This sort of branch
       is an error in C++ but not in C. This warning is enabled by
       is an error in C++ but not in C. This warning is enabled by
       -Wc++-compat.
       -Wc++-compat.
     * GCC now ensures that a C99-conforming  is present on most
     * GCC now ensures that a C99-conforming  is present on most
       targets, and uses information about the types in this header to
       targets, and uses information about the types in this header to
       implement the Fortran bindings to those types. GCC does not ensure
       implement the Fortran bindings to those types. GCC does not ensure
       the presence of such a header, and does not implement the Fortran
       the presence of such a header, and does not implement the Fortran
       bindings, on the following targets: NetBSD, VxWorks, VMS,
       bindings, on the following targets: NetBSD, VxWorks, VMS,
       SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF.
       SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF.
     * GCC now implements C90- and C99-conforming rules for constant
     * GCC now implements C90- and C99-conforming rules for constant
       expressions. This may cause warnings or errors for some code using
       expressions. This may cause warnings or errors for some code using
       expressions that can be folded to a constant but are not constant
       expressions that can be folded to a constant but are not constant
       expressions as defined by ISO C.
       expressions as defined by ISO C.
     * All known target-independent C90 and C90 Amendment 1 conformance
     * All known target-independent C90 and C90 Amendment 1 conformance
       bugs, and all known target-independent C99 conformance bugs not
       bugs, and all known target-independent C99 conformance bugs not
       related to floating point or extended identifiers, have been fixed.
       related to floating point or extended identifiers, have been fixed.
     * The C decimal floating point support now includes support for the
     * The C decimal floating point support now includes support for the
       FLOAT_CONST_DECIMAL64 pragma.
       FLOAT_CONST_DECIMAL64 pragma.
     * The named address space feature from ISO/IEC TR 18037 is now
     * The named address space feature from ISO/IEC TR 18037 is now
       supported. This is currently only implemented for the SPU
       supported. This is currently only implemented for the SPU
       processor.
       processor.
  C++
  C++
     * Improved [12]experimental support for the upcoming C++0x ISO C++
     * Improved [12]experimental support for the upcoming C++0x ISO C++
       standard, including support for raw strings, lambda expressions and
       standard, including support for raw strings, lambda expressions and
       explicit type conversion operators.
       explicit type conversion operators.
     * When printing the name of a class template specialization, G++ will
     * When printing the name of a class template specialization, G++ will
       now omit any template arguments which come from default template
       now omit any template arguments which come from default template
       arguments. This behavior (and the pretty-printing of function
       arguments. This behavior (and the pretty-printing of function
       template specializations as template signature and arguments) can
       template specializations as template signature and arguments) can
       be disabled with the -fno-pretty-templates option.
       be disabled with the -fno-pretty-templates option.
     * Access control is now applied to typedef names used in a template,
     * Access control is now applied to typedef names used in a template,
       which may cause G++ to reject some ill-formed code that was
       which may cause G++ to reject some ill-formed code that was
       accepted by earlier releases. The -fno-access-control option can be
       accepted by earlier releases. The -fno-access-control option can be
       used as a temporary workaround until the code is corrected.
       used as a temporary workaround until the code is corrected.
     * Compilation time for code that uses templates should now scale
     * Compilation time for code that uses templates should now scale
       linearly with the number of instantiations rather than
       linearly with the number of instantiations rather than
       quadratically, as template instantiations are now looked up using
       quadratically, as template instantiations are now looked up using
       hash tables.
       hash tables.
     * Declarations of functions that look like builtin declarations of
     * Declarations of functions that look like builtin declarations of
       library functions are only considered to be redeclarations if they
       library functions are only considered to be redeclarations if they
       are declared with extern "C". This may cause problems with code
       are declared with extern "C". This may cause problems with code
       that omits extern "C" on hand-written declarations of C library
       that omits extern "C" on hand-written declarations of C library
       functions such as abort or memcpy. Such code is ill-formed, but was
       functions such as abort or memcpy. Such code is ill-formed, but was
       accepted by earlier releases.
       accepted by earlier releases.
     * Diagnostics that used to complain about passing non-POD types to
     * Diagnostics that used to complain about passing non-POD types to
       ... or jumping past the declaration of a non-POD variable now check
       ... or jumping past the declaration of a non-POD variable now check
       for triviality rather than PODness, as per C++0x.
       for triviality rather than PODness, as per C++0x.
     * In C++0x mode local and anonymous classes are now allowed as
     * In C++0x mode local and anonymous classes are now allowed as
       template arguments, and in declarations of variables and functions
       template arguments, and in declarations of variables and functions
       with linkage, so long as any such declaration that is used is also
       with linkage, so long as any such declaration that is used is also
       defined ([13]DR 757).
       defined ([13]DR 757).
     * Labels may now have attributes, as has been permitted for a while
     * Labels may now have attributes, as has been permitted for a while
       in C. This is only permitted when the label definition and the
       in C. This is only permitted when the label definition and the
       attribute specifier is followed by a semicolon--i.e., the label
       attribute specifier is followed by a semicolon--i.e., the label
       applies to an empty statement. The only useful attribute for a
       applies to an empty statement. The only useful attribute for a
       label is unused.
       label is unused.
     * G++ now implements [14]DR 176. Previously G++ did not support using
     * G++ now implements [14]DR 176. Previously G++ did not support using
       the injected-class-name of a template base class as a type name,
       the injected-class-name of a template base class as a type name,
       and lookup of the name found the declaration of the template in the
       and lookup of the name found the declaration of the template in the
       enclosing scope. Now lookup of the name finds the
       enclosing scope. Now lookup of the name finds the
       injected-class-name, which can be used either as a type or as a
       injected-class-name, which can be used either as a type or as a
       template, depending on whether or not the name is followed by a
       template, depending on whether or not the name is followed by a
       template argument list. As a result of this change, some code that
       template argument list. As a result of this change, some code that
       was previously accepted may be ill-formed because
       was previously accepted may be ill-formed because
         1. The injected-class-name is not accessible because it's from a
         1. The injected-class-name is not accessible because it's from a
            private base, or
            private base, or
         2. The injected-class-name cannot be used as an argument for a
         2. The injected-class-name cannot be used as an argument for a
            template template parameter.
            template template parameter.
       In either of these cases, the code can be fixed by adding a
       In either of these cases, the code can be fixed by adding a
       nested-name-specifier to explicitly name the template. The first
       nested-name-specifier to explicitly name the template. The first
       can be worked around with -fno-access-control; the second is only
       can be worked around with -fno-access-control; the second is only
       rejected with -pedantic.
       rejected with -pedantic.
     * A new standard mangling for SIMD vector types has been added, to
     * A new standard mangling for SIMD vector types has been added, to
       avoid name clashes on systems with vectors of varying length. By
       avoid name clashes on systems with vectors of varying length. By
       default the compiler still uses the old mangling, but emits aliases
       default the compiler still uses the old mangling, but emits aliases
       with the new mangling on targets that support strong aliases. Users
       with the new mangling on targets that support strong aliases. Users
       can switch over entirely to the new mangling with -fabi-version=4
       can switch over entirely to the new mangling with -fabi-version=4
       or -fabi-version=0. -Wabi will now warn about code that uses the
       or -fabi-version=0. -Wabi will now warn about code that uses the
       old mangling.
       old mangling.
     * The command-line option -ftemplate-depth-N is now written as
     * The command-line option -ftemplate-depth-N is now written as
       -ftemplate-depth=N and the old form is deprecated.
       -ftemplate-depth=N and the old form is deprecated.
     * Conversions between NULL and non-pointer types are now warned by
     * Conversions between NULL and non-pointer types are now warned by
       default. The new option -Wno-conversion-null disables these
       default. The new option -Wno-conversion-null disables these
       warnings. Previously these warnings were only available when using
       warnings. Previously these warnings were only available when using
       -Wconversion explicitly.
       -Wconversion explicitly.
    Runtime Library (libstdc++)
    Runtime Library (libstdc++)
     * [15]Improved experimental support for the upcoming ISO C++
     * [15]Improved experimental support for the upcoming ISO C++
       standard, C++0x, including:
       standard, C++0x, including:
          + Support for , , and .
          + Support for , , and .
          + Existing facilities now exploit explicit operators and the
          + Existing facilities now exploit explicit operators and the
            newly implemented core C++0x features.
            newly implemented core C++0x features.
     * An experimental [16]profile mode has been added. This is an
     * An experimental [16]profile mode has been added. This is an
       implementation of many C++ standard library constructs with an
       implementation of many C++ standard library constructs with an
       additional analysis layer that gives performance improvement advice
       additional analysis layer that gives performance improvement advice
       based on recognition of suboptimal usage patterns. For example,
       based on recognition of suboptimal usage patterns. For example,
#include 
#include 
int main()
int main()
{
{
  std::vector v;
  std::vector v;
  for (int k = 0; k < 1024; ++k)
  for (int k = 0; k < 1024; ++k)
    v.insert(v.begin(), k);
    v.insert(v.begin(), k);
}
}
       When instrumented via the profile mode, can return suggestions
       When instrumented via the profile mode, can return suggestions
       about the initial size and choice of the container used as follows:
       about the initial size and choice of the container used as follows:
vector-to-list: improvement = 5: call stack = 0x804842c ...
vector-to-list: improvement = 5: call stack = 0x804842c ...
    : advice = change std::vector to std::list
    : advice = change std::vector to std::list
vector-size: improvement = 3: call stack = 0x804842c ...
vector-size: improvement = 3: call stack = 0x804842c ...
    : advice = change initial container size from 0 to 1024
    : advice = change initial container size from 0 to 1024
       These constructs can be substituted for the normal libstdc++
       These constructs can be substituted for the normal libstdc++
       constructs on a piecemeal basis, or all existing components can be
       constructs on a piecemeal basis, or all existing components can be
       transformed via the -D_GLIBCXX_PROFILE macro.
       transformed via the -D_GLIBCXX_PROFILE macro.
     * [17]Support for decimal floating-point arithmetic (aka ISO C++ TR
     * [17]Support for decimal floating-point arithmetic (aka ISO C++ TR
       24733) has been added. This support is in header file
       24733) has been added. This support is in header file
       , uses namespace std::decimal, and includes
       , uses namespace std::decimal, and includes
       classes decimal32, decimal64, and decimal128.
       classes decimal32, decimal64, and decimal128.
     * Sources have been audited for application of function attributes
     * Sources have been audited for application of function attributes
       nothrow, const, pure, and noreturn.
       nothrow, const, pure, and noreturn.
     * Python pretty-printers have been added for many standard library
     * Python pretty-printers have been added for many standard library
       components that simplify the internal representation and present a
       components that simplify the internal representation and present a
       more intuitive view of components when used with
       more intuitive view of components when used with
       appropriately-advanced versions of GDB. For more information,
       appropriately-advanced versions of GDB. For more information,
       please consult the more [18]detailed description.
       please consult the more [18]detailed description.
     * The default behavior for comparing typeinfo names has changed, so
     * The default behavior for comparing typeinfo names has changed, so
       in , __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
       in , __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
     * The new -static-libstdc++ option directs g++ to link the C++
     * The new -static-libstdc++ option directs g++ to link the C++
       library statically, even if the default would normally be to link
       library statically, even if the default would normally be to link
       it dynamically.
       it dynamically.
  Fortran
  Fortran
     * The COMMON default padding has been changed - instead of adding the
     * The COMMON default padding has been changed - instead of adding the
       padding before a variable it is now added afterwards, which
       padding before a variable it is now added afterwards, which
       increases the compatibility with other vendors and helps to obtain
       increases the compatibility with other vendors and helps to obtain
       the correct output in some cases. Cf. also the -falign-commons
       the correct output in some cases. Cf. also the -falign-commons
       option ([19]added in 4.4).
       option ([19]added in 4.4).
     * The -finit-real= option now also supports the value snan for
     * The -finit-real= option now also supports the value snan for
       signalling not-a-number; to be effective, one additionally needs to
       signalling not-a-number; to be effective, one additionally needs to
       enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
       enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
       optimizations can turn a signalling NaN into a quiet one.
       optimizations can turn a signalling NaN into a quiet one.
     * The new option -fcheck= has been added with the options bounds,
     * The new option -fcheck= has been added with the options bounds,
       array-temps, do, pointer, and recursive. The bounds and array-temps
       array-temps, do, pointer, and recursive. The bounds and array-temps
       options are equivalent to -fbounds-check and
       options are equivalent to -fbounds-check and
       -fcheck-array-temporaries. The do option checks for invalid
       -fcheck-array-temporaries. The do option checks for invalid
       modification of loop iteration variables, and the recursive option
       modification of loop iteration variables, and the recursive option
       tests for recursive calls to subroutines/functions which are not
       tests for recursive calls to subroutines/functions which are not
       marked as recursive. With pointer pointer association checks in
       marked as recursive. With pointer pointer association checks in
       calls are performed; however, neither undefined pointers nor
       calls are performed; however, neither undefined pointers nor
       pointers in expressions are handled. Using -fcheck=all enables all
       pointers in expressions are handled. Using -fcheck=all enables all
       these run-time checks.
       these run-time checks.
     * The run-time checking -fcheck=bounds now warns about invalid string
     * The run-time checking -fcheck=bounds now warns about invalid string
       lengths of character dummy arguments. Additionally, more
       lengths of character dummy arguments. Additionally, more
       compile-time checks have been added.
       compile-time checks have been added.
     * The new option [20]-fno-protect-parens has been added; if set, the
     * The new option [20]-fno-protect-parens has been added; if set, the
       compiler may reorder REAL and COMPLEX expressions without regard to
       compiler may reorder REAL and COMPLEX expressions without regard to
       parentheses.
       parentheses.
     * GNU Fortran no longer links against libgfortranbegin. As before,
     * GNU Fortran no longer links against libgfortranbegin. As before,
       MAIN__ (assembler symbol name) is the actual Fortran main program,
       MAIN__ (assembler symbol name) is the actual Fortran main program,
       which is invoked by the main function. However, main is now
       which is invoked by the main function. However, main is now
       generated and put in the same object file as MAIN__. For the time
       generated and put in the same object file as MAIN__. For the time
       being, libgfortranbegin still exists for backward compatibility.
       being, libgfortranbegin still exists for backward compatibility.
       For details see the new [21]Mixed-Language Programming chapter in
       For details see the new [21]Mixed-Language Programming chapter in
       the manual.
       the manual.
     * The I/O library was restructured for performance and cleaner code.
     * The I/O library was restructured for performance and cleaner code.
     * Array assignments and WHERE are now run in parallel when OpenMP's
     * Array assignments and WHERE are now run in parallel when OpenMP's
       WORKSHARE is used.
       WORKSHARE is used.
     * The experimental option -fwhole-file was added. The option allows
     * The experimental option -fwhole-file was added. The option allows
       whole-file checking of procedure arguments and allows for better
       whole-file checking of procedure arguments and allows for better
       optimizations. It can also be used with -fwhole-program, which is
       optimizations. It can also be used with -fwhole-program, which is
       now also supported in gfortran.
       now also supported in gfortran.
     * More Fortran 2003 and Fortran 2008 mathematical functions can now
     * More Fortran 2003 and Fortran 2008 mathematical functions can now
       be used as initialization expressions.
       be used as initialization expressions.
     * Some extended attributes such as STDCALL are now supported via the
     * Some extended attributes such as STDCALL are now supported via the
       [22]GCC$ compiler directive.
       [22]GCC$ compiler directive.
     * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
     * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
       intrinsic behaves now as if zero were always positive.
       intrinsic behaves now as if zero were always positive.
     * For legacy compatibiliy: On Cygwin and MinGW, the special files
     * For legacy compatibiliy: On Cygwin and MinGW, the special files
       CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now
       CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now
       supported.
       supported.
     * Fortran 2003 support has been extended:
     * Fortran 2003 support has been extended:
          + Procedure-pointer function results and procedure-pointer
          + Procedure-pointer function results and procedure-pointer
            components (including PASS),
            components (including PASS),
          + allocatable scalars (experimental),
          + allocatable scalars (experimental),
          + DEFERRED type-bound procedures,
          + DEFERRED type-bound procedures,
          + the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements
          + the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements
            have been implemented.
            have been implemented.
          + The ALLOCATE statement supports type-specs and the SOURCE=
          + The ALLOCATE statement supports type-specs and the SOURCE=
            argument.
            argument.
          + OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC
          + OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC
            type-bound procedure (i.e. as type-bound operators).
            type-bound procedure (i.e. as type-bound operators).
          + Rounding (ROUND=, RZ, ...) for output is now supported.
          + Rounding (ROUND=, RZ, ...) for output is now supported.
          + The INT_FAST{8,16,32,64,128}_T kind type parameters of the
          + The INT_FAST{8,16,32,64,128}_T kind type parameters of the
            intrinsic module ISO_C_BINDING are now supported, except for
            intrinsic module ISO_C_BINDING are now supported, except for
            the targets listed above as ones where GCC does not have
            the targets listed above as ones where GCC does not have
             type information.
             type information.
          + Extensible derived types with type-bound procedure or
          + Extensible derived types with type-bound procedure or
            procedure pointer with PASS attribute now have to use CLASS in
            procedure pointer with PASS attribute now have to use CLASS in
            line with the Fortran 2003 standard; the workaround to use
            line with the Fortran 2003 standard; the workaround to use
            TYPE is no longer supported.
            TYPE is no longer supported.
          + [23]Experimental, incomplete support for polymorphism,
          + [23]Experimental, incomplete support for polymorphism,
            including CLASS, SELECT TYPE and dynamic dispatch of
            including CLASS, SELECT TYPE and dynamic dispatch of
            type-bound procedure calls. Some features do not work yet such
            type-bound procedure calls. Some features do not work yet such
            as unlimited polymorphism (CLASS(*)).
            as unlimited polymorphism (CLASS(*)).
     * Fortran 2008 support has been extended:
     * Fortran 2008 support has been extended:
          + The OPEN statement now supports the NEWUNIT= option, which
          + The OPEN statement now supports the NEWUNIT= option, which
            returns a unique file unit, thus preventing inadvertent use of
            returns a unique file unit, thus preventing inadvertent use of
            the same unit in different parts of the program.
            the same unit in different parts of the program.
          + Support for unlimited format items has been added.
          + Support for unlimited format items has been added.
          + The INT{8,16,32} and REAL{32,64,128} kind type parameters of
          + The INT{8,16,32} and REAL{32,64,128} kind type parameters of
            the intrinsic module ISO_FORTRAN_ENV are now supported.
            the intrinsic module ISO_FORTRAN_ENV are now supported.
          + Using complex arguments with TAN, SINH, COSH, TANH, ASIN,
          + Using complex arguments with TAN, SINH, COSH, TANH, ASIN,
            ACOS, and ATAN is now possible; the functions ASINH, ACOSH,
            ACOS, and ATAN is now possible; the functions ASINH, ACOSH,
            and ATANH have been added (for real and complex arguments) and
            and ATANH have been added (for real and complex arguments) and
            ATAN(Y,X) is now an alias for ATAN2(Y,X).
            ATAN(Y,X) is now an alias for ATAN2(Y,X).
          + The BLOCK construct has been implemented.
          + The BLOCK construct has been implemented.
  Java (GCJ)
  Java (GCJ)
New Targets and Target Specific Improvements
New Targets and Target Specific Improvements
  AIX
  AIX
     * Full cross-toolchain support now available with GNU Binutils
     * Full cross-toolchain support now available with GNU Binutils
  ARM
  ARM
     * GCC now supports the Cortex-M0 and Cortex-A5 processors.
     * GCC now supports the Cortex-M0 and Cortex-A5 processors.
     * GCC now supports the ARM v7E-M architecture.
     * GCC now supports the ARM v7E-M architecture.
     * GCC now supports VFPv4-based FPUs and FPUs with
     * GCC now supports VFPv4-based FPUs and FPUs with
       single-precision-only VFP.
       single-precision-only VFP.
     * GCC has many improvements to optimization for other ARM processors,
     * GCC has many improvements to optimization for other ARM processors,
       including scheduling support for the integer pipeline on Cortex-A9.
       including scheduling support for the integer pipeline on Cortex-A9.
     * GCC now supports the IEEE 754-2008 half-precision floating-point
     * GCC now supports the IEEE 754-2008 half-precision floating-point
       type, and a variant ARM-specific half-precision type. This type is
       type, and a variant ARM-specific half-precision type. This type is
       specified using __fp16, with the layout determined by
       specified using __fp16, with the layout determined by
       -mfp16-format. With appropriate -mfpu options, the Cortex-A9 and
       -mfp16-format. With appropriate -mfpu options, the Cortex-A9 and
       VFPv4 half-precision instructions will be used.
       VFPv4 half-precision instructions will be used.
     * GCC now supports the variant of AAPCS that uses VFP registers for
     * GCC now supports the variant of AAPCS that uses VFP registers for
       parameter passing and return values.
       parameter passing and return values.
  AVR
  AVR
     * The -mno-tablejump option has been removed because it has the same
     * The -mno-tablejump option has been removed because it has the same
       effect as the -fno-jump-tables option.
       effect as the -fno-jump-tables option.
     * Added support for these new AVR devices:
     * Added support for these new AVR devices:
          + ATmega8U2
          + ATmega8U2
          + ATmega16U2
          + ATmega16U2
          + ATmega32U2
          + ATmega32U2
  IA-32/x86-64
  IA-32/x86-64
     * GCC now will set the default for -march= based on the configure
     * GCC now will set the default for -march= based on the configure
       target.
       target.
     * GCC now supports handling floating-point excess precision arising
     * GCC now supports handling floating-point excess precision arising
       from use of the x87 floating-point unit in a way that conforms to
       from use of the x87 floating-point unit in a way that conforms to
       ISO C99. This is enabled with -fexcess-precision=standard and with
       ISO C99. This is enabled with -fexcess-precision=standard and with
       standards conformance options such as -std=c99, and may be disabled
       standards conformance options such as -std=c99, and may be disabled
       using -fexcess-precision=fast.
       using -fexcess-precision=fast.
     * Support for the Intel Atom processor is now available through the
     * Support for the Intel Atom processor is now available through the
       -march=atom and -mtune=atom options.
       -march=atom and -mtune=atom options.
     * A new -mcrc32 option is now available to enable crc32 intrinsics.
     * A new -mcrc32 option is now available to enable crc32 intrinsics.
     * A new -mmovbe option is now available to enable GCC to use the
     * A new -mmovbe option is now available to enable GCC to use the
       movbe instruction to implement __builtin_bswap32 and
       movbe instruction to implement __builtin_bswap32 and
       __builtin_bswap64.
       __builtin_bswap64.
     * SSE math now can be enabled by default at configure time with the
     * SSE math now can be enabled by default at configure time with the
       new --with-fpmath=sse option.
       new --with-fpmath=sse option.
     * There is a new intrinsic header file, . It should be
     * There is a new intrinsic header file, . It should be
       included before using any IA-32/x86-64 intrinsics.
       included before using any IA-32/x86-64 intrinsics.
     * Support for the XOP, FMA4, and LWP instruction sets for the AMD
     * Support for the XOP, FMA4, and LWP instruction sets for the AMD
       Orochi processors are now available with the -mxop, -mfma4, and
       Orochi processors are now available with the -mxop, -mfma4, and
       -mlwp options.
       -mlwp options.
     * The -mabm option enables GCC to use the popcnt and lzcnt
     * The -mabm option enables GCC to use the popcnt and lzcnt
       instructions on AMD processors.
       instructions on AMD processors.
     * The -mpopcnt option enables GCC to use the popcnt instructions on
     * The -mpopcnt option enables GCC to use the popcnt instructions on
       both AMD and Intel processors.
       both AMD and Intel processors.
  M68K/ColdFire
  M68K/ColdFire
     * GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x
     * GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x
       and 5441x devices.
       and 5441x devices.
     * GCC now supports thread-local storage (TLS) on M68K and ColdFire
     * GCC now supports thread-local storage (TLS) on M68K and ColdFire
       processors.
       processors.
  MeP
  MeP
   Support has been added for the Toshiba Media embedded Processor (MeP,
   Support has been added for the Toshiba Media embedded Processor (MeP,
   or mep-elf) embedded target.
   or mep-elf) embedded target.
  MIPS
  MIPS
     * GCC now supports MIPS 1004K processors.
     * GCC now supports MIPS 1004K processors.
     * GCC can now be configured with options --with-arch-32,
     * GCC can now be configured with options --with-arch-32,
       --with-arch-64, --with-tune-32 and --with-tune-64 to control the
       --with-arch-64, --with-tune-32 and --with-tune-64 to control the
       default optimization separately for 32-bit and 64-bit modes.
       default optimization separately for 32-bit and 64-bit modes.
     * MIPS targets now support an alternative _mcount interface, in which
     * MIPS targets now support an alternative _mcount interface, in which
       register $12 points to the function's save slot for register $31.
       register $12 points to the function's save slot for register $31.
       This interface is selected by the -mcount-ra-address option; see
       This interface is selected by the -mcount-ra-address option; see
       the documentation for more details.
       the documentation for more details.
     * GNU/Linux targets can now generate read-only .eh_frame sections.
     * GNU/Linux targets can now generate read-only .eh_frame sections.
       This optimization requires GNU binutils 2.20 or above, and is only
       This optimization requires GNU binutils 2.20 or above, and is only
       available if GCC is configured with a suitable version of binutils.
       available if GCC is configured with a suitable version of binutils.
     * GNU/Linux targets can now attach special relocations to indirect
     * GNU/Linux targets can now attach special relocations to indirect
       calls, so that the linker can turn them into direct jumps or
       calls, so that the linker can turn them into direct jumps or
       branches. This optimization requires GNU binutils 2.20 or later,
       branches. This optimization requires GNU binutils 2.20 or later,
       and is automatically selected if GCC is configured with an
       and is automatically selected if GCC is configured with an
       appropriate version of binutils. It can be explicitly enabled or
       appropriate version of binutils. It can be explicitly enabled or
       disabled using the -mrelax-pic-calls command-line option.
       disabled using the -mrelax-pic-calls command-line option.
     * GCC now generates more heavily-optimized atomic operations on
     * GCC now generates more heavily-optimized atomic operations on
       Octeon processors.
       Octeon processors.
     * MIPS targets now support the -fstack-protector option.
     * MIPS targets now support the -fstack-protector option.
     * GCC now supports an -msynci option, which specifies that synci is
     * GCC now supports an -msynci option, which specifies that synci is
       enough to flush the instruction cache, without help from the
       enough to flush the instruction cache, without help from the
       operating system. GCC uses this information to optimize
       operating system. GCC uses this information to optimize
       automatically-generated cache flush operations, such as those used
       automatically-generated cache flush operations, such as those used
       for nested functions in C. There is also a --with-synci
       for nested functions in C. There is also a --with-synci
       configure-time option, which makes -msynci the default.
       configure-time option, which makes -msynci the default.
     * GCC supports four new function attributes for interrupt handlers:
     * GCC supports four new function attributes for interrupt handlers:
       interrupt, use_shadow_register_set, keep_interrupts_masked and
       interrupt, use_shadow_register_set, keep_interrupts_masked and
       use_debug_exception_return. See the documentation for more details
       use_debug_exception_return. See the documentation for more details
       about these attributes.
       about these attributes.
 
 
 
  OpenRISC 1000
 
 
 
     * GCC now generates global variables and functions without a leading
 
       underscore.
 
     * GCC now generates DWARF 2 debugging output by default (with -g).
 
     * -mhard-mul is enabled by default.
 
     * The -mor32-newlib and -mor32-newlib-uart options enable support for the
 
       OpenRISC newlib library implementations.
 
 
  picochip
  picochip
  RS/6000 (POWER/PowerPC)
  RS/6000 (POWER/PowerPC)
     * GCC now supports the Power ISA 2.06, which includes the VSX
     * GCC now supports the Power ISA 2.06, which includes the VSX
       instructions that add vector 64-bit floating point support, new
       instructions that add vector 64-bit floating point support, new
       population count instructions, and conversions between floating
       population count instructions, and conversions between floating
       point and unsigned types.
       point and unsigned types.
     * Support for the power7 processor is now available through the
     * Support for the power7 processor is now available through the
       -mcpu=power7 and -mtune=power7.
       -mcpu=power7 and -mtune=power7.
     * GCC will now vectorize loops that contain simple math functions
     * GCC will now vectorize loops that contain simple math functions
       like copysign when generating code for altivec or VSX targets.
       like copysign when generating code for altivec or VSX targets.
     * Support for the A2 processor is now available through the -mcpu=a2
     * Support for the A2 processor is now available through the -mcpu=a2
       and -mtune=a2 options.
       and -mtune=a2 options.
     * Support for the 476 processor is now available through the
     * Support for the 476 processor is now available through the
       -mcpu={476,476fp} and -mtune={476,476fp} options.
       -mcpu={476,476fp} and -mtune={476,476fp} options.
     * Support for the e500mc64 processor is now available through the
     * Support for the e500mc64 processor is now available through the
       -mcpu=e500mc64 and -mtune=e500mc64 options.
       -mcpu=e500mc64 and -mtune=e500mc64 options.
     * GCC can now be configured with options --with-cpu-32,
     * GCC can now be configured with options --with-cpu-32,
       --with-cpu-64, --with-tune-32 and --with-tune-64 to control the
       --with-cpu-64, --with-tune-32 and --with-tune-64 to control the
       default optimization separately for 32-bit and 64-bit modes.
       default optimization separately for 32-bit and 64-bit modes.
  RX
  RX
   Support has been added for the Renesas RX Processor (rx-elf) target.
   Support has been added for the Renesas RX Processor (rx-elf) target.
Operating Systems
Operating Systems
  Windows (Cygwin and MinGW)
  Windows (Cygwin and MinGW)
     * GCC now installs all the major language runtime libraries as DLLs
     * GCC now installs all the major language runtime libraries as DLLs
       when configured with the --enable-shared option.
       when configured with the --enable-shared option.
     * GCC now makes use of the new support for aligned common variables
     * GCC now makes use of the new support for aligned common variables
       in versions of binutils >= 2.20 to fix bugs in the support for SSE
       in versions of binutils >= 2.20 to fix bugs in the support for SSE
       data types.
       data types.
     * Improvements to the libffi support library increase the reliability
     * Improvements to the libffi support library increase the reliability
       of code generated by GCJ on all Windows platforms. Libgcj is
       of code generated by GCJ on all Windows platforms. Libgcj is
       enabled by default for the first time.
       enabled by default for the first time.
     * Libtool improvements simplify installation by placing the generated
     * Libtool improvements simplify installation by placing the generated
       DLLs in the correct binaries directory.
       DLLs in the correct binaries directory.
     * Numerous other minor bugfixes and improvements, and substantial
     * Numerous other minor bugfixes and improvements, and substantial
       enhancements to the Fortran language support library.
       enhancements to the Fortran language support library.
Documentation improvements
Documentation improvements
Other significant improvements
Other significant improvements
  Plugins
  Plugins
     * It is now possible to extend the compiler without having to modify
     * It is now possible to extend the compiler without having to modify
       its source code. A new option -fplugin=file.so tells GCC to load
       its source code. A new option -fplugin=file.so tells GCC to load
       the shared object file.so and execute it as part of the compiler.
       the shared object file.so and execute it as part of the compiler.
       The internal documentation describes the details on how plugins can
       The internal documentation describes the details on how plugins can
       interact with the compiler.
       interact with the compiler.
  Installation changes
  Installation changes
     * The move to newer autotools changed default installation
     * The move to newer autotools changed default installation
       directories and switches to control them: The --with-datarootdir,
       directories and switches to control them: The --with-datarootdir,
       --with-docdir, --with-pdfdir, and --with-htmldir switches are not
       --with-docdir, --with-pdfdir, and --with-htmldir switches are not
       used any more. Instead, you can now use --datarootdir, --docdir,
       used any more. Instead, you can now use --datarootdir, --docdir,
       --htmldir, and --pdfdir. The default installation directories have
       --htmldir, and --pdfdir. The default installation directories have
       changed as follows according to the GNU Coding Standards:
       changed as follows according to the GNU Coding Standards:
       datarootdir read-only architecture-independent data root [PREFIX/share]
       datarootdir read-only architecture-independent data root [PREFIX/share]
       localedir   locale-specific message catalogs [DATAROOTDIR/locale]
       localedir   locale-specific message catalogs [DATAROOTDIR/locale]
       docdir      documentation root [DATAROOTDIR/doc/PACKAGE]
       docdir      documentation root [DATAROOTDIR/doc/PACKAGE]
       htmldir     html documentation [DOCDIR]
       htmldir     html documentation [DOCDIR]
       dvidir      dvi documentation [DOCDIR]
       dvidir      dvi documentation [DOCDIR]
       pdfdir      pdf documentation [DOCDIR]
       pdfdir      pdf documentation [DOCDIR]
       psdir       ps documentation [DOCDIR]
       psdir       ps documentation [DOCDIR]
       The following variables have new default values:
       The following variables have new default values:
       datadir read-only architecture-independent data [DATAROOTDIR]
       datadir read-only architecture-independent data [DATAROOTDIR]
       infodir info documentation [DATAROOTDIR/info]
       infodir info documentation [DATAROOTDIR/info]
       mandir  man documentation [DATAROOTDIR/man]
       mandir  man documentation [DATAROOTDIR/man]
GCC 4.5.1
GCC 4.5.1
   This is the [24]list of problem reports (PRs) from GCC's bug tracking
   This is the [24]list of problem reports (PRs) from GCC's bug tracking
   system that are known to be fixed in the 4.5.1 release. This list might
   system that are known to be fixed in the 4.5.1 release. This list might
   not be complete (that is, it is possible that some PRs that have been
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).
   fixed are not listed here).
  All languages
  All languages
     * GCC's new link-time optimizer ([25]-flto) now also works on a few
     * GCC's new link-time optimizer ([25]-flto) now also works on a few
       non-ELF targets:
       non-ELF targets:
          + Cygwin (*-cygwin*)
          + Cygwin (*-cygwin*)
          + MinGW (*-mingw*)
          + MinGW (*-mingw*)
          + Darwin on x86-64 (x86_64-apple-darwin*)
          + Darwin on x86-64 (x86_64-apple-darwin*)
       LTO is not enabled by default for these targets. To enable LTO, you
       LTO is not enabled by default for these targets. To enable LTO, you
       should configure with the --enable-lto option.
       should configure with the --enable-lto option.
   Please send FSF & GNU inquiries & questions to [26]gnu@gnu.org. There
   Please send FSF & GNU inquiries & questions to [26]gnu@gnu.org. There
   are also [27]other ways to contact the FSF.
   are also [27]other ways to contact the FSF.
   These pages are [28]maintained by the GCC team.
   These pages are [28]maintained by the GCC team.
    For questions related to the use of GCC, please consult these web
    For questions related to the use of GCC, please consult these web
    pages and the [29]GCC manuals. If that fails, the
    pages and the [29]GCC manuals. If that fails, the
    [30]gcc-help@gcc.gnu.org mailing list might help.
    [30]gcc-help@gcc.gnu.org mailing list might help.
    Please send comments on these web pages and the development of GCC to
    Please send comments on these web pages and the development of GCC to
    our developer mailing list at [31]gcc@gnu.org or [32]gcc@gcc.gnu.org.
    our developer mailing list at [31]gcc@gnu.org or [32]gcc@gcc.gnu.org.
    All of our lists have [33]public archives.
    All of our lists have [33]public archives.
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Floor, Boston, MA 02110, USA.
   Floor, Boston, MA 02110, USA.
   Verbatim copying and distribution of this entire article is permitted
   Verbatim copying and distribution of this entire article is permitted
   in any medium, provided this notice is preserved.
   in any medium, provided this notice is preserved.
   Last modified 2010-07-31 [34]Valid XHTML 1.0
   Last modified 2010-07-31 [34]Valid XHTML 1.0
References
References
   1. http://www.multiprecision.org/
   1. http://www.multiprecision.org/
   2. http://gcc.gnu.org/install/prerequisites.html
   2. http://gcc.gnu.org/install/prerequisites.html
   3. http://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
   3. http://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
   4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
   4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
   5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
   5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
   6. http://www.multiprecision.org/
   6. http://www.multiprecision.org/
   7. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30789
   7. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30789
   8. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
   8. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
   9. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
   9. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
  10. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
  10. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
  11. http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
  11. http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
  12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
  12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
  13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
  13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
  14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
  14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
  15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x
  15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x
  16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
  16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
  17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
  17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
  18. http://sourceware.org/gdb/wiki/STLSupport
  18. http://sourceware.org/gdb/wiki/STLSupport
  19. http://gcc.gnu.org/gcc-4.4/changes.html
  19. http://gcc.gnu.org/gcc-4.4/changes.html
  20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
  20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
  21. http://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
  21. http://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
  22. http://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
  22. http://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
  23. http://gcc.gnu.org/wiki/OOP
  23. http://gcc.gnu.org/wiki/OOP
  24. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
  24. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
  25. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
  25. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
  26. mailto:gnu@gnu.org
  26. mailto:gnu@gnu.org
  27. http://www.gnu.org/home.html#ContactInfo
  27. http://www.gnu.org/home.html#ContactInfo
  28. http://gcc.gnu.org/about.html
  28. http://gcc.gnu.org/about.html
  29. http://gcc.gnu.org/onlinedocs/
  29. http://gcc.gnu.org/onlinedocs/
  30. mailto:gcc-help@gcc.gnu.org
  30. mailto:gcc-help@gcc.gnu.org
  31. mailto:gcc@gnu.org
  31. mailto:gcc@gnu.org
  32. mailto:gcc@gcc.gnu.org
  32. mailto:gcc@gcc.gnu.org
  33. http://gcc.gnu.org/lists.html
  33. http://gcc.gnu.org/lists.html
  34. http://validator.w3.org/check/referer
  34. http://validator.w3.org/check/referer
======================================================================
======================================================================
http://gcc.gnu.org/gcc-4.4/index.html
http://gcc.gnu.org/gcc-4.4/index.html
                           GCC 4.4 Release Series
                           GCC 4.4 Release Series
   April 29, 2010
   April 29, 2010
   The [1]GNU project and the GCC developers are pleased to announce the
   The [1]GNU project and the GCC developers are pleased to announce the
   release of GCC 4.4.4.
   release of GCC 4.4.4.
   This release is a bug-fix release, containing fixes for regressions in
   This release is a bug-fix release, containing fixes for regressions in
   GCC 4.4.3 relative to previous releases of GCC.
   GCC 4.4.3 relative to previous releases of GCC.
Release History
Release History
   GCC 4.4.4
   GCC 4.4.4
          April 29, 2010 ([2]changes)
          April 29, 2010 ([2]changes)
   GCC 4.4.3
   GCC 4.4.3
          January 21, 2010 ([3]changes)
          January 21, 2010 ([3]changes)
   GCC 4.4.2
   GCC 4.4.2
          October 15, 2009 ([4]changes)
          October 15, 2009 ([4]changes)
   GCC 4.4.1
   GCC 4.4.1
          July 22, 2009 ([5]changes)
          July 22, 2009 ([5]changes)
   GCC 4.4.0
   GCC 4.4.0
          April 21, 2009 ([6]changes)
          April 21, 2009 ([6]changes)
References and Acknowledgements
References and Acknowledgements
   GCC used to stand for the GNU C Compiler, but since the compiler
   GCC used to stand for the GNU C Compiler, but since the compiler
   supports several other languages aside from C, it now stands for the
   supports several other languages aside from C, it now stands for the
   GNU Compiler Collection.
   GNU Compiler Collection.
   A list of [7]successful builds is updated as new information becomes
   A list of [7]successful builds is updated as new information becomes
   available.
   available.
   The GCC developers would like to thank the numerous people that have
   The GCC developers would like to thank the numerous people that have
   contributed new features, improvements, bug fixes, and other changes as
   contributed new features, improvements, bug fixes, and other changes as
   well as test results to GCC. This [8]amazing group of volunteers is
   well as test results to GCC. This [8]amazing group of volunteers is
   what makes GCC successful.
   what makes GCC successful.
   For additional information about GCC please refer to the [9]GCC project
   For additional information about GCC please refer to the [9]GCC project
   web site or contact the [10]GCC development mailing list.
   web site or contact the [10]GCC development mailing list.
   To obtain GCC please use [11]our mirror sites or [12]our SVN server.
   To obtain GCC please use [11]our mirror sites or [12]our SVN server.
   Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There
   Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There
   are also [14]other ways to contact the FSF.
   are also [14]other ways to contact the FSF.
   These pages are [15]maintained by the GCC team.
   These pages are [15]maintained by the GCC team.
    For questions related to the use of GCC, please consult these web
    For questions related to the use of GCC, please consult these web
    pages and the [16]GCC manuals. If that fails, the
    pages and the [16]GCC manuals. If that fails, the
    [17]gcc-help@gcc.gnu.org mailing list might help.
    [17]gcc-help@gcc.gnu.org mailing list might help.
    Please send comments on these web pages and the development of GCC to
    Please send comments on these web pages and the development of GCC to
    our developer mailing list at [18]gcc@gnu.org or [19]gcc@gcc.gnu.org.
    our developer mailing list at [18]gcc@gnu.org or [19]gcc@gcc.gnu.org.
    All of our lists have [20]public archives.
    All of our lists have [20]public archives.
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Floor, Boston, MA 02110, USA.
   Floor, Boston, MA 02110, USA.
   Verbatim copying and distribution of this entire article is permitted
   Verbatim copying and distribution of this entire article is permitted
   in any medium, provided this notice is preserved.
   in any medium, provided this notice is preserved.
   Last modified 2010-07-01 [21]Valid XHTML 1.0
   Last modified 2010-07-01 [21]Valid XHTML 1.0
References
References
   1. http://www.gnu.org/
   1. http://www.gnu.org/
   2. http://gcc.gnu.org/gcc-4.4/changes.html
   2. http://gcc.gnu.org/gcc-4.4/changes.html
   3. http://gcc.gnu.org/gcc-4.4/changes.html
   3. http://gcc.gnu.org/gcc-4.4/changes.html
   4. http://gcc.gnu.org/gcc-4.4/changes.html
   4. http://gcc.gnu.org/gcc-4.4/changes.html
   5. http://gcc.gnu.org/gcc-4.4/changes.html
   5. http://gcc.gnu.org/gcc-4.4/changes.html
   6. http://gcc.gnu.org/gcc-4.4/changes.html
   6. http://gcc.gnu.org/gcc-4.4/changes.html
   7. http://gcc.gnu.org/gcc-4.4/buildstat.html
   7. http://gcc.gnu.org/gcc-4.4/buildstat.html
   8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   9. http://gcc.gnu.org/index.html
   9. http://gcc.gnu.org/index.html
  10. mailto:gcc@gcc.gnu.org
  10. mailto:gcc@gcc.gnu.org
  11. http://gcc.gnu.org/mirrors.html
  11. http://gcc.gnu.org/mirrors.html
  12. http://gcc.gnu.org/svn.html
  12. http://gcc.gnu.org/svn.html
  13. mailto:gnu@gnu.org
  13. mailto:gnu@gnu.org
  14. http://www.gnu.org/home.html#ContactInfo
  14. http://www.gnu.org/home.html#ContactInfo
  15. http://gcc.gnu.org/about.html
  15. http://gcc.gnu.org/about.html
  16. http://gcc.gnu.org/onlinedocs/
  16. http://gcc.gnu.org/onlinedocs/
  17. mailto:gcc-help@gcc.gnu.org
  17. mailto:gcc-help@gcc.gnu.org
  18. mailto:gcc@gnu.org
  18. mailto:gcc@gnu.org
  19. mailto:gcc@gcc.gnu.org
  19. mailto:gcc@gcc.gnu.org
  20. http://gcc.gnu.org/lists.html
  20. http://gcc.gnu.org/lists.html
  21. http://validator.w3.org/check/referer
  21. http://validator.w3.org/check/referer
======================================================================
======================================================================
http://gcc.gnu.org/gcc-4.4/changes.html
http://gcc.gnu.org/gcc-4.4/changes.html
                           GCC 4.4 Release Series
                           GCC 4.4 Release Series
                      Changes, New Features, and Fixes
                      Changes, New Features, and Fixes
   The latest release in the 4.4 release series is [1]GCC 4.4.4.
   The latest release in the 4.4 release series is [1]GCC 4.4.4.
Caveats
Caveats
     * __builtin_stdarg_start has been completely removed from GCC.
     * __builtin_stdarg_start has been completely removed from GCC.
       Support for  had been deprecated since GCC 4.0. Use
       Support for  had been deprecated since GCC 4.0. Use
       __builtin_va_start as a replacement.
       __builtin_va_start as a replacement.
     * Some of the errors issued by the C++ front end that could be
     * Some of the errors issued by the C++ front end that could be
       downgraded to warnings in previous releases by using -fpermissive
       downgraded to warnings in previous releases by using -fpermissive
       are now warnings by default. They can be converted into errors by
       are now warnings by default. They can be converted into errors by
       using -pedantic-errors.
       using -pedantic-errors.
     * Use of the cpp assertion extension will now emit a warning when
     * Use of the cpp assertion extension will now emit a warning when
       -Wdeprecated or -pedantic is used. This extension has been
       -Wdeprecated or -pedantic is used. This extension has been
       deprecated for many years, but never warned about.
       deprecated for many years, but never warned about.
     * Packed bit-fields of type char were not properly bit-packed on many
     * Packed bit-fields of type char were not properly bit-packed on many
       targets prior to GCC 4.4. On these targets, the fix in GCC 4.4
       targets prior to GCC 4.4. On these targets, the fix in GCC 4.4
       causes an ABI change. For example there is no longer a 4-bit
       causes an ABI change. For example there is no longer a 4-bit
       padding between field a and b in this structure:
       padding between field a and b in this structure:
    struct foo
    struct foo
    {
    {
      char a:4;
      char a:4;
      char b:8;
      char b:8;
    } __attribute__ ((packed));
    } __attribute__ ((packed));
       There is a new warning to help identify fields that are affected:
       There is a new warning to help identify fields that are affected:
    foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4
    foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4
       The warning can be disabled with -Wno-packed-bitfield-compat.
       The warning can be disabled with -Wno-packed-bitfield-compat.
     * On ARM EABI targets, the C++ mangling of the va_list type has been
     * On ARM EABI targets, the C++ mangling of the va_list type has been
       changed to conform to the current revision of the EABI. This does
       changed to conform to the current revision of the EABI. This does
       not affect the libstdc++ library included with GCC.
       not affect the libstdc++ library included with GCC.
     * The SCOUNT and POS bits of the MIPS DSP control register are now
     * The SCOUNT and POS bits of the MIPS DSP control register are now
       treated as global. Previous versions of GCC treated these fields as
       treated as global. Previous versions of GCC treated these fields as
       call-clobbered instead.
       call-clobbered instead.
     * The MIPS port no longer recognizes the h asm constraint. It was
     * The MIPS port no longer recognizes the h asm constraint. It was
       necessary to remove this constraint in order to avoid generating
       necessary to remove this constraint in order to avoid generating
       unpredictable code sequences.
       unpredictable code sequences.
       One of the main uses of the h constraint was to extract the high
       One of the main uses of the h constraint was to extract the high
       part of a multiplication on 64-bit targets. For example:
       part of a multiplication on 64-bit targets. For example:
    asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
    asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
       You can now achieve the same effect using 128-bit types:
       You can now achieve the same effect using 128-bit types:
    typedef unsigned int uint128_t __attribute__((mode(TI)));
    typedef unsigned int uint128_t __attribute__((mode(TI)));
    result = ((uint128_t) x * y) >> 64;
    result = ((uint128_t) x * y) >> 64;
       The second sequence is better in many ways. For example, if x and y
       The second sequence is better in many ways. For example, if x and y
       are constants, the compiler can perform the multiplication at
       are constants, the compiler can perform the multiplication at
       compile time. If x and y are not constants, the compiler can
       compile time. If x and y are not constants, the compiler can
       schedule the runtime multiplication better than it can schedule an
       schedule the runtime multiplication better than it can schedule an
       asm statement.
       asm statement.
     * Support for a number of older systems and recently unmaintained or
     * Support for a number of older systems and recently unmaintained or
       untested target ports of GCC has been declared obsolete in GCC 4.4.
       untested target ports of GCC has been declared obsolete in GCC 4.4.
       Unless there is activity to revive them, the next release of GCC
       Unless there is activity to revive them, the next release of GCC
       will have their sources permanently removed.
       will have their sources permanently removed.
       The following ports for individual systems on particular
       The following ports for individual systems on particular
       architectures have been obsoleted:
       architectures have been obsoleted:
          + Generic a.out on IA32 and m68k (i[34567]86-*-aout*,
          + Generic a.out on IA32 and m68k (i[34567]86-*-aout*,
            m68k-*-aout*)
            m68k-*-aout*)
          + Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*,
          + Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*,
            armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*,
            armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*,
            sh-*-*). This does not affect other more specific targets
            sh-*-*). This does not affect other more specific targets
            using the COFF object format on those architectures, or the
            using the COFF object format on those architectures, or the
            more specific H8300 and SH targets (h8300-*-rtems*,
            more specific H8300 and SH targets (h8300-*-rtems*,
            h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*,
            h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*,
            sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
            sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
          + 2BSD on PDP-11 (pdp11-*-bsd)
          + 2BSD on PDP-11 (pdp11-*-bsd)
          + AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*,
          + AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*,
            powerpc-ibm-aix4.[12]*)
            powerpc-ibm-aix4.[12]*)
          + Tuning support for Itanium1 (Merced) variants. Note that code
          + Tuning support for Itanium1 (Merced) variants. Note that code
            tuned for Itanium2 should also run correctly on Itanium1.
            tuned for Itanium2 should also run correctly on Itanium1.
     * The protoize and unprotoize utilities have been obsoleted and will
     * The protoize and unprotoize utilities have been obsoleted and will
       be removed in GCC 4.5. These utilities have not been installed by
       be removed in GCC 4.5. These utilities have not been installed by
       default since GCC 3.0.
       default since GCC 3.0.
     * Support has been removed for all the [2]configurations obsoleted in
     * Support has been removed for all the [2]configurations obsoleted in
       GCC 4.3.
       GCC 4.3.
     * Unknown -Wno-* options are now silently ignored by GCC if no other
     * Unknown -Wno-* options are now silently ignored by GCC if no other
       diagnostics are issued. If other diagnostics are issued, then GCC
       diagnostics are issued. If other diagnostics are issued, then GCC
       warns about the unknown options.
       warns about the unknown options.
     * More information on porting to GCC 4.4 from previous versions of
     * More information on porting to GCC 4.4 from previous versions of
       GCC can be found in the [3]porting guide for this release.
       GCC can be found in the [3]porting guide for this release.
General Optimizer Improvements
General Optimizer Improvements
     * A new command-line switch -findirect-inlining has been added. When
     * A new command-line switch -findirect-inlining has been added. When
       turned on it allows the inliner to also inline indirect calls that
       turned on it allows the inliner to also inline indirect calls that
       are discovered to have known targets at compile time thanks to
       are discovered to have known targets at compile time thanks to
       previous inlining.
       previous inlining.
     * A new command-line switch -ftree-switch-conversion has been added.
     * A new command-line switch -ftree-switch-conversion has been added.
       This new pass turns simple initializations of scalar variables in
       This new pass turns simple initializations of scalar variables in
       switch statements into initializations from a static array, given
       switch statements into initializations from a static array, given
       that all the values are known at compile time and the ratio between
       that all the values are known at compile time and the ratio between
       the new array size and the original switch branches does not exceed
       the new array size and the original switch branches does not exceed
       the parameter --param switch-conversion-max-branch-ratio (default
       the parameter --param switch-conversion-max-branch-ratio (default
       is eight).
       is eight).
     * A new command-line switch -ftree-builtin-call-dce has been added.
     * A new command-line switch -ftree-builtin-call-dce has been added.
       This optimization eliminates unnecessary calls to certain builtin
       This optimization eliminates unnecessary calls to certain builtin
       functions when the return value is not used, in cases where the
       functions when the return value is not used, in cases where the
       calls can not be eliminated entirely because the function may set
       calls can not be eliminated entirely because the function may set
       errno. This optimization is on by default at -O2 and above.
       errno. This optimization is on by default at -O2 and above.
     * A new command-line switch -fconserve-stack directs the compiler to
     * A new command-line switch -fconserve-stack directs the compiler to
       minimize stack usage even if it makes the generated code slower.
       minimize stack usage even if it makes the generated code slower.
       This affects inlining decisions.
       This affects inlining decisions.
     * When the assembler supports it, the compiler will now emit unwind
     * When the assembler supports it, the compiler will now emit unwind
       information using assembler .cfi directives. This makes it possible
       information using assembler .cfi directives. This makes it possible
       to use such directives in inline assembler code. The new option
       to use such directives in inline assembler code. The new option
       -fno-dwarf2-cfi-asm directs the compiler to not use .cfi
       -fno-dwarf2-cfi-asm directs the compiler to not use .cfi
       directives.
       directives.
     * The [4]Graphite branch has been merged. This merge has brought in a
     * The [4]Graphite branch has been merged. This merge has brought in a
       new framework for loop optimizations based on a polyhedral
       new framework for loop optimizations based on a polyhedral
       intermediate representation. These optimizations apply to all the
       intermediate representation. These optimizations apply to all the
       languages supported by GCC. The following new code transformations
       languages supported by GCC. The following new code transformations
       are available in GCC 4.4:
       are available in GCC 4.4:
          + -floop-interchange performs loop interchange transformations
          + -floop-interchange performs loop interchange transformations
            on loops. Interchanging two nested loops switches the inner
            on loops. Interchanging two nested loops switches the inner
            and outer loops. For example, given a loop like:
            and outer loops. For example, given a loop like:
          DO J = 1, M
          DO J = 1, M
            DO I = 1, N
            DO I = 1, N
              A(J, I) = A(J, I) * C
              A(J, I) = A(J, I) * C
            ENDDO
            ENDDO
          ENDDO
          ENDDO
            loop interchange will transform the loop as if the user had
            loop interchange will transform the loop as if the user had
            written:
            written:
          DO I = 1, N
          DO I = 1, N
            DO J = 1, M
            DO J = 1, M
              A(J, I) = A(J, I) * C
              A(J, I) = A(J, I) * C
            ENDDO
            ENDDO
          ENDDO
          ENDDO
            which can be beneficial when N is larger than the caches,
            which can be beneficial when N is larger than the caches,
            because in Fortran, the elements of an array are stored in
            because in Fortran, the elements of an array are stored in
            memory contiguously by column, and the original loop iterates
            memory contiguously by column, and the original loop iterates
            over rows, potentially creating at each access a cache miss.
            over rows, potentially creating at each access a cache miss.
          + -floop-strip-mine performs loop strip mining transformations
          + -floop-strip-mine performs loop strip mining transformations
            on loops. Strip mining splits a loop into two nested loops.
            on loops. Strip mining splits a loop into two nested loops.
            The outer loop has strides equal to the strip size and the
            The outer loop has strides equal to the strip size and the
            inner loop has strides of the original loop within a strip.
            inner loop has strides of the original loop within a strip.
            For example, given a loop like:
            For example, given a loop like:
          DO I = 1, N
          DO I = 1, N
            A(I) = A(I) + C
            A(I) = A(I) + C
          ENDDO
          ENDDO
            loop strip mining will transform the loop as if the user had
            loop strip mining will transform the loop as if the user had
            written:
            written:
          DO II = 1, N, 4
          DO II = 1, N, 4
            DO I = II, min (II + 3, N)
            DO I = II, min (II + 3, N)
              A(I) = A(I) + C
              A(I) = A(I) + C
            ENDDO
            ENDDO
          ENDDO
          ENDDO
          + -floop-block performs loop blocking transformations on loops.
          + -floop-block performs loop blocking transformations on loops.
            Blocking strip mines each loop in the loop nest such that the
            Blocking strip mines each loop in the loop nest such that the
            memory accesses of the element loops fit inside caches. For
            memory accesses of the element loops fit inside caches. For
            example, given a loop like:
            example, given a loop like:
          DO I = 1, N
          DO I = 1, N
            DO J = 1, M
            DO J = 1, M
              A(J, I) = B(I) + C(J)
              A(J, I) = B(I) + C(J)
            ENDDO
            ENDDO
          ENDDO
          ENDDO
            loop blocking will transform the loop as if the user had
            loop blocking will transform the loop as if the user had
            written:
            written:
          DO II = 1, N, 64
          DO II = 1, N, 64
            DO JJ = 1, M, 64
            DO JJ = 1, M, 64
              DO I = II, min (II + 63, N)
              DO I = II, min (II + 63, N)
                DO J = JJ, min (JJ + 63, M)
                DO J = JJ, min (JJ + 63, M)
                  A(J, I) = B(I) + C(J)
                  A(J, I) = B(I) + C(J)
                ENDDO
                ENDDO
              ENDDO
              ENDDO
            ENDDO
            ENDDO
          ENDDO
          ENDDO
            which can be beneficial when M is larger than the caches,
            which can be beneficial when M is larger than the caches,
            because the innermost loop will iterate over a smaller amount
            because the innermost loop will iterate over a smaller amount
            of data that can be kept in the caches.
            of data that can be kept in the caches.
     * A new register allocator has replaced the old one. It is called
     * A new register allocator has replaced the old one. It is called
       integrated register allocator (IRA) because coalescing, register
       integrated register allocator (IRA) because coalescing, register
       live range splitting, and hard register preferencing are done
       live range splitting, and hard register preferencing are done
       on-the-fly during coloring. It also has better integration with the
       on-the-fly during coloring. It also has better integration with the
       reload pass. IRA is a regional register allocator which uses modern
       reload pass. IRA is a regional register allocator which uses modern
       Chaitin-Briggs coloring instead of Chow's priority coloring used in
       Chaitin-Briggs coloring instead of Chow's priority coloring used in
       the old register allocator. More info about IRA internals and
       the old register allocator. More info about IRA internals and
       options can be found in the GCC manuals.
       options can be found in the GCC manuals.
     * A new instruction scheduler and software pipeliner, based on the
     * A new instruction scheduler and software pipeliner, based on the
       selective scheduling approach, has been added. The new pass
       selective scheduling approach, has been added. The new pass
       performs instruction unification, register renaming, substitution
       performs instruction unification, register renaming, substitution
       through register copies, and speculation during scheduling. The
       through register copies, and speculation during scheduling. The
       software pipeliner is able to pipeline non-countable loops. The new
       software pipeliner is able to pipeline non-countable loops. The new
       pass is targeted at scheduling-eager in-order platforms. In GCC 4.4
       pass is targeted at scheduling-eager in-order platforms. In GCC 4.4
       it is available for the Intel Itanium platform working by default
       it is available for the Intel Itanium platform working by default
       as the second scheduling pass (after register allocation) at the
       as the second scheduling pass (after register allocation) at the
       -O3 optimization level.
       -O3 optimization level.
     * When using -fprofile-generate with a multi-threaded program, the
     * When using -fprofile-generate with a multi-threaded program, the
       profile counts may be slightly wrong due to race conditions. The
       profile counts may be slightly wrong due to race conditions. The
       new -fprofile-correction option directs the compiler to apply
       new -fprofile-correction option directs the compiler to apply
       heuristics to smooth out the inconsistencies. By default the
       heuristics to smooth out the inconsistencies. By default the
       compiler will give an error message when it finds an inconsistent
       compiler will give an error message when it finds an inconsistent
       profile.
       profile.
     * The new -fprofile-dir=PATH option permits setting the directory
     * The new -fprofile-dir=PATH option permits setting the directory
       where profile data files are stored when using -fprofile-generate
       where profile data files are stored when using -fprofile-generate
       and friends, and the directory used when reading profile data files
       and friends, and the directory used when reading profile data files
       using -fprofile-use and friends.
       using -fprofile-use and friends.
New warning options
New warning options
     * The new -Wframe-larger-than=NUMBER option directs GCC to emit a
     * The new -Wframe-larger-than=NUMBER option directs GCC to emit a
       warning if any stack frame is larger than NUMBER bytes. This may be
       warning if any stack frame is larger than NUMBER bytes. This may be
       used to help ensure that code fits within a limited amount of stack
       used to help ensure that code fits within a limited amount of stack
       space.
       space.
     * The command-line option -Wlarger-than-N is now written as
     * The command-line option -Wlarger-than-N is now written as
       -Wlarger-than=N and the old form is deprecated.
       -Wlarger-than=N and the old form is deprecated.
     * The new -Wno-mudflap option disables warnings about constructs
     * The new -Wno-mudflap option disables warnings about constructs
       which can not be instrumented when using -fmudflap.
       which can not be instrumented when using -fmudflap.
New Languages and Language specific improvements
New Languages and Language specific improvements
     * Version 3.0 of the [5]OpenMP specification is now supported for the
     * Version 3.0 of the [5]OpenMP specification is now supported for the
       C, C++, and Fortran compilers.
       C, C++, and Fortran compilers.
     * New character data types, per [6]TR 19769: New character types in
     * New character data types, per [6]TR 19769: New character types in
       C, are now supported for the C compiler in -std=gnu99 mode, as
       C, are now supported for the C compiler in -std=gnu99 mode, as
       __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
       __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
       -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
       -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
  C family
  C family
     * A new optimize attribute was added to allow programmers to change
     * A new optimize attribute was added to allow programmers to change
       the optimization level and particular optimization options for an
       the optimization level and particular optimization options for an
       individual function. You can also change the optimization options
       individual function. You can also change the optimization options
       via the GCC optimize pragma for functions defined after the pragma.
       via the GCC optimize pragma for functions defined after the pragma.
       The GCC push_options pragma and the GCC pop_options pragma allow
       The GCC push_options pragma and the GCC pop_options pragma allow
       you temporarily save and restore the options used. The GCC
       you temporarily save and restore the options used. The GCC
       reset_options pragma restores the options to what was specified on
       reset_options pragma restores the options to what was specified on
       the command line.
       the command line.
     * Uninitialized warnings do not require enabling optimization
     * Uninitialized warnings do not require enabling optimization
       anymore, that is, -Wuninitialized can be used together with -O0.
       anymore, that is, -Wuninitialized can be used together with -O0.
       Nonetheless, the warnings given by -Wuninitialized will probably be
       Nonetheless, the warnings given by -Wuninitialized will probably be
       more accurate if optimization is enabled.
       more accurate if optimization is enabled.
     * -Wparentheses now warns about expressions such as (!x | y) and (!x
     * -Wparentheses now warns about expressions such as (!x | y) and (!x
       & y). Using explicit parentheses, such as in ((!x) | y), silences
       & y). Using explicit parentheses, such as in ((!x) | y), silences
       this warning.
       this warning.
     * -Wsequence-point now warns within if, while,do while and for
     * -Wsequence-point now warns within if, while,do while and for
       conditions, and within for begin/end expressions.
       conditions, and within for begin/end expressions.
     * A new option -dU is available to dump definitions of preprocessor
     * A new option -dU is available to dump definitions of preprocessor
       macros that are tested or expanded.
       macros that are tested or expanded.
  C++
  C++
     * [7]Improved experimental support for the upcoming ISO C++ standard,
     * [7]Improved experimental support for the upcoming ISO C++ standard,
       C++0x. Including support for auto, inline namespaces, generalized
       C++0x. Including support for auto, inline namespaces, generalized
       initializer lists, defaulted and deleted functions, new character
       initializer lists, defaulted and deleted functions, new character
       types, and scoped enums.
       types, and scoped enums.
     * Those errors that may be downgraded to warnings to build legacy
     * Those errors that may be downgraded to warnings to build legacy
       code now mention -fpermissive when -fdiagnostics-show-option is
       code now mention -fpermissive when -fdiagnostics-show-option is
       enabled.
       enabled.
     * -Wconversion now warns if the result of a static_cast to enumeral
     * -Wconversion now warns if the result of a static_cast to enumeral
       type is unspecified because the value is outside the range of the
       type is unspecified because the value is outside the range of the
       enumeral type.
       enumeral type.
     * -Wuninitialized now warns if a non-static reference or non-static
     * -Wuninitialized now warns if a non-static reference or non-static
       const member appears in a class without constructors.
       const member appears in a class without constructors.
     * G++ now properly implements value-initialization, so objects with
     * G++ now properly implements value-initialization, so objects with
       an initializer of () and an implicitly defined default constructor
       an initializer of () and an implicitly defined default constructor
       will be zero-initialized before the default constructor is called.
       will be zero-initialized before the default constructor is called.
    Runtime Library (libstdc++)
    Runtime Library (libstdc++)
     * [8]Improved experimental support for the upcoming ISO C++ standard,
     * [8]Improved experimental support for the upcoming ISO C++ standard,
       C++0x, including:
       C++0x, including:
          + Support for , , ,
          + Support for , , ,
            , , , ,
            , , , ,
            , and .
            , and .
          + unique_ptr,  additions, exception propagation, and
          + unique_ptr,  additions, exception propagation, and
            support for the new character types in  and .
            support for the new character types in  and .
          + Existing facilities now exploit initializer lists, defaulted
          + Existing facilities now exploit initializer lists, defaulted
            and deleted functions, and the newly implemented core C++0x
            and deleted functions, and the newly implemented core C++0x
            features.
            features.
          + Some standard containers are more efficient together with
          + Some standard containers are more efficient together with
            stateful allocators, i.e., no allocator is constructed on the
            stateful allocators, i.e., no allocator is constructed on the
            fly at element construction time.
            fly at element construction time.
     * Experimental support for non-standard pointer types in containers.
     * Experimental support for non-standard pointer types in containers.
     * The long standing libstdc++/30928 has been fixed for targets
     * The long standing libstdc++/30928 has been fixed for targets
       running glibc 2.10 or later.
       running glibc 2.10 or later.
     * As usual, many small and larger bug fixes, in particular quite a
     * As usual, many small and larger bug fixes, in particular quite a
       few corner cases in .
       few corner cases in .
  Fortran
  Fortran
     * GNU Fortran now employs libcpp directly instead of using cc1 as an
     * GNU Fortran now employs libcpp directly instead of using cc1 as an
       external preprocessor. The [9]-cpp option was added to allow manual
       external preprocessor. The [9]-cpp option was added to allow manual
       invocation of the preprocessor without relying on filename
       invocation of the preprocessor without relying on filename
       extensions.
       extensions.
     * The [10]-Warray-temporaries option warns about array temporaries
     * The [10]-Warray-temporaries option warns about array temporaries
       generated by the compiler, as an aid to optimization.
       generated by the compiler, as an aid to optimization.
     * The [11]-fcheck-array-temporaries option has been added, printing a
     * The [11]-fcheck-array-temporaries option has been added, printing a
       notification at run time, when an array temporary had to be created
       notification at run time, when an array temporary had to be created
       for an function argument. Contrary to -Warray-temporaries the
       for an function argument. Contrary to -Warray-temporaries the
       warning is only printed if the array is noncontiguous.
       warning is only printed if the array is noncontiguous.
     * Improved generation of DWARF debugging symbols
     * Improved generation of DWARF debugging symbols
     * If using an intrinsic not part of the selected standard (via -std=
     * If using an intrinsic not part of the selected standard (via -std=
       and -fall-intrinsics) gfortran will now treat it as if this
       and -fall-intrinsics) gfortran will now treat it as if this
       procedure were declared EXTERNAL and try to link to a user-supplied
       procedure were declared EXTERNAL and try to link to a user-supplied
       procedure. -Wintrinsics-std will warn whenever this happens. The
       procedure. -Wintrinsics-std will warn whenever this happens. The
       now-useless option -Wnonstd-intrinsic was removed.
       now-useless option -Wnonstd-intrinsic was removed.
     * The flag -falign-commons has been added to control the alignment of
     * The flag -falign-commons has been added to control the alignment of
       variables in COMMON blocks, which is enabled by default in line
       variables in COMMON blocks, which is enabled by default in line
       with previous GCC version. Using -fno-align-commons one can force
       with previous GCC version. Using -fno-align-commons one can force
       commons to be contiguous in memory as required by the Fortran
       commons to be contiguous in memory as required by the Fortran
       standard, however, this slows down the memory access. The option
       standard, however, this slows down the memory access. The option
       -Walign-commons, which is enabled by default, warns when padding
       -Walign-commons, which is enabled by default, warns when padding
       bytes were added for alignment. The proper solution is to sort the
       bytes were added for alignment. The proper solution is to sort the
       common objects by decreasing storage size, which avoids the
       common objects by decreasing storage size, which avoids the
       alignment problems.
       alignment problems.
     * Fortran 2003 support has been extended:
     * Fortran 2003 support has been extended:
          + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
          + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
            now supported (except internal reads from/writes to wide
            now supported (except internal reads from/writes to wide
            strings). [12]-fbackslash now supports also \unnnn and
            strings). [12]-fbackslash now supports also \unnnn and
            \Unnnnnnnn to enter Unicode characters.
            \Unnnnnnnn to enter Unicode characters.
          + Asynchronous I/O (implemented as synchronous I/O) and the
          + Asynchronous I/O (implemented as synchronous I/O) and the
            decimal=, size=, sign=, pad=, blank=, and delim= specifiers
            decimal=, size=, sign=, pad=, blank=, and delim= specifiers
            are now supported in I/O statements.
            are now supported in I/O statements.
          + Support for Fortran 2003 structure constructors and for array
          + Support for Fortran 2003 structure constructors and for array
            constructor with typespec has been added.
            constructor with typespec has been added.
          + Procedure Pointers (but not yet as component in derived types
          + Procedure Pointers (but not yet as component in derived types
            and as function results) are now supported.
            and as function results) are now supported.
          + Abstract types, type extension, and type-bound procedures
          + Abstract types, type extension, and type-bound procedures
            (both PROCEDURE and GENERIC but not as operators). Note: As
            (both PROCEDURE and GENERIC but not as operators). Note: As
            CLASS/polymorphyic types are not implemented, type-bound
            CLASS/polymorphyic types are not implemented, type-bound
            procedures with PASS accept as non-standard extension TYPE
            procedures with PASS accept as non-standard extension TYPE
            arguments.
            arguments.
     * Fortran 2008 support has been added:
     * Fortran 2008 support has been added:
          + The -std=f2008 option and support for the file extensions
          + The -std=f2008 option and support for the file extensions
            .f2008 and .F2008 has been added.
            .f2008 and .F2008 has been added.
          + The g0 format descriptor is now supported.
          + The g0 format descriptor is now supported.
          + The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH,
          + The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH,
            ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED
            ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED
            are now available (some of them existed as GNU extension
            are now available (some of them existed as GNU extension
            before). Note: The hyperbolic functions are not yet supporting
            before). Note: The hyperbolic functions are not yet supporting
            complex arguments and the three- argument version of BESSEL_*N
            complex arguments and the three- argument version of BESSEL_*N
            is not available.
            is not available.
          + The bit intrinsics LEADZ and TRAILZ have been added.
          + The bit intrinsics LEADZ and TRAILZ have been added.
  Java (GCJ)
  Java (GCJ)
  Ada
  Ada
     * The Ada runtime now supports multilibs on many platforms including
     * The Ada runtime now supports multilibs on many platforms including
       x86_64, SPARC and PowerPC. Their build is enabled by default.
       x86_64, SPARC and PowerPC. Their build is enabled by default.
New Targets and Target Specific Improvements
New Targets and Target Specific Improvements
  ARM
  ARM
     * GCC now supports optimizing for the Cortex-A9, Cortex-R4 and
     * GCC now supports optimizing for the Cortex-A9, Cortex-R4 and
       Cortex-R4F processors and has many other improvements to
       Cortex-R4F processors and has many other improvements to
       optimization for ARM processors.
       optimization for ARM processors.
     * GCC now supports the VFPv3 variant with 16 double-precision
     * GCC now supports the VFPv3 variant with 16 double-precision
       registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been
       registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been
       renamed to -mfpu=vfpv3.
       renamed to -mfpu=vfpv3.
     * GCC now supports the -mfix-cortex-m3-ldrd option to work around an
     * GCC now supports the -mfix-cortex-m3-ldrd option to work around an
       erratum on Cortex-M3 processors.
       erratum on Cortex-M3 processors.
     * GCC now supports the __sync_* atomic operations for ARM EABI
     * GCC now supports the __sync_* atomic operations for ARM EABI
       GNU/Linux.
       GNU/Linux.
     * The section anchors optimization is now enabled by default when
     * The section anchors optimization is now enabled by default when
       optimizing for ARM.
       optimizing for ARM.
     * GCC now uses a new EABI-compatible profiling interface for EABI
     * GCC now uses a new EABI-compatible profiling interface for EABI
       targets. This requires a function __gnu_mcount_nc, which is
       targets. This requires a function __gnu_mcount_nc, which is
       provided by GNU libc versions 2.8 and later.
       provided by GNU libc versions 2.8 and later.
  AVR
  AVR
     * The -mno-tablejump option has been deprecated because it has the
     * The -mno-tablejump option has been deprecated because it has the
       same effect as the -fno-jump-tables option.
       same effect as the -fno-jump-tables option.
     * Added support for these new AVR devices:
     * Added support for these new AVR devices:
          + ATA6289
          + ATA6289
          + ATtiny13A
          + ATtiny13A
          + ATtiny87
          + ATtiny87
          + ATtiny167
          + ATtiny167
          + ATtiny327
          + ATtiny327
          + ATmega8C1
          + ATmega8C1
          + ATmega16C1
          + ATmega16C1
          + ATmega32C1
          + ATmega32C1
          + ATmega8M1
          + ATmega8M1
          + ATmega16M1
          + ATmega16M1
          + ATmega32M1
          + ATmega32M1
          + ATmega32U4
          + ATmega32U4
          + ATmega16HVB
          + ATmega16HVB
          + ATmega4HVD
          + ATmega4HVD
          + ATmega8HVD
          + ATmega8HVD
          + ATmega64C1
          + ATmega64C1
          + ATmega64M1
          + ATmega64M1
          + ATmega16U4
          + ATmega16U4
          + ATmega32U6
          + ATmega32U6
          + ATmega128RFA1
          + ATmega128RFA1
          + AT90PWM81
          + AT90PWM81
          + AT90SCR100
          + AT90SCR100
          + M3000F
          + M3000F
          + M3000S
          + M3000S
          + M3001B
          + M3001B
  IA-32/x86-64
  IA-32/x86-64
     * Support for Intel AES built-in functions and code generation is
     * Support for Intel AES built-in functions and code generation is
       available via -maes.
       available via -maes.
     * Support for Intel PCLMUL built-in function and code generation is
     * Support for Intel PCLMUL built-in function and code generation is
       available via -mpclmul.
       available via -mpclmul.
     * Support for Intel AVX built-in functions and code generation is
     * Support for Intel AVX built-in functions and code generation is
       available via -mavx.
       available via -mavx.
     * Automatically align the stack for local variables with alignment
     * Automatically align the stack for local variables with alignment
       requirement.
       requirement.
     * GCC can now utilize the SVML library for vectorizing calls to a set
     * GCC can now utilize the SVML library for vectorizing calls to a set
       of C99 functions if -mveclibabi=svml is specified and you link to
       of C99 functions if -mveclibabi=svml is specified and you link to
       an SVML ABI compatible library.
       an SVML ABI compatible library.
     * On x86-64, the ABI has been changed in the following cases to
     * On x86-64, the ABI has been changed in the following cases to
       conform to the x86-64 ABI:
       conform to the x86-64 ABI:
          + Passing/returning structures with flexible array member:
          + Passing/returning structures with flexible array member:
  struct foo
  struct foo
    {
    {
      int i;
      int i;
      int flex[];
      int flex[];
    };
    };
          + Passing/returning structures with complex float member:
          + Passing/returning structures with complex float member:
  struct foo
  struct foo
    {
    {
      int i;
      int i;
      __complex__ float f;
      __complex__ float f;
    };
    };
          + Passing/returning unions with long double member:
          + Passing/returning unions with long double member:
  union foo
  union foo
    {
    {
      int x;
      int x;
      long double ld;
      long double ld;
    };
    };
       Code built with previous versions of GCC that uses any of these is
       Code built with previous versions of GCC that uses any of these is
       not compatible with code built with GCC 4.4.0 or later.
       not compatible with code built with GCC 4.4.0 or later.
     * A new target attribute was added to allow programmers to change the
     * A new target attribute was added to allow programmers to change the
       target options like -msse2 or -march=k8 for an individual function.
       target options like -msse2 or -march=k8 for an individual function.
       You can also change the target options via the GCC target pragma
       You can also change the target options via the GCC target pragma
       for functions defined after the pragma.
       for functions defined after the pragma.
     * GCC can now be configured with options --with-arch-32,
     * GCC can now be configured with options --with-arch-32,
       --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and
       --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and
       --with-tune-64 to control the default optimization separately for
       --with-tune-64 to control the default optimization separately for
       32-bit and 64-bit modes.
       32-bit and 64-bit modes.
  IA-32/IA64
  IA-32/IA64
     * Support for __float128 (TFmode) IEEE quad type and corresponding
     * Support for __float128 (TFmode) IEEE quad type and corresponding
       TCmode IEEE complex quad type is available via the soft-fp library
       TCmode IEEE complex quad type is available via the soft-fp library
       on IA-32/IA64 targets. This includes basic arithmetic operations
       on IA-32/IA64 targets. This includes basic arithmetic operations
       (addition, subtraction, negation, multiplication and division) on
       (addition, subtraction, negation, multiplication and division) on
       __float128 real and TCmode complex values, the full set of IEEE
       __float128 real and TCmode complex values, the full set of IEEE
       comparisons between __float128 values, conversions to and from
       comparisons between __float128 values, conversions to and from
       float, double and long double floating point types, as well as
       float, double and long double floating point types, as well as
       conversions to and from signed or unsigned integer, signed or
       conversions to and from signed or unsigned integer, signed or
       unsigned long integer and signed or unsigned quad (TImode, IA64
       unsigned long integer and signed or unsigned quad (TImode, IA64
       only) integer types. Additionally, all operations generate the full
       only) integer types. Additionally, all operations generate the full
       set of IEEE exceptions and support the full set of IEEE rounding
       set of IEEE exceptions and support the full set of IEEE rounding
       modes.
       modes.
  M68K/ColdFire
  M68K/ColdFire
     * GCC now supports instruction scheduling for ColdFire V1, V3 and V4
     * GCC now supports instruction scheduling for ColdFire V1, V3 and V4
       processors. (Scheduling support for ColdFire V2 processors was
       processors. (Scheduling support for ColdFire V2 processors was
       added in GCC 4.3.)
       added in GCC 4.3.)
     * GCC now supports the -mxgot option to support programs requiring
     * GCC now supports the -mxgot option to support programs requiring
       many GOT entries on ColdFire.
       many GOT entries on ColdFire.
     * The m68k-*-linux-gnu target now builds multilibs by default.
     * The m68k-*-linux-gnu target now builds multilibs by default.
  MIPS
  MIPS
     * MIPS Technologies have extended the original MIPS SVR4 ABI to
     * MIPS Technologies have extended the original MIPS SVR4 ABI to
       include support for procedure linkage tables (PLTs) and copy
       include support for procedure linkage tables (PLTs) and copy
       relocations. These extensions allow GNU/Linux executables to use a
       relocations. These extensions allow GNU/Linux executables to use a
       significantly more efficient code model than the one defined by the
       significantly more efficient code model than the one defined by the
       original ABI.
       original ABI.
       GCC support for this code model is available via a new command-line
       GCC support for this code model is available via a new command-line
       option, -mplt. There is also a new configure-time option,
       option, -mplt. There is also a new configure-time option,
       --with-mips-plt, to make -mplt the default.
       --with-mips-plt, to make -mplt the default.
       The new code model requires support from the assembler, the linker,
       The new code model requires support from the assembler, the linker,
       and the runtime C library. This support is available in binutils
       and the runtime C library. This support is available in binutils
       2.19 and GLIBC 2.9.
       2.19 and GLIBC 2.9.
     * GCC can now generate MIPS16 code for 32-bit GNU/Linux executables
     * GCC can now generate MIPS16 code for 32-bit GNU/Linux executables
       and 32-bit GNU/Linux shared libraries. This feature requires GNU
       and 32-bit GNU/Linux shared libraries. This feature requires GNU
       binutils 2.19 or above.
       binutils 2.19 or above.
     * Support for RMI's XLR processor is now available through the
     * Support for RMI's XLR processor is now available through the
       -march=xlr and -mtune=xlr options.
       -march=xlr and -mtune=xlr options.
     * 64-bit targets can now perform 128-bit multiplications inline,
     * 64-bit targets can now perform 128-bit multiplications inline,
       instead of relying on a libgcc function.
       instead of relying on a libgcc function.
     * Native GNU/Linux toolchains now support -march=native and
     * Native GNU/Linux toolchains now support -march=native and
       -mtune=native, which select the host processor.
       -mtune=native, which select the host processor.
     * GCC now supports the R10K, R12K, R14K and R16K processors. The
     * GCC now supports the R10K, R12K, R14K and R16K processors. The
       canonical -march= and -mtune= names for these processors are
       canonical -march= and -mtune= names for these processors are
       r10000, r12000, r14000 and r16000 respectively.
       r10000, r12000, r14000 and r16000 respectively.
     * GCC can now work around the side effects of speculative execution
     * GCC can now work around the side effects of speculative execution
       on R10K processors. Please see the documentation of the
       on R10K processors. Please see the documentation of the
       -mr10k-cache-barrier option for details.
       -mr10k-cache-barrier option for details.
     * Support for the MIPS64 Release 2 instruction set has been added.
     * Support for the MIPS64 Release 2 instruction set has been added.
       The option -march=mips64r2 enables generation of these
       The option -march=mips64r2 enables generation of these
       instructions.
       instructions.
     * GCC now supports Cavium Networks' Octeon processor. This support is
     * GCC now supports Cavium Networks' Octeon processor. This support is
       available through the -march=octeon and -mtune=octeon options.
       available through the -march=octeon and -mtune=octeon options.
     * GCC now supports STMicroelectronics' Loongson 2E/2F processors. The
     * GCC now supports STMicroelectronics' Loongson 2E/2F processors. The
       canonical -march= and -mtune= names for these processors are
       canonical -march= and -mtune= names for these processors are
       loongson2e and loongson2f.
       loongson2e and loongson2f.
  picochip
  picochip
   Picochip is a 16-bit processor. A typical picoChip contains over 250
   Picochip is a 16-bit processor. A typical picoChip contains over 250
   small cores, each with small amounts of memory. There are three
   small cores, each with small amounts of memory. There are three
   processor variants (STAN, MEM and CTRL) with different instruction sets
   processor variants (STAN, MEM and CTRL) with different instruction sets
   and memory configurations and they can be chosen using the -mae option.
   and memory configurations and they can be chosen using the -mae option.
   This port is intended to be a "C" only port.
   This port is intended to be a "C" only port.
  Power Architecture and PowerPC
  Power Architecture and PowerPC
     * GCC now supports the e300c2, e300c3 and e500mc processors.
     * GCC now supports the e300c2, e300c3 and e500mc processors.
     * GCC now supports Xilinx processors with a single-precision FPU.
     * GCC now supports Xilinx processors with a single-precision FPU.
     * Decimal floating point is now supported for e500 processors.
     * Decimal floating point is now supported for e500 processors.
  S/390, zSeries and System z9/z10
  S/390, zSeries and System z9/z10
     * Support for the IBM System z10 EC/BC processor has been added. When
     * Support for the IBM System z10 EC/BC processor has been added. When
       using the -march=z10 option, the compiler will generate code making
       using the -march=z10 option, the compiler will generate code making
       use of instructions provided by the General-Instruction-Extension
       use of instructions provided by the General-Instruction-Extension
       Facility and the Execute-Extension Facility.
       Facility and the Execute-Extension Facility.
  VxWorks
  VxWorks
     * GCC now supports the thread-local storage mechanism used on
     * GCC now supports the thread-local storage mechanism used on
       VxWorks.
       VxWorks.
  Xtensa
  Xtensa
     * GCC now supports thread-local storage (TLS) for Xtensa processor
     * GCC now supports thread-local storage (TLS) for Xtensa processor
       configurations that include the Thread Pointer option. TLS also
       configurations that include the Thread Pointer option. TLS also
       requires support from the assembler and linker; this support is
       requires support from the assembler and linker; this support is
       provided in the GNU binutils beginning with version 2.19.
       provided in the GNU binutils beginning with version 2.19.
Documentation improvements
Documentation improvements
Other significant improvements
Other significant improvements
GCC 4.4.1
GCC 4.4.1
   This is the [13]list of problem reports (PRs) from GCC's bug tracking
   This is the [13]list of problem reports (PRs) from GCC's bug tracking
   system that are known to be fixed in the 4.4.1 release. This list might
   system that are known to be fixed in the 4.4.1 release. This list might
   not be complete (that is, it is possible that some PRs that have been
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).
   fixed are not listed here).
GCC 4.4.2
GCC 4.4.2
   This is the [14]list of problem reports (PRs) from GCC's bug tracking
   This is the [14]list of problem reports (PRs) from GCC's bug tracking
   system that are known to be fixed in the 4.4.2 release. This list might
   system that are known to be fixed in the 4.4.2 release. This list might
   not be complete (that is, it is possible that some PRs that have been
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).
   fixed are not listed here).
GCC 4.4.3
GCC 4.4.3
   This is the [15]list of problem reports (PRs) from GCC's bug tracking
   This is the [15]list of problem reports (PRs) from GCC's bug tracking
   system that are known to be fixed in the 4.4.3 release. This list might
   system that are known to be fixed in the 4.4.3 release. This list might
   not be complete (that is, it is possible that some PRs that have been
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).
   fixed are not listed here).
GCC 4.4.4
GCC 4.4.4
   This is the [16]list of problem reports (PRs) from GCC's bug tracking
   This is the [16]list of problem reports (PRs) from GCC's bug tracking
   system that are known to be fixed in the 4.4.4 release. This list might
   system that are known to be fixed in the 4.4.4 release. This list might
   not be complete (that is, it is possible that some PRs that have been
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).
   fixed are not listed here).
   Please send FSF & GNU inquiries & questions to [17]gnu@gnu.org. There
   Please send FSF & GNU inquiries & questions to [17]gnu@gnu.org. There
   are also [18]other ways to contact the FSF.
   are also [18]other ways to contact the FSF.
   These pages are [19]maintained by the GCC team.
   These pages are [19]maintained by the GCC team.
    For questions related to the use of GCC, please consult these web
    For questions related to the use of GCC, please consult these web
    pages and the [20]GCC manuals. If that fails, the
    pages and the [20]GCC manuals. If that fails, the
    [21]gcc-help@gcc.gnu.org mailing list might help.
    [21]gcc-help@gcc.gnu.org mailing list might help.
    Please send comments on these web pages and the development of GCC to
    Please send comments on these web pages and the development of GCC to
    our developer mailing list at [22]gcc@gnu.org or [23]gcc@gcc.gnu.org.
    our developer mailing list at [22]gcc@gnu.org or [23]gcc@gcc.gnu.org.
    All of our lists have [24]public archives.
    All of our lists have [24]public archives.
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Floor, Boston, MA 02110, USA.
   Floor, Boston, MA 02110, USA.
   Verbatim copying and distribution of this entire article is permitted
   Verbatim copying and distribution of this entire article is permitted
   in any medium, provided this notice is preserved.
   in any medium, provided this notice is preserved.
   Last modified 2010-07-10 [25]Valid XHTML 1.0
   Last modified 2010-07-10 [25]Valid XHTML 1.0
References
References
   1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.4
   1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.4
   2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
   2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
   3. http://gcc.gnu.org/gcc-4.4/porting_to.html
   3. http://gcc.gnu.org/gcc-4.4/porting_to.html
   4. http://gcc.gnu.org/wiki/Graphite
   4. http://gcc.gnu.org/wiki/Graphite
   5. http://openmp.org/wp/openmp-specifications/
   5. http://openmp.org/wp/openmp-specifications/
   6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
   6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
   7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
   7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
   8. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#id476343
   8. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#id476343
   9. http://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
   9. http://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
  10. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
  10. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
  11. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
  11. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
  12. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
  12. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
  13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
  13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
  14. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
  14. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
  15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
  15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
  16. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
  16. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
  17. mailto:gnu@gnu.org
  17. mailto:gnu@gnu.org
  18. http://www.gnu.org/home.html#ContactInfo
  18. http://www.gnu.org/home.html#ContactInfo
  19. http://gcc.gnu.org/about.html
  19. http://gcc.gnu.org/about.html
  20. http://gcc.gnu.org/onlinedocs/
  20. http://gcc.gnu.org/onlinedocs/
  21. mailto:gcc-help@gcc.gnu.org
  21. mailto:gcc-help@gcc.gnu.org
  22. mailto:gcc@gnu.org
  22. mailto:gcc@gnu.org
  23. mailto:gcc@gcc.gnu.org
  23. mailto:gcc@gcc.gnu.org
  24. http://gcc.gnu.org/lists.html
  24. http://gcc.gnu.org/lists.html
  25. http://validator.w3.org/check/referer
  25. http://validator.w3.org/check/referer
======================================================================
======================================================================
http://gcc.gnu.org/gcc-4.3/index.html
http://gcc.gnu.org/gcc-4.3/index.html
                           GCC 4.3 Release Series
                           GCC 4.3 Release Series
   May 22, 2010
   May 22, 2010
   The [1]GNU project and the GCC developers are pleased to announce the
   The [1]GNU project and the GCC developers are pleased to announce the
   release of GCC 4.3.5.
   release of GCC 4.3.5.
   This release is a bug-fix release, containing fixes for regressions in
   This release is a bug-fix release, containing fixes for regressions in
   GCC 4.3.4 relative to previous releases of GCC.
   GCC 4.3.4 relative to previous releases of GCC.
Release History
Release History
   GCC 4.3.5
   GCC 4.3.5
          May 22, 2010 ([2]changes)
          May 22, 2010 ([2]changes)
   GCC 4.3.4
   GCC 4.3.4
          August 4, 2009 ([3]changes)
          August 4, 2009 ([3]changes)
   GCC 4.3.3
   GCC 4.3.3
          January 24, 2009 ([4]changes)
          January 24, 2009 ([4]changes)
   GCC 4.3.2
   GCC 4.3.2
          August 27, 2008 ([5]changes)
          August 27, 2008 ([5]changes)
   GCC 4.3.1
   GCC 4.3.1
          June 6, 2008 ([6]changes)
          June 6, 2008 ([6]changes)
   GCC 4.3.0
   GCC 4.3.0
          March 5, 2008 ([7]changes)
          March 5, 2008 ([7]changes)
References and Acknowledgements
References and Acknowledgements
   GCC used to stand for the GNU C Compiler, but since the compiler
   GCC used to stand for the GNU C Compiler, but since the compiler
   supports several other languages aside from C, it now stands for the
   supports several other languages aside from C, it now stands for the
   GNU Compiler Collection.
   GNU Compiler Collection.
   A list of [8]successful builds is updated as new information becomes
   A list of [8]successful builds is updated as new information becomes
   available.
   available.
   The GCC developers would like to thank the numerous people that have
   The GCC developers would like to thank the numerous people that have
   contributed new features, improvements, bug fixes, and other changes as
   contributed new features, improvements, bug fixes, and other changes as
   well as test results to GCC. This [9]amazing group of volunteers is
   well as test results to GCC. This [9]amazing group of volunteers is
   what makes GCC successful.
   what makes GCC successful.
   For additional information about GCC please refer to the [10]GCC
   For additional information about GCC please refer to the [10]GCC
   project web site or contact the [11]GCC development mailing list.
   project web site or contact the [11]GCC development mailing list.
   To obtain GCC please use [12]our mirror sites or [13]our SVN server.
   To obtain GCC please use [12]our mirror sites or [13]our SVN server.
   Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There
   Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There
   are also [15]other ways to contact the FSF.
   are also [15]other ways to contact the FSF.
   These pages are [16]maintained by the GCC team.
   These pages are [16]maintained by the GCC team.
    For questions related to the use of GCC, please consult these web
    For questions related to the use of GCC, please consult these web
    pages and the [17]GCC manuals. If that fails, the
    pages and the [17]GCC manuals. If that fails, the
    [18]gcc-help@gcc.gnu.org mailing list might help.
    [18]gcc-help@gcc.gnu.org mailing list might help.
    Please send comments on these web pages and the development of GCC to
    Please send comments on these web pages and the development of GCC to
    our developer mailing list at [19]gcc@gnu.org or [20]gcc@gcc.gnu.org.
    our developer mailing list at [19]gcc@gnu.org or [20]gcc@gcc.gnu.org.
    All of our lists have [21]public archives.
    All of our lists have [21]public archives.
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Floor, Boston, MA 02110, USA.
   Floor, Boston, MA 02110, USA.
   Verbatim copying and distribution of this entire article is permitted
   Verbatim copying and distribution of this entire article is permitted
   in any medium, provided this notice is preserved.
   in any medium, provided this notice is preserved.
   Last modified 2010-07-01 [22]Valid XHTML 1.0
   Last modified 2010-07-01 [22]Valid XHTML 1.0
References
References
   1. http://www.gnu.org/
   1. http://www.gnu.org/
   2. http://gcc.gnu.org/gcc-4.3/changes.html
   2. http://gcc.gnu.org/gcc-4.3/changes.html
   3. http://gcc.gnu.org/gcc-4.3/changes.html
   3. http://gcc.gnu.org/gcc-4.3/changes.html
   4. http://gcc.gnu.org/gcc-4.3/changes.html
   4. http://gcc.gnu.org/gcc-4.3/changes.html
   5. http://gcc.gnu.org/gcc-4.3/changes.html
   5. http://gcc.gnu.org/gcc-4.3/changes.html
   6. http://gcc.gnu.org/gcc-4.3/changes.html
   6. http://gcc.gnu.org/gcc-4.3/changes.html
   7. http://gcc.gnu.org/gcc-4.3/changes.html
   7. http://gcc.gnu.org/gcc-4.3/changes.html
   8. http://gcc.gnu.org/gcc-4.3/buildstat.html
   8. http://gcc.gnu.org/gcc-4.3/buildstat.html
   9. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   9. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
  10. http://gcc.gnu.org/index.html
  10. http://gcc.gnu.org/index.html
  11. mailto:gcc@gcc.gnu.org
  11. mailto:gcc@gcc.gnu.org
  12. http://gcc.gnu.org/mirrors.html
  12. http://gcc.gnu.org/mirrors.html
  13. http://gcc.gnu.org/svn.html
  13. http://gcc.gnu.org/svn.html
  14. mailto:gnu@gnu.org
  14. mailto:gnu@gnu.org
  15. http://www.gnu.org/home.html#ContactInfo
  15. http://www.gnu.org/home.html#ContactInfo
  16. http://gcc.gnu.org/about.html
  16. http://gcc.gnu.org/about.html
  17. http://gcc.gnu.org/onlinedocs/
  17. http://gcc.gnu.org/onlinedocs/
  18. mailto:gcc-help@gcc.gnu.org
  18. mailto:gcc-help@gcc.gnu.org
  19. mailto:gcc@gnu.org
  19. mailto:gcc@gnu.org
  20. mailto:gcc@gcc.gnu.org
  20. mailto:gcc@gcc.gnu.org
  21. http://gcc.gnu.org/lists.html
  21. http://gcc.gnu.org/lists.html
  22. http://validator.w3.org/check/referer
  22. http://validator.w3.org/check/referer
======================================================================
======================================================================
http://gcc.gnu.org/gcc-4.3/changes.html
http://gcc.gnu.org/gcc-4.3/changes.html
                           GCC 4.3 Release Series
                           GCC 4.3 Release Series
                      Changes, New Features, and Fixes
                      Changes, New Features, and Fixes
   The latest release in the 4.3 release series is [1]GCC 4.3.5.
   The latest release in the 4.3 release series is [1]GCC 4.3.5.
Caveats
Caveats
     * GCC requires the [2]GMP and [3]MPFR libraries for building all the
     * GCC requires the [2]GMP and [3]MPFR libraries for building all the
       various front-end languages it supports. See the [4]prerequisites
       various front-end languages it supports. See the [4]prerequisites
       page for version requirements.
       page for version requirements.
     * ColdFire targets now treat long double as having the same format as
     * ColdFire targets now treat long double as having the same format as
       double. In earlier versions of GCC, they used the 68881 long double
       double. In earlier versions of GCC, they used the 68881 long double
       format instead.
       format instead.
     * The m68k-uclinux target now uses the same calling conventions as
     * The m68k-uclinux target now uses the same calling conventions as
       m68k-linux-gnu. You can select the original calling conventions by
       m68k-linux-gnu. You can select the original calling conventions by
       configuring for m68k-uclinuxoldabi instead. Note that
       configuring for m68k-uclinuxoldabi instead. Note that
       m68k-uclinuxoldabi also retains the original 80-bit long double on
       m68k-uclinuxoldabi also retains the original 80-bit long double on
       ColdFire targets.
       ColdFire targets.
     * The -fforce-mem option has been removed because it has had no
     * The -fforce-mem option has been removed because it has had no
       effect in the last few GCC releases.
       effect in the last few GCC releases.
     * The i386 -msvr3-shlib option has been removed since it is no longer
     * The i386 -msvr3-shlib option has been removed since it is no longer
       used.
       used.
     * Fastcall for i386 has been changed not to pass aggregate arguments
     * Fastcall for i386 has been changed not to pass aggregate arguments
       in registers, following Microsoft compilers.
       in registers, following Microsoft compilers.
     * Support for the AOF assembler has been removed from the ARM back
     * Support for the AOF assembler has been removed from the ARM back
       end; this affects only the targets arm-semi-aof and armel-semi-aof,
       end; this affects only the targets arm-semi-aof and armel-semi-aof,
       which are no longer recognized. We removed these targets without a
       which are no longer recognized. We removed these targets without a
       deprecation period because we discovered that they have been
       deprecation period because we discovered that they have been
       unusable since GCC 4.0.0.
       unusable since GCC 4.0.0.
     * Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*)
     * Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*)
       has been removed. This support had been deprecated since GCC 4.0.0.
       has been removed. This support had been deprecated since GCC 4.0.0.
     * Support for a number of older systems and recently unmaintained or
     * Support for a number of older systems and recently unmaintained or
       untested target ports of GCC has been declared obsolete in GCC 4.3.
       untested target ports of GCC has been declared obsolete in GCC 4.3.
       Unless there is activity to revive them, the next release of GCC
       Unless there is activity to revive them, the next release of GCC
       will have their sources permanently removed.
       will have their sources permanently removed.
       All GCC ports for the following processor architectures have been
       All GCC ports for the following processor architectures have been
       declared obsolete:
       declared obsolete:
          + Morpho MT (mt-*)
          + Morpho MT (mt-*)
       The following aliases for processor architectures have been
       The following aliases for processor architectures have been
       declared obsolete. Users should use the indicated generic target
       declared obsolete. Users should use the indicated generic target
       names instead, with compile-time options such as -mcpu or
       names instead, with compile-time options such as -mcpu or
       configure-time options such as --with-cpu to control the
       configure-time options such as --with-cpu to control the
       configuration more precisely.
       configuration more precisely.
          + strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-*
          + strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-*
            instead).
            instead).
          + parisc*-*-* (use hppa*-*-* instead).
          + parisc*-*-* (use hppa*-*-* instead).
          + m680[012]0-*-* (use m68k-*-* instead).
          + m680[012]0-*-* (use m68k-*-* instead).
       All GCC ports for the following operating systems have been
       All GCC ports for the following operating systems have been
       declared obsolete:
       declared obsolete:
          + BeOS (*-*-beos*)
          + BeOS (*-*-beos*)
          + kaOS (*-*-kaos*)
          + kaOS (*-*-kaos*)
          + GNU/Linux using the a.out object format (*-*-linux*aout*)
          + GNU/Linux using the a.out object format (*-*-linux*aout*)
          + GNU/Linux using version 1 of the GNU C Library
          + GNU/Linux using version 1 of the GNU C Library
            (*-*-linux*libc1*)
            (*-*-linux*libc1*)
          + Solaris versions before Solaris 7 (*-*-solaris2.[0-6],
          + Solaris versions before Solaris 7 (*-*-solaris2.[0-6],
            *-*-solaris2.[0-6].*)
            *-*-solaris2.[0-6].*)
          + Miscellaneous System V (*-*-sysv*)
          + Miscellaneous System V (*-*-sysv*)
          + WindISS (*-*-windiss*)
          + WindISS (*-*-windiss*)
       Also, those for some individual systems on particular architectures
       Also, those for some individual systems on particular architectures
       have been obsoleted:
       have been obsoleted:
          + UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*)
          + UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*)
          + CRIS with a.out object format (cris-*-aout)
          + CRIS with a.out object format (cris-*-aout)
          + BSD 4.3 on PA-RISC (hppa1.1-*-bsd*)
          + BSD 4.3 on PA-RISC (hppa1.1-*-bsd*)
          + OSF/1 on PA-RISC (hppa1.1-*-osf*)
          + OSF/1 on PA-RISC (hppa1.1-*-osf*)
          + PRO on PA-RISC (hppa1.1-*-pro*)
          + PRO on PA-RISC (hppa1.1-*-pro*)
          + Sequent PTX on IA32 (i[34567]86-sequent-ptx4*,
          + Sequent PTX on IA32 (i[34567]86-sequent-ptx4*,
            i[34567]86-sequent-sysv4*)
            i[34567]86-sequent-sysv4*)
          + SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*)
          + SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*)
          + UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host
          + UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host
            was previously [5]removed in 2001, leaving only the support
            was previously [5]removed in 2001, leaving only the support
            for UWIN as a target now being deprecated)
            for UWIN as a target now being deprecated)
          + ChorusOS on PowerPC (powerpc-*-chorusos*)
          + ChorusOS on PowerPC (powerpc-*-chorusos*)
          + All VAX configurations apart from NetBSD and OpenBSD
          + All VAX configurations apart from NetBSD and OpenBSD
            (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*)
            (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*)
     * The [6]-Wconversion option has been modified. Its purpose now is to
     * The [6]-Wconversion option has been modified. Its purpose now is to
       warn for implicit conversions that may alter a value. This new
       warn for implicit conversions that may alter a value. This new
       behavior is available for both C and C++. Warnings about
       behavior is available for both C and C++. Warnings about
       conversions between signed and unsigned integers can be disabled by
       conversions between signed and unsigned integers can be disabled by
       using -Wno-sign-conversion. In C++, they are disabled by default
       using -Wno-sign-conversion. In C++, they are disabled by default
       unless -Wsign-conversion is explicitly requested. The old behavior
       unless -Wsign-conversion is explicitly requested. The old behavior
       of -Wconversion, that is, warn for prototypes causing a type
       of -Wconversion, that is, warn for prototypes causing a type
       conversion that is different from what would happen to the same
       conversion that is different from what would happen to the same
       argument in the absence of a prototype, has been moved to a new
       argument in the absence of a prototype, has been moved to a new
       option -Wtraditional-conversion, which is only available for C.
       option -Wtraditional-conversion, which is only available for C.
     * The -m386, -m486, -mpentium and -mpentiumpro tuning options have
     * The -m386, -m486, -mpentium and -mpentiumpro tuning options have
       been removed because they were deprecated for more than 3 GCC major
       been removed because they were deprecated for more than 3 GCC major
       releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or
       releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or
       -mtune=pentiumpro as a replacement.
       -mtune=pentiumpro as a replacement.
     * The -funsafe-math-optimizations option now automatically turns on
     * The -funsafe-math-optimizations option now automatically turns on
       -fno-trapping-math in addition to -fno-signed-zeros, as it enables
       -fno-trapping-math in addition to -fno-signed-zeros, as it enables
       reassociation and thus may introduce or remove traps.
       reassociation and thus may introduce or remove traps.
     * The -ftree-vectorize option is now on by default under -O3. In
     * The -ftree-vectorize option is now on by default under -O3. In
       order to generate code for a SIMD extension, it has to be enabled
       order to generate code for a SIMD extension, it has to be enabled
       as well: use -maltivec for PowerPC platforms and -msse/-msse2 for
       as well: use -maltivec for PowerPC platforms and -msse/-msse2 for
       i?86 and x86_64.
       i?86 and x86_64.
     * More information on porting to GCC 4.3 from previous versions of
     * More information on porting to GCC 4.3 from previous versions of
       GCC can be found in the [7]porting guide for this release.
       GCC can be found in the [7]porting guide for this release.
General Optimizer Improvements
General Optimizer Improvements
     * The GCC middle-end has been integrated with the [8]MPFR library.
     * The GCC middle-end has been integrated with the [8]MPFR library.
       This allows GCC to evaluate and replace at compile-time calls to
       This allows GCC to evaluate and replace at compile-time calls to
       built-in math functions having constant arguments with their
       built-in math functions having constant arguments with their
       mathematically equivalent results. In making use of [9]MPFR, GCC
       mathematically equivalent results. In making use of [9]MPFR, GCC
       can generate correct results regardless of the math library
       can generate correct results regardless of the math library
       implementation or floating point precision of the host platform.
       implementation or floating point precision of the host platform.
       This also allows GCC to generate identical results regardless of
       This also allows GCC to generate identical results regardless of
       whether one compiles in native or cross-compile configurations to a
       whether one compiles in native or cross-compile configurations to a
       particular target. The following built-in functions take advantage
       particular target. The following built-in functions take advantage
       of this new capability: acos, acosh, asin, asinh, atan2, atan,
       of this new capability: acos, acosh, asin, asinh, atan2, atan,
       atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1,
       atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1,
       fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10,
       fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10,
       log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh,
       log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh,
       tan, tanh, tgamma, y0, y1 and yn. The float and long double
       tan, tanh, tgamma, y0, y1 and yn. The float and long double
       variants of these functions (e.g. sinf and sinl) are also handled.
       variants of these functions (e.g. sinf and sinl) are also handled.
       The sqrt and cabs functions with constant arguments were already
       The sqrt and cabs functions with constant arguments were already
       optimized in prior GCC releases. Now they also use [10]MPFR.
       optimized in prior GCC releases. Now they also use [10]MPFR.
     * A new forward propagation pass on RTL was added. The new pass
     * A new forward propagation pass on RTL was added. The new pass
       replaces several slower transformations, resulting in compile-time
       replaces several slower transformations, resulting in compile-time
       improvements as well as better code generation in some cases.
       improvements as well as better code generation in some cases.
     * A new command-line switch -frecord-gcc-switches has been added to
     * A new command-line switch -frecord-gcc-switches has been added to
       GCC, although it is only enabled for some targets. The switch
       GCC, although it is only enabled for some targets. The switch
       causes the command line that was used to invoke the compiler to be
       causes the command line that was used to invoke the compiler to be
       recorded into the object file that is being created. The exact
       recorded into the object file that is being created. The exact
       format of this recording is target and binary file format
       format of this recording is target and binary file format
       dependent, but it usually takes the form of a note section
       dependent, but it usually takes the form of a note section
       containing ASCII text. The switch is related to the -fverbose-asm
       containing ASCII text. The switch is related to the -fverbose-asm
       switch, but that one only records the information in the assembler
       switch, but that one only records the information in the assembler
       output file as comments, so the information never reaches the
       output file as comments, so the information never reaches the
       object file.
       object file.
     * The inliner heuristic is now aware of stack frame consumption. New
     * The inliner heuristic is now aware of stack frame consumption. New
       command-line parameters --param large-stack-frame and --param
       command-line parameters --param large-stack-frame and --param
       large-stack-frame-growth can be used to limit stack frame size
       large-stack-frame-growth can be used to limit stack frame size
       growth caused by inlining.
       growth caused by inlining.
     * During feedback directed optimizations, the expected block size the
     * During feedback directed optimizations, the expected block size the
       memcpy, memset and bzero functions operate on is discovered and for
       memcpy, memset and bzero functions operate on is discovered and for
       cases of commonly used small sizes, specialized inline code is
       cases of commonly used small sizes, specialized inline code is
       generated.
       generated.
     * __builtin_expect no longer requires its argument to be a compile
     * __builtin_expect no longer requires its argument to be a compile
       time constant.
       time constant.
     * Interprocedural optimization was reorganized to work on functions
     * Interprocedural optimization was reorganized to work on functions
       in SSA form. This enables more precise and cheaper dataflow
       in SSA form. This enables more precise and cheaper dataflow
       analysis and makes writing interprocedural optimizations easier.
       analysis and makes writing interprocedural optimizations easier.
       The following improvements have been implemented on top of this
       The following improvements have been implemented on top of this
       framework:
       framework:
          + Pre-inline optimization: Selected local optimization passes
          + Pre-inline optimization: Selected local optimization passes
            are run before the inliner (and other interprocedural passes)
            are run before the inliner (and other interprocedural passes)
            are executed. This significantly improves the accuracy of code
            are executed. This significantly improves the accuracy of code
            growth estimates used by the inliner and reduces the overall
            growth estimates used by the inliner and reduces the overall
            memory footprint for large compilation units.
            memory footprint for large compilation units.
          + Early inlining (a simple bottom-up inliner pass inlining only
          + Early inlining (a simple bottom-up inliner pass inlining only
            functions whose body is smaller than the expected call
            functions whose body is smaller than the expected call
            overhead) is now executed with the early optimization passes,
            overhead) is now executed with the early optimization passes,
            thus inlining already optimized function bodies into an
            thus inlining already optimized function bodies into an
            unoptimized function that is subsequently optimized by early
            unoptimized function that is subsequently optimized by early
            optimizers. This enables the compiler to quickly eliminate
            optimizers. This enables the compiler to quickly eliminate
            abstraction penalty in C++ programs.
            abstraction penalty in C++ programs.
          + Interprocedural constant propagation now operate on SSA form
          + Interprocedural constant propagation now operate on SSA form
            increasing accuracy of the analysis.
            increasing accuracy of the analysis.
     * A new internal representation for GIMPLE statements has been
     * A new internal representation for GIMPLE statements has been
       contributed, resulting in compile-time memory savings.
       contributed, resulting in compile-time memory savings.
     * The vectorizer was enhanced to support vectorization of outer
     * The vectorizer was enhanced to support vectorization of outer
       loops, intra-iteration parallelism (loop-aware SLP), vectorization
       loops, intra-iteration parallelism (loop-aware SLP), vectorization
       of strided accesses and loops with multiple data-types. Run-time
       of strided accesses and loops with multiple data-types. Run-time
       dependency testing using loop versioning was added. The cost model,
       dependency testing using loop versioning was added. The cost model,
       turned on by -fvect-cost-model, was developed.
       turned on by -fvect-cost-model, was developed.
New Languages and Language specific improvements
New Languages and Language specific improvements
     * We have added new command-line options
     * We have added new command-line options
       -finstrument-functions-exclude-function-list and
       -finstrument-functions-exclude-function-list and
       -finstrument-functions-exclude-file-list. They provide more control
       -finstrument-functions-exclude-file-list. They provide more control
       over which functions are annotated by the -finstrument-functions
       over which functions are annotated by the -finstrument-functions
       option.
       option.
  C family
  C family
     * Implicit conversions between generic vector types are now only
     * Implicit conversions between generic vector types are now only
       permitted when the two vectors in question have the same number of
       permitted when the two vectors in question have the same number of
       elements and compatible element types. (Note that the restriction
       elements and compatible element types. (Note that the restriction
       involves compatible element types, not implicitly-convertible
       involves compatible element types, not implicitly-convertible
       element types: thus, a vector type with element type int may not be
       element types: thus, a vector type with element type int may not be
       implicitly converted to a vector type with element type unsigned
       implicitly converted to a vector type with element type unsigned
       int.) This restriction, which is in line with specifications for
       int.) This restriction, which is in line with specifications for
       SIMD architectures such as AltiVec, may be relaxed using the flag
       SIMD architectures such as AltiVec, may be relaxed using the flag
       -flax-vector-conversions. This flag is intended only as a
       -flax-vector-conversions. This flag is intended only as a
       compatibility measure and should not be used for new code.
       compatibility measure and should not be used for new code.
     * -Warray-bounds has been added and is now enabled by default for
     * -Warray-bounds has been added and is now enabled by default for
       -Wall . It produces warnings for array subscripts that can be
       -Wall . It produces warnings for array subscripts that can be
       determined at compile time to be always out of bounds.
       determined at compile time to be always out of bounds.
       -Wno-array-bounds will disable the warning.
       -Wno-array-bounds will disable the warning.
     * The constructor and destructor function attributes now accept
     * The constructor and destructor function attributes now accept
       optional priority arguments which control the order in which the
       optional priority arguments which control the order in which the
       constructor and destructor functions are run.
       constructor and destructor functions are run.
     * New [11]command-line options -Wtype-limits,
     * New [11]command-line options -Wtype-limits,
       -Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body,
       -Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body,
       -Wclobbered and -Wignored-qualifiers have been added for finer
       -Wclobbered and -Wignored-qualifiers have been added for finer
       control of the diverse warnings enabled by -Wextra.
       control of the diverse warnings enabled by -Wextra.
     * A new function attribute alloc_size has been added to mark up
     * A new function attribute alloc_size has been added to mark up
       malloc style functions. For constant sized allocations this can be
       malloc style functions. For constant sized allocations this can be
       used to find out the size of the returned pointer using the
       used to find out the size of the returned pointer using the
       __builtin_object_size() function for buffer overflow checking and
       __builtin_object_size() function for buffer overflow checking and
       similar. This supplements the already built-in malloc and calloc
       similar. This supplements the already built-in malloc and calloc
       constant size handling.
       constant size handling.
     * Integer constants written in binary are now supported as a GCC
     * Integer constants written in binary are now supported as a GCC
       extension. They consist of a prefix 0b or 0B, followed by a
       extension. They consist of a prefix 0b or 0B, followed by a
       sequence of 0 and 1 digits.
       sequence of 0 and 1 digits.
     * A new predefined macro __COUNTER__ has been added. It expands to
     * A new predefined macro __COUNTER__ has been added. It expands to
       sequential integral values starting from 0. In conjunction with the
       sequential integral values starting from 0. In conjunction with the
       ## operator, this provides a convenient means to generate unique
       ## operator, this provides a convenient means to generate unique
       identifiers.
       identifiers.
     * A new command-line option -fdirectives-only has been added. It
     * A new command-line option -fdirectives-only has been added. It
       enables a special preprocessing mode which improves the performance
       enables a special preprocessing mode which improves the performance
       of applications like distcc and ccache.
       of applications like distcc and ccache.
     * Fixed-point data types and operators have been added. They are
     * Fixed-point data types and operators have been added. They are
       based on Chapter 4 of the Embedded-C specification (n1169.pdf).
       based on Chapter 4 of the Embedded-C specification (n1169.pdf).
       Currently, only MIPS targets are supported.
       Currently, only MIPS targets are supported.
     * Decimal floating-point arithmetic based on draft ISO/IEC TR 24732,
     * Decimal floating-point arithmetic based on draft ISO/IEC TR 24732,
       N1241, is now supported as a GCC extension to C for targets
       N1241, is now supported as a GCC extension to C for targets
       i[34567]86-*-linux-gnu, powerpc*-*-linux-gnu, s390*-ibm-linux-gnu,
       i[34567]86-*-linux-gnu, powerpc*-*-linux-gnu, s390*-ibm-linux-gnu,
       and x86_64-*-linux-gnu. The feature introduces new data types
       and x86_64-*-linux-gnu. The feature introduces new data types
       _Decimal32, _Decimal64, and _Decimal128 with constant suffixes DF,
       _Decimal32, _Decimal64, and _Decimal128 with constant suffixes DF,
       DD, and DL.
       DD, and DL.
  C++
  C++
     * [12]Experimental support for the upcoming ISO C++ standard, C++0x.
     * [12]Experimental support for the upcoming ISO C++ standard, C++0x.
     * -Wc++0x-compat has been added and is now enabled by default for
     * -Wc++0x-compat has been added and is now enabled by default for
       -Wall. It produces warnings for constructs whose meaning differs
       -Wall. It produces warnings for constructs whose meaning differs
       between ISO C++ 1998 and C++0x.
       between ISO C++ 1998 and C++0x.
     * The -Wparentheses option now works for C++ as it does for C. It
     * The -Wparentheses option now works for C++ as it does for C. It
       warns if parentheses are omitted when operators with confusing
       warns if parentheses are omitted when operators with confusing
       precedence are nested. It also warns about ambiguous else
       precedence are nested. It also warns about ambiguous else
       statements. Since -Wparentheses is enabled by -Wall, this may cause
       statements. Since -Wparentheses is enabled by -Wall, this may cause
       additional warnings with existing C++ code which uses -Wall. These
       additional warnings with existing C++ code which uses -Wall. These
       new warnings may be disabled by using -Wall -Wno-parentheses.
       new warnings may be disabled by using -Wall -Wno-parentheses.
     * The -Wmissing-declarations now works for C++ as it does for C.
     * The -Wmissing-declarations now works for C++ as it does for C.
     * The -fvisibility-ms-compat flag was added, to make it easier to
     * The -fvisibility-ms-compat flag was added, to make it easier to
       port larger projects using shared libraries from Microsoft's Visual
       port larger projects using shared libraries from Microsoft's Visual
       Studio to ELF and Mach-O systems.
       Studio to ELF and Mach-O systems.
     * C++ attribute handling has been overhauled for template arguments
     * C++ attribute handling has been overhauled for template arguments
       (ie dependent types). In particular, __attribute__((aligned(T)));
       (ie dependent types). In particular, __attribute__((aligned(T)));
       works for C++ types.
       works for C++ types.
    Runtime Library (libstdc++)
    Runtime Library (libstdc++)
     * [13]Experimental support for the upcoming ISO C++ standard, C++0x.
     * [13]Experimental support for the upcoming ISO C++ standard, C++0x.
     * Support for TR1 mathematical special functions and regular
     * Support for TR1 mathematical special functions and regular
       expressions. ([14]Implementation status of TR1)
       expressions. ([14]Implementation status of TR1)
     * Default what implementations give more elaborate exception strings
     * Default what implementations give more elaborate exception strings
       for bad_cast, bad_typeid, bad_exception, and bad_alloc.
       for bad_cast, bad_typeid, bad_exception, and bad_alloc.
     * Header dependencies have been streamlined, reducing unnecessary
     * Header dependencies have been streamlined, reducing unnecessary
       includes and pre-processed bloat.
       includes and pre-processed bloat.
     * Variadic template implementations of items in  and
     * Variadic template implementations of items in  and
       .
       .
     * An experimental [15]parallel mode has been added. This is a
     * An experimental [15]parallel mode has been added. This is a
       parallel implementation of many C++ Standard library algorithms,
       parallel implementation of many C++ Standard library algorithms,
       like std::accumulate, std::for_each, std::transform, or std::sort,
       like std::accumulate, std::for_each, std::transform, or std::sort,
       to give but four examples. These algorithms can be substituted for
       to give but four examples. These algorithms can be substituted for
       the normal (sequential) libstdc++ algorithms on a piecemeal basis,
       the normal (sequential) libstdc++ algorithms on a piecemeal basis,
       or all existing algorithms can be transformed via the
       or all existing algorithms can be transformed via the
       -D_GLIBCXX_PARALLEL macro.
       -D_GLIBCXX_PARALLEL macro.
     * Debug mode versions of classes in  and
     * Debug mode versions of classes in  and
       .
       .
     * Formal deprecation of  and , which are
     * Formal deprecation of  and , which are
       now  and . This code:
       now  and . This code:
    #include 
    #include 
    __gnu_cxx::hash_set s;
    __gnu_cxx::hash_set s;
       Can be transformed (in order of preference) to:
       Can be transformed (in order of preference) to:
    #include 
    #include 
    std::tr1::unordered_set s;
    std::tr1::unordered_set s;
       or
       or
    #include 
    #include 
    __gnu_cxx::hash_set s;
    __gnu_cxx::hash_set s;
       Similar transformations apply to __gnu_cxx::hash_map,
       Similar transformations apply to __gnu_cxx::hash_map,
       __gnu_cxx::hash_multimap, __gnu_cxx::hash_set,
       __gnu_cxx::hash_multimap, __gnu_cxx::hash_set,
       __gnu_cxx::hash_multiset.
       __gnu_cxx::hash_multiset.
  Fortran
  Fortran
     * Due to the fact that the [16]GMP and [17]MPFR libraries are
     * Due to the fact that the [16]GMP and [17]MPFR libraries are
       required for all languages, Fortran is no longer special in this
       required for all languages, Fortran is no longer special in this
       regard and is available by default.
       regard and is available by default.
     * The [18]-fexternal-blas option has been added, which generates
     * The [18]-fexternal-blas option has been added, which generates
       calls to BLAS routines for intrinsic matrix operations such as
       calls to BLAS routines for intrinsic matrix operations such as
       matmul rather than using the built-in algorithms.
       matmul rather than using the built-in algorithms.
     * Support to give a backtrace (compiler flag -fbacktrace or
     * Support to give a backtrace (compiler flag -fbacktrace or
       environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems
       environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems
       only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a
       only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a
       run-time error occured.
       run-time error occured.
     * GNU Fortran now defines __GFORTRAN__ when it runs the C
     * GNU Fortran now defines __GFORTRAN__ when it runs the C
       preprocessor (CPP).
       preprocessor (CPP).
     * The [19]-finit-local-zero, -finit-real, -finit-integer,
     * The [19]-finit-local-zero, -finit-real, -finit-integer,
       -finit-character, and -finit-logical options have been added, which
       -finit-character, and -finit-logical options have been added, which
       can be used to initialize local variables.
       can be used to initialize local variables.
     * The intrinsic procedures [20]GAMMA and [21]LGAMMA have been added,
     * The intrinsic procedures [20]GAMMA and [21]LGAMMA have been added,
       which calculate the Gamma function and its logarithm. Use EXTERNAL
       which calculate the Gamma function and its logarithm. Use EXTERNAL
       gamma if you want to use your own gamma function.
       gamma if you want to use your own gamma function.
     * GNU Fortran now regards the backslash character as literal (as
     * GNU Fortran now regards the backslash character as literal (as
       required by the Fortran 2003 standard); using [22]-fbackslash GNU
       required by the Fortran 2003 standard); using [22]-fbackslash GNU
       Fortran interprets backslashes as C-style escape characters.
       Fortran interprets backslashes as C-style escape characters.
     * The [23]interpretation of binary, octal and hexadecimal (BOZ)
     * The [23]interpretation of binary, octal and hexadecimal (BOZ)
       literal constants has been changed. Before they were always
       literal constants has been changed. Before they were always
       interpreted as integer; now they are bit-wise transferred as
       interpreted as integer; now they are bit-wise transferred as
       argument of INT, REAL, DBLE and CMPLX as required by the Fortran
       argument of INT, REAL, DBLE and CMPLX as required by the Fortran
       2003 standard, and for real and complex variables in DATA
       2003 standard, and for real and complex variables in DATA
       statements or when directly assigned to real and complex variables.
       statements or when directly assigned to real and complex variables.
       Everywhere else and especially in expressions they are still
       Everywhere else and especially in expressions they are still
       regarded as integer constants.
       regarded as integer constants.
     * Fortran 2003 support has been extended:
     * Fortran 2003 support has been extended:
          + Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE
          + Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE
          + Pointer intent
          + Pointer intent
          + Intrinsic module ISO_ENV_FORTRAN
          + Intrinsic module ISO_ENV_FORTRAN
          + Interoperability with C (ISO C Bindings)
          + Interoperability with C (ISO C Bindings)
          + ABSTRACT INTERFACES and PROCEDURE statements (without POINTER
          + ABSTRACT INTERFACES and PROCEDURE statements (without POINTER
            attribute)
            attribute)
          + Fortran 2003 BOZ
          + Fortran 2003 BOZ
  Java (GCJ)
  Java (GCJ)
     * GCJ now uses the Eclipse Java compiler for its Java parsing needs.
     * GCJ now uses the Eclipse Java compiler for its Java parsing needs.
       This enables the use of all 1.5 language features, and fixes most
       This enables the use of all 1.5 language features, and fixes most
       existing front end bugs.
       existing front end bugs.
     * libgcj now supports all 1.5 language features which require runtime
     * libgcj now supports all 1.5 language features which require runtime
       support: foreach, enum, annotations, generics, and auto-boxing.
       support: foreach, enum, annotations, generics, and auto-boxing.
     * We've made many changes to the tools shipped with gcj.
     * We've made many changes to the tools shipped with gcj.
          + The old jv-scan tool has been removed. This tool never really
          + The old jv-scan tool has been removed. This tool never really
            worked properly. There is no replacement.
            worked properly. There is no replacement.
          + gcjh has been rewritten. Some of its more obscure options no
          + gcjh has been rewritten. Some of its more obscure options no
            longer work, but are still recognized in an attempt at
            longer work, but are still recognized in an attempt at
            compatibility. gjavah is a new program with similar
            compatibility. gjavah is a new program with similar
            functionality but different command-line options.
            functionality but different command-line options.
          + grmic and grmiregistry have been rewritten. grmid has been
          + grmic and grmiregistry have been rewritten. grmid has been
            added.
            added.
          + gjar replaces the old fastjar.
          + gjar replaces the old fastjar.
          + gjarsigner (used for signing jars), gkeytool (used for key
          + gjarsigner (used for signing jars), gkeytool (used for key
            management), gorbd (for CORBA), gserialver (computes
            management), gorbd (for CORBA), gserialver (computes
            serialization UIDs), and gtnameserv (also for CORBA) are now
            serialization UIDs), and gtnameserv (also for CORBA) are now
            installed.
            installed.
     * The ability to dump the contents of the java run time heap to a
     * The ability to dump the contents of the java run time heap to a
       file for off-line analysis has been added. The heap dumps may be
       file for off-line analysis has been added. The heap dumps may be
       analyzed with the new gc-analyze tool. They may be generated on
       analyzed with the new gc-analyze tool. They may be generated on
       out-of-memory conditions or on demand and are controlled by the new
       out-of-memory conditions or on demand and are controlled by the new
       run time class gnu.gcj.util.GCInfo.
       run time class gnu.gcj.util.GCInfo.
     * java.util.TimeZone can now read files from /usr/share/zoneinfo to
     * java.util.TimeZone can now read files from /usr/share/zoneinfo to
       provide correct, updated, timezone information. This means that
       provide correct, updated, timezone information. This means that
       packagers no longer have to update libgcj when a time zone change
       packagers no longer have to update libgcj when a time zone change
       is published.
       is published.
New Targets and Target Specific Improvements
New Targets and Target Specific Improvements
  IA-32/x86-64
  IA-32/x86-64
     * Tuning for Intel Core 2 processors is available via -mtune=core2
     * Tuning for Intel Core 2 processors is available via -mtune=core2
       and -march=core2.
       and -march=core2.
     * Tuning for AMD Geode processors is available via -mtune=geode and
     * Tuning for AMD Geode processors is available via -mtune=geode and
       -march=geode.
       -march=geode.
     * Code generation of block move (memcpy) and block set (memset) was
     * Code generation of block move (memcpy) and block set (memset) was
       rewritten. GCC can now pick the best algorithm (loop, unrolled
       rewritten. GCC can now pick the best algorithm (loop, unrolled
       loop, instruction with rep prefix or a library call) based on the
       loop, instruction with rep prefix or a library call) based on the
       size of the block being copied and the CPU being optimized for. A
       size of the block being copied and the CPU being optimized for. A
       new option -minline-stringops-dynamically has been added. With this
       new option -minline-stringops-dynamically has been added. With this
       option string operations of unknown size are expanded such that
       option string operations of unknown size are expanded such that
       small blocks are copied by in-line code, while for large blocks a
       small blocks are copied by in-line code, while for large blocks a
       library call is used. This results in faster code than
       library call is used. This results in faster code than
       -minline-all-stringops when the library implementation is capable
       -minline-all-stringops when the library implementation is capable
       of using cache hierarchy hints. The heuristic choosing the
       of using cache hierarchy hints. The heuristic choosing the
       particular algorithm can be overwritten via -mstringop-strategy.
       particular algorithm can be overwritten via -mstringop-strategy.
       Newly also memset of values different from 0 is inlined.
       Newly also memset of values different from 0 is inlined.
     * GCC no longer places the cld instruction before string operations.
     * GCC no longer places the cld instruction before string operations.
       Both i386 and x86-64 ABI documents mandate the direction flag to be
       Both i386 and x86-64 ABI documents mandate the direction flag to be
       clear at the entry of a function. It is now invalid to set the flag
       clear at the entry of a function. It is now invalid to set the flag
       in asm statement without reseting it afterward.
       in asm statement without reseting it afterward.
     * Support for SSSE3 built-in functions and code generation are
     * Support for SSSE3 built-in functions and code generation are
       available via -mssse3.
       available via -mssse3.
     * Support for SSE4.1 built-in functions and code generation are
     * Support for SSE4.1 built-in functions and code generation are
       available via -msse4.1.
       available via -msse4.1.
     * Support for SSE4.2 built-in functions and code generation are
     * Support for SSE4.2 built-in functions and code generation are
       available via -msse4.2.
       available via -msse4.2.
     * Both SSE4.1 and SSE4.2 support can be enabled via -msse4.
     * Both SSE4.1 and SSE4.2 support can be enabled via -msse4.
     * A new set of options -mpc32, -mpc64 and -mpc80 have been added to
     * A new set of options -mpc32, -mpc64 and -mpc80 have been added to
       allow explicit control of x87 floating point precision.
       allow explicit control of x87 floating point precision.
     * Support for __float128 (TFmode) IEEE quad type and corresponding
     * Support for __float128 (TFmode) IEEE quad type and corresponding
       TCmode IEEE complex quad type is available via the soft-fp library
       TCmode IEEE complex quad type is available via the soft-fp library
       on x86_64 targets. This includes basic arithmetic operations
       on x86_64 targets. This includes basic arithmetic operations
       (addition, subtraction, negation, multiplication and division) on
       (addition, subtraction, negation, multiplication and division) on
       __float128 real and TCmode complex values, the full set of IEEE
       __float128 real and TCmode complex values, the full set of IEEE
       comparisons between __float128 values, conversions to and from
       comparisons between __float128 values, conversions to and from
       float, double and long double floating point types, as well as
       float, double and long double floating point types, as well as
       conversions to and from signed or unsigned integer, signed or
       conversions to and from signed or unsigned integer, signed or
       unsigned long integer and signed or unsigned quad (TImode) integer
       unsigned long integer and signed or unsigned quad (TImode) integer
       types. Additionally, all operations generate the full set of IEEE
       types. Additionally, all operations generate the full set of IEEE
       exceptions and support the full set of IEEE rounding modes.
       exceptions and support the full set of IEEE rounding modes.
     * GCC can now utilize the ACML library for vectorizing calls to a set
     * GCC can now utilize the ACML library for vectorizing calls to a set
       of C99 functions on x86_64 if -mveclibabi=acml is specified and you
       of C99 functions on x86_64 if -mveclibabi=acml is specified and you
       link to an ACML ABI compatible library.
       link to an ACML ABI compatible library.
  ARM
  ARM
     * Compiler and Library support for Thumb-2 and the ARMv7 architecture
     * Compiler and Library support for Thumb-2 and the ARMv7 architecture
       has been added.
       has been added.
  CRIS
  CRIS
    New features
    New features
     * Compiler and Library support for the CRIS v32 architecture, as
     * Compiler and Library support for the CRIS v32 architecture, as
       found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been
       found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been
       added.
       added.
    Configuration changes
    Configuration changes
     * The cris-*-elf target now includes support for CRIS v32, including
     * The cris-*-elf target now includes support for CRIS v32, including
       libraries, through the -march=v32 option.
       libraries, through the -march=v32 option.
     * A new crisv32-*-elf target defaults to generate code for CRIS v32.
     * A new crisv32-*-elf target defaults to generate code for CRIS v32.
     * A new crisv32-*-linux* target defaults to generate code for CRIS
     * A new crisv32-*-linux* target defaults to generate code for CRIS
       v32.
       v32.
     * The cris-*-aout target has been obsoleted.
     * The cris-*-aout target has been obsoleted.
    Improved support for built-in functions
    Improved support for built-in functions
     * GCC can now use the lz and swapwbr instructions to implement the
     * GCC can now use the lz and swapwbr instructions to implement the
       __builtin_clz, __builtin_ctz and __builtin_ffs family of functions.
       __builtin_clz, __builtin_ctz and __builtin_ffs family of functions.
     * __builtin_bswap32 is now implemented using the swapwb instruction,
     * __builtin_bswap32 is now implemented using the swapwb instruction,
       when available.
       when available.
  m68k and ColdFire
  m68k and ColdFire
    New features
    New features
     * Support for several new ColdFire processors has been added. You can
     * Support for several new ColdFire processors has been added. You can
       generate code for them using the new -mcpu option.
       generate code for them using the new -mcpu option.
     * All targets now support ColdFire processors.
     * All targets now support ColdFire processors.
     * m68k-uclinux targets have improved support for C++ constructors and
     * m68k-uclinux targets have improved support for C++ constructors and
       destructors, and for shared libraries.
       destructors, and for shared libraries.
     * It is now possible to set breakpoints on the first or last line of
     * It is now possible to set breakpoints on the first or last line of
       a function, even if there are no statements on that line.
       a function, even if there are no statements on that line.
    Optimizations
    Optimizations
     * Support for sibling calls has been added.
     * Support for sibling calls has been added.
     * More use is now made of the ColdFire mov3q instruction.
     * More use is now made of the ColdFire mov3q instruction.
     * __builtin_clz is now implemented using the ff1 ColdFire
     * __builtin_clz is now implemented using the ff1 ColdFire
       instruction, when available.
       instruction, when available.
     * GCC now honors the -m68010 option. 68010 code now uses clr rather
     * GCC now honors the -m68010 option. 68010 code now uses clr rather
       than move to zero volatile memory.
       than move to zero volatile memory.
     * 68020 targets and above can now use symbol(index.size*scale)
     * 68020 targets and above can now use symbol(index.size*scale)
       addresses for indexed array accesses. Earlier compilers would
       addresses for indexed array accesses. Earlier compilers would
       always load the symbol into a base register first.
       always load the symbol into a base register first.
    Configuration changes
    Configuration changes
     * All m68k and ColdFire targets now allow the default processor to be
     * All m68k and ColdFire targets now allow the default processor to be
       set at configure time using --with-cpu.
       set at configure time using --with-cpu.
     * A --with-arch configuration option has been added. This option
     * A --with-arch configuration option has been added. This option
       allows you to restrict a target to ColdFire or non-ColdFire
       allows you to restrict a target to ColdFire or non-ColdFire
       processors.
       processors.
    Preprocessor macros
    Preprocessor macros
     * An __mcfv*__ macro is now defined for all ColdFire targets.
     * An __mcfv*__ macro is now defined for all ColdFire targets.
       (Earlier versions of GCC only defined __mcfv4e__.)
       (Earlier versions of GCC only defined __mcfv4e__.)
     * __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added.
     * __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added.
     * All targets now define __mc68010 and __mc68010__ when generating
     * All targets now define __mc68010 and __mc68010__ when generating
       68010 code.
       68010 code.
    Command-line changes
    Command-line changes
     * New command-line options -march, -mcpu, -mtune and -mhard-float
     * New command-line options -march, -mcpu, -mtune and -mhard-float
       have been added. These options apply to both m68k and ColdFire
       have been added. These options apply to both m68k and ColdFire
       targets.
       targets.
     * -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative
     * -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative
       versions of -mshort, etc.
       versions of -mshort, etc.
     * -fforce-addr has been removed. It is now ignored by the compiler.
     * -fforce-addr has been removed. It is now ignored by the compiler.
    Other improvements
    Other improvements
     * ColdFire targets now try to maintain a 4-byte-aligned stack where
     * ColdFire targets now try to maintain a 4-byte-aligned stack where
       possible.
       possible.
     * m68k-uclinux targets now try to avoid situations that lead to the
     * m68k-uclinux targets now try to avoid situations that lead to the
       load-time error: BINFMT_FLAT: reloc outside program.
       load-time error: BINFMT_FLAT: reloc outside program.
  MIPS
  MIPS
    Changes to existing configurations
    Changes to existing configurations
     * libffi and libjava now support all three GNU/Linux ABIs: o32, n32
     * libffi and libjava now support all three GNU/Linux ABIs: o32, n32
       and n64. Every GNU/Linux configuration now builds these libraries
       and n64. Every GNU/Linux configuration now builds these libraries
       by default.
       by default.
     * GNU/Linux configurations now generate -mno-shared code unless
     * GNU/Linux configurations now generate -mno-shared code unless
       overridden by -fpic, -fPIC, -fpie or -fPIE.
       overridden by -fpic, -fPIC, -fpie or -fPIE.
     * mipsisa32*-linux-gnu configurations now generate hard-float code by
     * mipsisa32*-linux-gnu configurations now generate hard-float code by
       default, just like other mipsisa32* and mips*-linux-gnu
       default, just like other mipsisa32* and mips*-linux-gnu
       configurations. You can build a soft-float version of any
       configurations. You can build a soft-float version of any
       mips*-linux-gnu configuration by passing --with-float=soft to
       mips*-linux-gnu configuration by passing --with-float=soft to
       configure.
       configure.
     * mips-wrs-vxworks now supports run-time processes (RTPs).
     * mips-wrs-vxworks now supports run-time processes (RTPs).
    Changes to existing command-line options
    Changes to existing command-line options
     * The -march and -mtune options no longer accept 24k as a processor
     * The -march and -mtune options no longer accept 24k as a processor
       name. Please use 24kc, 24kf2_1 or 24kf1_1 instead.
       name. Please use 24kc, 24kf2_1 or 24kf1_1 instead.
     * The -march and -mtune options now accept 24kf2_1, 24kef2_1 and
     * The -march and -mtune options now accept 24kf2_1, 24kef2_1 and
       34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The
       34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The
       options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for
       options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for
       24kx, 24kex and 34kx.
       24kx, 24kex and 34kx.
    New configurations
    New configurations
   GCC now supports the following configurations:
   GCC now supports the following configurations:
     * mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by
     * mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by
       default. Earlier releases also recognized this configuration, but
       default. Earlier releases also recognized this configuration, but
       they treated it in the same way as mipsisa32*-linux-gnu*. Note that
       they treated it in the same way as mipsisa32*-linux-gnu*. Note that
       you can customize any mips*-linux-gnu* configuration to a
       you can customize any mips*-linux-gnu* configuration to a
       particular ISA or processor by passing an appropriate --with-arch
       particular ISA or processor by passing an appropriate --with-arch
       option to configure.
       option to configure.
     * mipsisa*-sde-elf*, which provides compatibility with MIPS
     * mipsisa*-sde-elf*, which provides compatibility with MIPS
       Technologies' SDE toolchains. The configuration uses the SDE
       Technologies' SDE toolchains. The configuration uses the SDE
       libraries by default, but you can use it like other newlib-based
       libraries by default, but you can use it like other newlib-based
       ELF configurations by passing --with-newlib to configure. It is the
       ELF configurations by passing --with-newlib to configure. It is the
       only configuration besides mips64vr*-elf* to build MIPS16 as well
       only configuration besides mips64vr*-elf* to build MIPS16 as well
       as non-MIPS16 libraries.
       as non-MIPS16 libraries.
     * mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf*
     * mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf*
       configuration, but uses the o32 and o64 ABIs instead of the 32-bit
       configuration, but uses the o32 and o64 ABIs instead of the 32-bit
       and 64-bit forms of the EABI.
       and 64-bit forms of the EABI.
    New processors and application-specific extensions
    New processors and application-specific extensions
     * Support for the SmartMIPS ASE is available through the new
     * Support for the SmartMIPS ASE is available through the new
       -msmartmips option.
       -msmartmips option.
     * Support for revision 2 of the DSP ASE is available through the new
     * Support for revision 2 of the DSP ASE is available through the new
       -mdspr2 option. A new preprocessor macro called __mips_dsp_rev
       -mdspr2 option. A new preprocessor macro called __mips_dsp_rev
       indicates the revision of the ASE in use.
       indicates the revision of the ASE in use.
     * Support for the 4KS and 74K families of processors is available
     * Support for the 4KS and 74K families of processors is available
       through the -march and -mtune options.
       through the -march and -mtune options.
    Improved support for built-in functions
    Improved support for built-in functions
     * GCC can now use load-linked, store-conditional and sync
     * GCC can now use load-linked, store-conditional and sync
       instructions to implement atomic built-in functions such as
       instructions to implement atomic built-in functions such as
       __sync_fetch_and_add. The memory reference must be 4 bytes wide for
       __sync_fetch_and_add. The memory reference must be 4 bytes wide for
       32-bit targets and either 4 or 8 bytes wide for 64-bit targets.
       32-bit targets and either 4 or 8 bytes wide for 64-bit targets.
     * GCC can now use the clz and dclz instructions to implement the
     * GCC can now use the clz and dclz instructions to implement the
       __builtin_ctz and __builtin_ffs families of functions.
       __builtin_ctz and __builtin_ffs families of functions.
     * There is a new __builtin___clear_cache function for flushing the
     * There is a new __builtin___clear_cache function for flushing the
       instruction cache. GCC expands this function inline on MIPS32
       instruction cache. GCC expands this function inline on MIPS32
       revision 2 targets, otherwise it calls the function specified by
       revision 2 targets, otherwise it calls the function specified by
       -mcache-flush-func.
       -mcache-flush-func.
    MIPS16 improvements
    MIPS16 improvements
     * GCC can now compile objects that contain a mixture of MIPS16 and
     * GCC can now compile objects that contain a mixture of MIPS16 and
       non-MIPS16 code. There are two new attributes, mips16 and nomips16,
       non-MIPS16 code. There are two new attributes, mips16 and nomips16,
       for specifying which mode a function should use.
       for specifying which mode a function should use.
     * A new option called -minterlink-mips16 makes non-MIPS16 code
     * A new option called -minterlink-mips16 makes non-MIPS16 code
       link-compatible with MIPS16 code.
       link-compatible with MIPS16 code.
     * After many bug fixes, the long-standing MIPS16 -mhard-float support
     * After many bug fixes, the long-standing MIPS16 -mhard-float support
       should now work fairly reliably.
       should now work fairly reliably.
     * GCC can now use the MIPS16e save and restore instructions.
     * GCC can now use the MIPS16e save and restore instructions.
     * -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled
     * -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled
       with -G0 -fsection-anchors is often smaller than code compiled with
       with -G0 -fsection-anchors is often smaller than code compiled with
       -G8. However, please note that you must usually compile all objects
       -G8. However, please note that you must usually compile all objects
       in your application with the same -G option; see the documentation
       in your application with the same -G option; see the documentation
       of -G for details.
       of -G for details.
     * A new option called-mcode-readable specifies which instructions are
     * A new option called-mcode-readable specifies which instructions are
       allowed to load from the code segment. -mcode-readable=yes is the
       allowed to load from the code segment. -mcode-readable=yes is the
       default and says that any instruction may load from the code
       default and says that any instruction may load from the code
       segment. The other alternatives are -mcode-readable=pcrel, which
       segment. The other alternatives are -mcode-readable=pcrel, which
       says that only PC-relative MIPS16 instructions may load from the
       says that only PC-relative MIPS16 instructions may load from the
       code segment, and -mcode-readable=no, which says that no
       code segment, and -mcode-readable=no, which says that no
       instruction may do so. Please see the documentation for more
       instruction may do so. Please see the documentation for more
       details, including example uses.
       details, including example uses.
    Small-data improvements
    Small-data improvements
   There are three new options for controlling small data:
   There are three new options for controlling small data:
     * -mno-extern-sdata, which disables small-data accesses for
     * -mno-extern-sdata, which disables small-data accesses for
       externally-defined variables. Code compiled with -Gn
       externally-defined variables. Code compiled with -Gn
       -mno-extern-sdata will be link-compatible with any -G setting
       -mno-extern-sdata will be link-compatible with any -G setting
       between -G0 and -Gn inclusive.
       between -G0 and -Gn inclusive.
     * -mno-local-sdata, which disables the use of small-data sections for
     * -mno-local-sdata, which disables the use of small-data sections for
       data that is not externally visible. This option can be a useful
       data that is not externally visible. This option can be a useful
       way of reducing small-data usage in less performance-critical parts
       way of reducing small-data usage in less performance-critical parts
       of an application.
       of an application.
     * -mno-gpopt, which disables the use of the $gp register while still
     * -mno-gpopt, which disables the use of the $gp register while still
       honoring the -G limit when placing externally-visible data. This
       honoring the -G limit when placing externally-visible data. This
       option implies -mno-extern-sdata and -mno-local-sdata and it can be
       option implies -mno-extern-sdata and -mno-local-sdata and it can be
       useful in situations where $gp does not necessarily hold the
       useful in situations where $gp does not necessarily hold the
       expected value.
       expected value.
    Miscellaneous improvements
    Miscellaneous improvements
     * There is a new option called -mbranch-cost for tweaking the
     * There is a new option called -mbranch-cost for tweaking the
       perceived cost of branches.
       perceived cost of branches.
     * If GCC is configured to use a version of GAS that supports the
     * If GCC is configured to use a version of GAS that supports the
       .gnu_attribute directive, it will use that directive to record
       .gnu_attribute directive, it will use that directive to record
       certain properties of the output code. .gnu_attribute is new to GAS
       certain properties of the output code. .gnu_attribute is new to GAS
       2.18.
       2.18.
     * There are two new function attributes, near and far, for overriding
     * There are two new function attributes, near and far, for overriding
       the command-line setting of -mlong-calls on a function-by-function
       the command-line setting of -mlong-calls on a function-by-function
       basis.
       basis.
     * -mfp64, which previously required a 64-bit target, now works with
     * -mfp64, which previously required a 64-bit target, now works with
       MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and
       MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and
       mipsisa*-sde-elf* configurations provide suitable library support.
       mipsisa*-sde-elf* configurations provide suitable library support.
     * GCC now recognizes the -mdmx and -mmt options and passes them down
     * GCC now recognizes the -mdmx and -mmt options and passes them down
       to the assembler. It does nothing else with the options at present.
       to the assembler. It does nothing else with the options at present.
  SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture
  SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture
  (BEA)
  (BEA)
     * Support has been added for this new architecture.
     * Support has been added for this new architecture.
  RS6000 (POWER/PowerPC)
  RS6000 (POWER/PowerPC)
     * Support for the PowerPC 750CL paired-single instructions has been
     * Support for the PowerPC 750CL paired-single instructions has been
       added with a new powerpc-*-linux*paired* target configuration. It
       added with a new powerpc-*-linux*paired* target configuration. It
       is enabled by an associated -mpaired option and can be accessed
       is enabled by an associated -mpaired option and can be accessed
       using new built-in functions.
       using new built-in functions.
     * Support for auto-detecting architecture and system configuration to
     * Support for auto-detecting architecture and system configuration to
       auto-select processor optimization tuning.
       auto-select processor optimization tuning.
     * Support for VMX on AIX 5.3 has been added.
     * Support for VMX on AIX 5.3 has been added.
     * Support for AIX Version 6.1 has been added.
     * Support for AIX Version 6.1 has been added.
  S/390, zSeries and System z9
  S/390, zSeries and System z9
     * Support for the IBM System z9 EC/BC processor (z9 GA3) has been
     * Support for the IBM System z9 EC/BC processor (z9 GA3) has been
       added. When using the -march=z9-ec option, the compiler will
       added. When using the -march=z9-ec option, the compiler will
       generate code making use of instructions provided by the decimal
       generate code making use of instructions provided by the decimal
       floating point facility and the floating point conversion facility
       floating point facility and the floating point conversion facility
       (pfpo). Besides the instructions used to implement decimal floating
       (pfpo). Besides the instructions used to implement decimal floating
       point operations these facilities also contain instructions to move
       point operations these facilities also contain instructions to move
       between general purpose and floating point registers and to modify
       between general purpose and floating point registers and to modify
       and copy the sign-bit of floating point values.
       and copy the sign-bit of floating point values.
     * When the -march=z9-ec option is used the new
     * When the -march=z9-ec option is used the new
       -mhard-dfp/-mno-hard-dfp options can be used to specify whether the
       -mhard-dfp/-mno-hard-dfp options can be used to specify whether the
       decimal floating point hardware instructions will be used or not.
       decimal floating point hardware instructions will be used or not.
       If none of them is given the hardware support is enabled by
       If none of them is given the hardware support is enabled by
       default.
       default.
     * The -mstack-guard option can now be omitted when using stack
     * The -mstack-guard option can now be omitted when using stack
       checking via -mstack-size in order to let GCC choose a sensible
       checking via -mstack-size in order to let GCC choose a sensible
       stack guard value according to the frame size of each function.
       stack guard value according to the frame size of each function.
     * Various changes to improve performance of generated code have been
     * Various changes to improve performance of generated code have been
       implemented, including:
       implemented, including:
          + The condition code set by an add logical with carry
          + The condition code set by an add logical with carry
            instruction is now available for overflow checks like: a + b +
            instruction is now available for overflow checks like: a + b +
            carry < b.
            carry < b.
          + The test data class instruction is now used to implement
          + The test data class instruction is now used to implement
            sign-bit and infinity checks of binary and decimal floating
            sign-bit and infinity checks of binary and decimal floating
            point numbers.
            point numbers.
  Xtensa
  Xtensa
     * Stack unwinding for exception handling now uses by default a
     * Stack unwinding for exception handling now uses by default a
       specialized version of DWARF unwinding. This is not
       specialized version of DWARF unwinding. This is not
       binary-compatible with the setjmp/longjmp (sjlj) unwinding used for
       binary-compatible with the setjmp/longjmp (sjlj) unwinding used for
       Xtensa with previous versions of GCC.
       Xtensa with previous versions of GCC.
     * For Xtensa processors that include the Conditional Store option,
     * For Xtensa processors that include the Conditional Store option,
       the built-in functions for atomic memory access are now implemented
       the built-in functions for atomic memory access are now implemented
       using S32C1I instructions.
       using S32C1I instructions.
     * If the Xtensa NSA option is available, GCC will use it to implement
     * If the Xtensa NSA option is available, GCC will use it to implement
       the __builtin_ctz and __builtin_clz functions.
       the __builtin_ctz and __builtin_clz functions.
Documentation improvements
Documentation improvements
     * Existing libstdc++ documentation has been edited and restructured
     * Existing libstdc++ documentation has been edited and restructured
       into a single DocBook XML manual. The results can be viewed online
       into a single DocBook XML manual. The results can be viewed online
       [24]here.
       [24]here.
Other significant improvements
Other significant improvements
     * The compiler's --help command-line option has been extended so that
     * The compiler's --help command-line option has been extended so that
       it now takes an optional set of arguments. These arguments restrict
       it now takes an optional set of arguments. These arguments restrict
       the information displayed to specific classes of command-line
       the information displayed to specific classes of command-line
       options, and possibly only a subset of those options. It is also
       options, and possibly only a subset of those options. It is also
       now possible to replace the descriptive text associated with each
       now possible to replace the descriptive text associated with each
       displayed option with an indication of its current value, or for
       displayed option with an indication of its current value, or for
       binary options, whether it has been enabled or disabled.
       binary options, whether it has been enabled or disabled.
       Here are some examples. The following will display all the options
       Here are some examples. The following will display all the options
       controlling warning messages:
       controlling warning messages:
      --help=warnings
      --help=warnings
       Whereas this will display all the undocumented, target specific
       Whereas this will display all the undocumented, target specific
       options:
       options:
      --help=target,undocumented
      --help=target,undocumented
       This sequence of commands will display the binary optimizations
       This sequence of commands will display the binary optimizations
       that are enabled by -O3:
       that are enabled by -O3:
      gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
      gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
      gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
      gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
      diff /tmp/O2-opts /tmp/O3-opts | grep enabled
      diff /tmp/O2-opts /tmp/O3-opts | grep enabled
     * The configure options --with-pkgversion and --with-bugurl have been
     * The configure options --with-pkgversion and --with-bugurl have been
       added. These allow distributors of GCC to include a
       added. These allow distributors of GCC to include a
       distributor-specific string in manuals and --version output and to
       distributor-specific string in manuals and --version output and to
       specify the URL for reporting bugs in their versions of GCC.
       specify the URL for reporting bugs in their versions of GCC.
GCC 4.3.1
GCC 4.3.1
   This is the [25]list of problem reports (PRs) from GCC's bug tracking
   This is the [25]list of problem reports (PRs) from GCC's bug tracking
   system that are known to be fixed in the 4.3.1 release. This list might
   system that are known to be fixed in the 4.3.1 release. This list might
   not be complete (that is, it is possible that some PRs that have been
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).
   fixed are not listed here).
Target Specific Changes
Target Specific Changes
  IA-32/x86-64
  IA-32/x86-64
    ABI changes
    ABI changes
     * Starting with GCC 4.3.1, decimal floating point variables are
     * Starting with GCC 4.3.1, decimal floating point variables are
       aligned to their natural boundaries when they are passed on the
       aligned to their natural boundaries when they are passed on the
       stack for i386.
       stack for i386.
    Command-line changes
    Command-line changes
     * Starting with GCC 4.3.1, the -mcld option has been added to
     * Starting with GCC 4.3.1, the -mcld option has been added to
       automatically generate a cld instruction in the prologue of
       automatically generate a cld instruction in the prologue of
       functions that use string instructions. This option is used for
       functions that use string instructions. This option is used for
       backward compatibility on some operating systems and can be enabled
       backward compatibility on some operating systems and can be enabled
       by default for 32-bit x86 targets by configuring GCC with the
       by default for 32-bit x86 targets by configuring GCC with the
       --enable-cld configure option.
       --enable-cld configure option.
GCC 4.3.2
GCC 4.3.2
   This is the [26]list of problem reports (PRs) from GCC's bug tracking
   This is the [26]list of problem reports (PRs) from GCC's bug tracking
   system that are known to be fixed in the 4.3.2 release. This list might
   system that are known to be fixed in the 4.3.2 release. This list might
   not be complete (that is, it is possible that some PRs that have been
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).
   fixed are not listed here).
GCC 4.3.3
GCC 4.3.3
   This is the [27]list of problem reports (PRs) from GCC's bug tracking
   This is the [27]list of problem reports (PRs) from GCC's bug tracking
   system that are known to be fixed in the 4.3.3 release. This list might
   system that are known to be fixed in the 4.3.3 release. This list might
   not be complete (that is, it is possible that some PRs that have been
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).
   fixed are not listed here).
GCC 4.3.4
GCC 4.3.4
   This is the [28]list of problem reports (PRs) from GCC's bug tracking
   This is the [28]list of problem reports (PRs) from GCC's bug tracking
   system that are known to be fixed in the 4.3.4 release. This list might
   system that are known to be fixed in the 4.3.4 release. This list might
   not be complete (that is, it is possible that some PRs that have been
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).
   fixed are not listed here).
GCC 4.3.5
GCC 4.3.5
   This is the [29]list of problem reports (PRs) from GCC's bug tracking
   This is the [29]list of problem reports (PRs) from GCC's bug tracking
   system that are known to be fixed in the 4.3.5 release. This list might
   system that are known to be fixed in the 4.3.5 release. This list might
   not be complete (that is, it is possible that some PRs that have been
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).
   fixed are not listed here).
   Please send FSF & GNU inquiries & questions to [30]gnu@gnu.org. There
   Please send FSF & GNU inquiries & questions to [30]gnu@gnu.org. There
   are also [31]other ways to contact the FSF.
   are also [31]other ways to contact the FSF.
   These pages are [32]maintained by the GCC team.
   These pages are [32]maintained by the GCC team.
    For questions related to the use of GCC, please consult these web
    For questions related to the use of GCC, please consult these web
    pages and the [33]GCC manuals. If that fails, the
    pages and the [33]GCC manuals. If that fails, the
    [34]gcc-help@gcc.gnu.org mailing list might help.
    [34]gcc-help@gcc.gnu.org mailing list might help.
    Please send comments on these web pages and the development of GCC to
    Please send comments on these web pages and the development of GCC to
    our developer mailing list at [35]gcc@gnu.org or [36]gcc@gcc.gnu.org.
    our developer mailing list at [35]gcc@gnu.org or [36]gcc@gcc.gnu.org.
    All of our lists have [37]public archives.
    All of our lists have [37]public archives.
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Floor, Boston, MA 02110, USA.
   Floor, Boston, MA 02110, USA.
   Verbatim copying and distribution of this entire article is permitted
   Verbatim copying and distribution of this entire article is permitted
   in any medium, provided this notice is preserved.
   in any medium, provided this notice is preserved.
   Last modified 2010-07-10 [38]Valid XHTML 1.0
   Last modified 2010-07-10 [38]Valid XHTML 1.0
References
References
   1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5
   1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5
   2. http://gmplib.org/
   2. http://gmplib.org/
   3. http://www.mpfr.org/
   3. http://www.mpfr.org/
   4. http://gcc.gnu.org/install/prerequisites.html
   4. http://gcc.gnu.org/install/prerequisites.html
   5. http://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
   5. http://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
   6. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
   6. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
   7. http://gcc.gnu.org/gcc-4.3/porting_to.html
   7. http://gcc.gnu.org/gcc-4.3/porting_to.html
   8. http://www.mpfr.org/
   8. http://www.mpfr.org/
   9. http://www.mpfr.org/
   9. http://www.mpfr.org/
  10. http://www.mpfr.org/
  10. http://www.mpfr.org/
  11. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
  11. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
  12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
  12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
  13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
  13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
  14. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#m anual.intro.status.standard.tr1
  14. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#m anual.intro.status.standard.tr1
  15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
  15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
  16. http://gmplib.org/
  16. http://gmplib.org/
  17. http://www.mpfr.org/
  17. http://www.mpfr.org/
  18. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
  18. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
  19. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
  19. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
  20. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
  20. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
  21. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
  21. http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
  22. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
  22. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
  23. http://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
  23. http://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
  24. http://gcc.gnu.org/onlinedocs/libstdc++/
  24. http://gcc.gnu.org/onlinedocs/libstdc++/
  25. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
  25. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
  26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
  26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
  27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
  27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
  28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
  28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
  29. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
  29. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
  30. mailto:gnu@gnu.org
  30. mailto:gnu@gnu.org
  31. http://www.gnu.org/home.html#ContactInfo
  31. http://www.gnu.org/home.html#ContactInfo
  32. http://gcc.gnu.org/about.html
  32. http://gcc.gnu.org/about.html
  33. http://gcc.gnu.org/onlinedocs/
  33. http://gcc.gnu.org/onlinedocs/
  34. mailto:gcc-help@gcc.gnu.org
  34. mailto:gcc-help@gcc.gnu.org
  35. mailto:gcc@gnu.org
  35. mailto:gcc@gnu.org
  36. mailto:gcc@gcc.gnu.org
  36. mailto:gcc@gcc.gnu.org
  37. http://gcc.gnu.org/lists.html
  37. http://gcc.gnu.org/lists.html
  38. http://validator.w3.org/check/referer
  38. http://validator.w3.org/check/referer
======================================================================
======================================================================
http://gcc.gnu.org/gcc-4.2/index.html
http://gcc.gnu.org/gcc-4.2/index.html
                           GCC 4.2 Release Series
                           GCC 4.2 Release Series
   May 19, 2008
   May 19, 2008
   The [1]GNU project and the GCC developers are pleased to announce the
   The [1]GNU project and the GCC developers are pleased to announce the
   release of GCC 4.2.4.
   release of GCC 4.2.4.
   This release is a bug-fix release, containing fixes for regressions in
   This release is a bug-fix release, containing fixes for regressions in
   GCC 4.2.3 relative to previous releases of GCC.
   GCC 4.2.3 relative to previous releases of GCC.
Release History
Release History
   GCC 4.2.4
   GCC 4.2.4
          May 19, 2008 ([2]changes)
          May 19, 2008 ([2]changes)
   GCC 4.2.3
   GCC 4.2.3
          February 1, 2008 ([3]changes)
          February 1, 2008 ([3]changes)
   GCC 4.2.2
   GCC 4.2.2
          October 7, 2007 ([4]changes)
          October 7, 2007 ([4]changes)
   GCC 4.2.1
   GCC 4.2.1
          July 18, 2007 ([5]changes)
          July 18, 2007 ([5]changes)
   GCC 4.2.0
   GCC 4.2.0
          May 13, 2007 ([6]changes)
          May 13, 2007 ([6]changes)
References and Acknowledgements
References and Acknowledgements
   GCC used to stand for the GNU C Compiler, but since the compiler
   GCC used to stand for the GNU C Compiler, but since the compiler
   supports several other languages aside from C, it now stands for the
   supports several other languages aside from C, it now stands for the
   GNU Compiler Collection.
   GNU Compiler Collection.
   A list of [7]successful builds is updated as new information becomes
   A list of [7]successful builds is updated as new information becomes
   available.
   available.
   The GCC developers would like to thank the numerous people that have
   The GCC developers would like to thank the numerous people that have
   contributed new features, improvements, bug fixes, and other changes as
   contributed new features, improvements, bug fixes, and other changes as
   well as test results to GCC. This [8]amazing group of volunteers is
   well as test results to GCC. This [8]amazing group of volunteers is
   what makes GCC successful.
   what makes GCC successful.
   For additional information about GCC please refer to the [9]GCC project
   For additional information about GCC please refer to the [9]GCC project
   web site or contact the [10]GCC development mailing list.
   web site or contact the [10]GCC development mailing list.
   To obtain GCC please use [11]our mirror sites or [12]our SVN server.
   To obtain GCC please use [11]our mirror sites or [12]our SVN server.
   Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There
   Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There
   are also [14]other ways to contact the FSF.
   are also [14]other ways to contact the FSF.
   These pages are [15]maintained by the GCC team.
   These pages are [15]maintained by the GCC team.
    For questions related to the use of GCC, please consult these web
    For questions related to the use of GCC, please consult these web
    pages and the [16]GCC manuals. If that fails, the
    pages and the [16]GCC manuals. If that fails, the
    [17]gcc-help@gcc.gnu.org mailing list might help.
    [17]gcc-help@gcc.gnu.org mailing list might help.
    Please send comments on these web pages and the development of GCC to
    Please send comments on these web pages and the development of GCC to
    our developer mailing list at [18]gcc@gnu.org or [19]gcc@gcc.gnu.org.
    our developer mailing list at [18]gcc@gnu.org or [19]gcc@gcc.gnu.org.
    All of our lists have [20]public archives.
    All of our lists have [20]public archives.
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Floor, Boston, MA 02110, USA.
   Floor, Boston, MA 02110, USA.
   Verbatim copying and distribution of this entire article is permitted
   Verbatim copying and distribution of this entire article is permitted
   in any medium, provided this notice is preserved.
   in any medium, provided this notice is preserved.
   Last modified 2010-07-01 [21]Valid XHTML 1.0
   Last modified 2010-07-01 [21]Valid XHTML 1.0
References
References
   1. http://www.gnu.org/
   1. http://www.gnu.org/
   2. http://gcc.gnu.org/gcc-4.2/changes.html
   2. http://gcc.gnu.org/gcc-4.2/changes.html
   3. http://gcc.gnu.org/gcc-4.2/changes.html
   3. http://gcc.gnu.org/gcc-4.2/changes.html
   4. http://gcc.gnu.org/gcc-4.2/changes.html
   4. http://gcc.gnu.org/gcc-4.2/changes.html
   5. http://gcc.gnu.org/gcc-4.2/changes.html
   5. http://gcc.gnu.org/gcc-4.2/changes.html
   6. http://gcc.gnu.org/gcc-4.2/changes.html
   6. http://gcc.gnu.org/gcc-4.2/changes.html
   7. http://gcc.gnu.org/gcc-4.2/buildstat.html
   7. http://gcc.gnu.org/gcc-4.2/buildstat.html
   8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   9. http://gcc.gnu.org/index.html
   9. http://gcc.gnu.org/index.html
  10. mailto:gcc@gcc.gnu.org
  10. mailto:gcc@gcc.gnu.org
  11. http://gcc.gnu.org/mirrors.html
  11. http://gcc.gnu.org/mirrors.html
  12. http://gcc.gnu.org/svn.html
  12. http://gcc.gnu.org/svn.html
  13. mailto:gnu@gnu.org
  13. mailto:gnu@gnu.org
  14. http://www.gnu.org/home.html#ContactInfo
  14. http://www.gnu.org/home.html#ContactInfo
  15. http://gcc.gnu.org/about.html
  15. http://gcc.gnu.org/about.html
  16. http://gcc.gnu.org/onlinedocs/
  16. http://gcc.gnu.org/onlinedocs/
  17. mailto:gcc-help@gcc.gnu.org
  17. mailto:gcc-help@gcc.gnu.org
  18. mailto:gcc@gnu.org
  18. mailto:gcc@gnu.org
  19. mailto:gcc@gcc.gnu.org
  19. mailto:gcc@gcc.gnu.org
  20. http://gcc.gnu.org/lists.html
  20. http://gcc.gnu.org/lists.html
  21. http://validator.w3.org/check/referer
  21. http://validator.w3.org/check/referer
======================================================================
======================================================================
http://gcc.gnu.org/gcc-4.2/changes.html
http://gcc.gnu.org/gcc-4.2/changes.html
                           GCC 4.2 Release Series
                           GCC 4.2 Release Series
                      Changes, New Features, and Fixes
                      Changes, New Features, and Fixes
Caveats
Caveats
     * GCC no longer accepts the -fshared-data option. This option has had
     * GCC no longer accepts the -fshared-data option. This option has had
       no effect in any GCC 4 release; the targets to which the option
       no effect in any GCC 4 release; the targets to which the option
       used to apply had been removed before GCC 4.0.
       used to apply had been removed before GCC 4.0.
General Optimizer Improvements
General Optimizer Improvements
     * New command-line options specify the possible relationships among
     * New command-line options specify the possible relationships among
       parameters and between parameters and global data. For example,
       parameters and between parameters and global data. For example,
       -fargument-noalias-anything specifies that arguments do not alias
       -fargument-noalias-anything specifies that arguments do not alias
       any other storage.
       any other storage.
       Each language will automatically use whatever option is required by
       Each language will automatically use whatever option is required by
       the language standard. You should not need to use these options
       the language standard. You should not need to use these options
       yourself.
       yourself.
New Languages and Language specific improvements
New Languages and Language specific improvements
     * [1]OpenMP is now supported for the C, C++ and Fortran compilers.
     * [1]OpenMP is now supported for the C, C++ and Fortran compilers.
     * New command-line options -fstrict-overflow and -Wstrict-overflow
     * New command-line options -fstrict-overflow and -Wstrict-overflow
       have been added. -fstrict-overflow tells the compiler that it may
       have been added. -fstrict-overflow tells the compiler that it may
       assume that the program follows the strict signed overflow
       assume that the program follows the strict signed overflow
       semantics permitted for the language: for C and C++ this means that
       semantics permitted for the language: for C and C++ this means that
       the compiler may assume that signed overflow does not occur. For
       the compiler may assume that signed overflow does not occur. For
       example, a loop like
       example, a loop like
      for (i = 1; i > 0; i *= 2)
      for (i = 1; i > 0; i *= 2)
       is presumably intended to continue looping until i overflows. With
       is presumably intended to continue looping until i overflows. With
       -fstrict-overflow, the compiler may assume that signed overflow
       -fstrict-overflow, the compiler may assume that signed overflow
       will not occur, and transform this into an infinite loop.
       will not occur, and transform this into an infinite loop.
       -fstrict-overflow is turned on by default at -O2, and may be
       -fstrict-overflow is turned on by default at -O2, and may be
       disabled via -fno-strict-overflow. The -Wstrict-overflow option may
       disabled via -fno-strict-overflow. The -Wstrict-overflow option may
       be used to warn about cases where the compiler assumes that signed
       be used to warn about cases where the compiler assumes that signed
       overflow will not occur. It takes five different levels:
       overflow will not occur. It takes five different levels:
       -Wstrict-overflow=1 to 5. See the [2]documentation for details.
       -Wstrict-overflow=1 to 5. See the [2]documentation for details.
       -Wstrict-overflow=1 is enabled by -Wall.
       -Wstrict-overflow=1 is enabled by -Wall.
     * The new command-line option -fno-toplevel-reorder directs GCC to
     * The new command-line option -fno-toplevel-reorder directs GCC to
       emit top-level functions, variables, and asm statements in the same
       emit top-level functions, variables, and asm statements in the same
       order that they appear in the input file. This is intended to
       order that they appear in the input file. This is intended to
       support existing code which relies on a particular ordering (for
       support existing code which relies on a particular ordering (for
       example, code which uses top-level asm statements to switch
       example, code which uses top-level asm statements to switch
       sections). For new code, it is generally better to use function and
       sections). For new code, it is generally better to use function and
       variable attributes. The -fno-toplevel-reorder option may be used
       variable attributes. The -fno-toplevel-reorder option may be used
       for most cases which currently use -fno-unit-at-a-time. The
       for most cases which currently use -fno-unit-at-a-time. The
       -fno-unit-at-a-time option will be removed in some future version
       -fno-unit-at-a-time option will be removed in some future version
       of GCC. If you know of a case which requires -fno-unit-at-a-time
       of GCC. If you know of a case which requires -fno-unit-at-a-time
       which is not fixed by -fno-toplevel-reorder, please open a bug
       which is not fixed by -fno-toplevel-reorder, please open a bug
       report.
       report.
  C family
  C family
     * The pragma redefine_extname will now macro expand its tokens for
     * The pragma redefine_extname will now macro expand its tokens for
       compatibility with SunPRO.
       compatibility with SunPRO.
     * In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct
     * In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct
       GCC to handle inline functions as specified in the C99 standard. In
       GCC to handle inline functions as specified in the C99 standard. In
       preparation for this, GCC 4.2 will warn about any use of non-static
       preparation for this, GCC 4.2 will warn about any use of non-static
       inline functions in gnu99 or c99 mode. This new warning may be
       inline functions in gnu99 or c99 mode. This new warning may be
       disabled with the new gnu_inline function attribute or the new
       disabled with the new gnu_inline function attribute or the new
       -fgnu89-inline command-line option. Also, GCC 4.2 and later will
       -fgnu89-inline command-line option. Also, GCC 4.2 and later will
       define one of the preprocessor macros __GNUC_GNU_INLINE__ or
       define one of the preprocessor macros __GNUC_GNU_INLINE__ or
       __GNUC_STDC_INLINE__ to indicate the semantics of inline functions
       __GNUC_STDC_INLINE__ to indicate the semantics of inline functions
       in the current compilation.
       in the current compilation.
     * A new command-line option -Waddress has been added to warn about
     * A new command-line option -Waddress has been added to warn about
       suspicious uses of memory addresses as, for example, using the
       suspicious uses of memory addresses as, for example, using the
       address of a function in a conditional expression, and comparisons
       address of a function in a conditional expression, and comparisons
       against the memory address of a string literal. This warning is
       against the memory address of a string literal. This warning is
       enabled by -Wall.
       enabled by -Wall.
  C++
  C++
     * C++ visibility handling has been overhauled.
     * C++ visibility handling has been overhauled.
       Restricted visiblity is propagated from classes to members, from
       Restricted visiblity is propagated from classes to members, from
       functions to local statics, and from templates and template
       functions to local statics, and from templates and template
       arguments to instantiations, unless the latter has explicitly
       arguments to instantiations, unless the latter has explicitly
       declared visibility.
       declared visibility.
       The visibility attribute for a class must come between the
       The visibility attribute for a class must come between the
       class-key and the name, not after the closing brace.
       class-key and the name, not after the closing brace.
       Attributes are now allowed for enums and elaborated-type-specifiers
       Attributes are now allowed for enums and elaborated-type-specifiers
       that only declare a type.
       that only declare a type.
       Members of the anonymous namespace are now local to a particular
       Members of the anonymous namespace are now local to a particular
       translation unit, along with any other declarations which use them,
       translation unit, along with any other declarations which use them,
       though they are still treated as having external linkage for
       though they are still treated as having external linkage for
       language semantics.
       language semantics.
     * The (undocumented) extension which permitted templates with default
     * The (undocumented) extension which permitted templates with default
       arguments to be bound to template template parameters with fewer
       arguments to be bound to template template parameters with fewer
       parameters has been removed. For example:
       parameters has been removed. For example:
        template