This file contains information about GCC releases which has been generated
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
that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
see ONEWS.

======================================================================
http://gcc.gnu.org/gcc-4.4/index.html
                           GCC 4.4 Release Series

   April 29, 2010

   The [1]GNU project and the GCC developers are pleased to announce the
   release of GCC 4.4.4.

   This release is a bug-fix release, containing fixes for regressions in
   GCC 4.4.3 relative to previous releases of GCC.

Release History

   GCC 4.4.4
          April 29, 2010 ([2]changes)

   GCC 4.4.3
          January 21, 2010 ([3]changes)

   GCC 4.4.2
          October 15, 2009 ([4]changes)

   GCC 4.4.1
          July 22, 2009 ([5]changes)

   GCC 4.4.0
          April 21, 2009 ([6]changes)

References and Acknowledgements

   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
   GNU Compiler Collection.

   A list of [7]successful builds is updated as new information becomes
   available.

   The GCC developers would like to thank the numerous people that have
   contributed new features, improvements, bug fixes, and other changes as
   well as test results to GCC. This [8]amazing group of volunteers is
   what makes GCC successful.

   For additional information about GCC please refer to the [9]GCC project
   web site or contact the [10]GCC development mailing list.

   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
   are also [14]other ways to contact the FSF.

   These pages are maintained by [15]the GCC team.


    For questions related to the use of GCC, please consult these web
    pages and the [16]GCC manuals. If that fails, the
    [17]gcc-help@gcc.gnu.org mailing list might help.
    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.
    All of our lists have [20]public archives.

   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Floor, Boston, MA 02110, USA.

   Verbatim copying and distribution of this entire article is permitted
   in any medium, provided this notice is preserved.
   Last modified 2010-04-29 [21]Valid XHTML 1.0

References

   1. http://www.gnu.org/
   2. 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
   5. 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
   8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   9. http://gcc.gnu.org/index.html
  10. mailto:gcc@gcc.gnu.org
  11. http://gcc.gnu.org/mirrors.html
  12. http://gcc.gnu.org/svn.html
  13. mailto:gnu@gnu.org
  14. http://www.gnu.org/home.html#ContactInfo
  15. http://gcc.gnu.org/about.html
  16. http://gcc.gnu.org/onlinedocs/
  17. mailto:gcc-help@gcc.gnu.org
  18. mailto:gcc@gnu.org
  19. mailto:gcc@gcc.gnu.org
  20. http://gcc.gnu.org/lists.html
  21. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.4/changes.html
                           GCC 4.4 Release Series
                      Changes, New Features, and Fixes

   The latest release in the 4.4 release series is [1]GCC 4.4.4.

Caveats

     * __builtin_stdarg_start has been completely removed from GCC.
       Support for <varargs.h> had been deprecated since GCC 4.0. Use
       __builtin_va_start as a replacement.
     * Some of the errors issued by the C++ front end that could be
       downgraded to warnings in previous releases by using -fpermissive
       are now warnings by default. They can be converted into errors by
       using -pedantic-errors.
     * Use of the cpp assertion extension will now emit a warning when
       -Wdeprecated or -pedantic is used. This extension has been
       deprecated for many years, but never warned about.
     * 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
       causes an ABI change. For example there is no longer a 4-bit
       padding between field a and b in this structure:
    struct foo
    {
      char a:4;
      char b:8;
    } __attribute__ ((packed));
       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
       The warning can be disabled with -Wno-packed-bitfield-compat.
     * 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
       not affect the libstdc++ library included with GCC.
     * The SCOUNT and POS bits of the MIPS DSP control register are now
       treated as global. Previous versions of GCC treated these fields as
       call-clobbered instead.
     * The MIPS port no longer recognizes the h asm constraint. It was
       necessary to remove this constraint in order to avoid generating
       unpredictable code sequences.
       One of the main uses of the h constraint was to extract the high
       part of a multiplication on 64-bit targets. For example:
    asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
       You can now achieve the same effect using 128-bit types:
    typedef unsigned int uint128_t __attribute__((mode(TI)));
    result = ((uint128_t) x * y) >> 64;
       The second sequence is better in many ways. For example, if x and y
       are constants, the compiler can perform the multiplication at
       compile time. If x and y are not constants, the compiler can
       schedule the runtime multiplication better than it can schedule an
       asm statement.
     * Support for a number of older systems and recently unmaintained or
       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
       will have their sources permanently removed.
       The following ports for individual systems on particular
       architectures have been obsoleted:
          + Generic a.out on IA32 and m68k (i[34567]86-*-aout*,
            m68k-*-aout*)
          + Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*,
            armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*,
            sh-*-*). This does not affect other more specific targets
            using the COFF object format on those architectures, or the
            more specific H8300 and SH targets (h8300-*-rtems*,
            h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*,
            sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
          + 2BSD on PDP-11 (pdp11-*-bsd)
          + AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*,
            powerpc-ibm-aix4.[12]*)
          + Tuning support for Itanium1 (Merced) variants. Note that code
            tuned for Itanium2 should also run correctly on Itanium1.
     * The protoize and unprotoize utilities have been obsoleted and will
       be removed in GCC 4.5. These utilities have not been installed by
       default since GCC 3.0.
     * Support has been removed for all the [2]configurations obsoleted in
       GCC 4.3.
     * Unknown -Wno-* options are now silently ignored by GCC if no other
       diagnostics are issued. If other diagnostics are issued, then GCC
       warns about the unknown options.
     * More information on porting to GCC 4.4 from previous versions of
       GCC can be found in the [3]porting guide for this release.

General Optimizer Improvements

     * A new command-line switch -findirect-inlining has been added. When
       turned on it allows the inliner to also inline indirect calls that
       are discovered to have known targets at compile time thanks to
       previous inlining.
     * A new command-line switch -ftree-switch-conversion has been added.
       This new pass turns simple initializations of scalar variables in
       switch statements into initializations from a static array, given
       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 parameter --param switch-conversion-max-branch-ratio (default
       is eight).
     * A new command-line switch -ftree-builtin-call-dce has been added.
       This optimization eliminates unnecessary calls to certain builtin
       functions when the return value is not used, in cases where the
       calls can not be eliminated entirely because the function may set
       errno. This optimization is on by default at -O2 and above.
     * A new command-line switch -fconserve-stack directs the compiler to
       minimize stack usage even if it makes the generated code slower.
       This affects inlining decisions.
     * When the assembler supports it, the compiler will now emit unwind
       information using assembler .cfi directives. This makes it possible
       to use such directives in inline assembler code. The new option
       -fno-dwarf2-cfi-asm directs the compiler to not use .cfi
       directives.
     * The [4]Graphite branch has been merged. This merge has brought in a
       new framework for loop optimizations based on a polyhedral
       intermediate representation. These optimizations apply to all the
       languages supported by GCC. The following new code transformations
       are available in GCC 4.4:
          + -floop-interchange performs loop interchange transformations
            on loops. Interchanging two nested loops switches the inner
            and outer loops. For example, given a loop like:
          DO J = 1, M
            DO I = 1, N
              A(J, I) = A(J, I) * C
            ENDDO
          ENDDO

            loop interchange will transform the loop as if the user had
            written:
          DO I = 1, N
            DO J = 1, M
              A(J, I) = A(J, I) * C
            ENDDO
          ENDDO

            which can be beneficial when N is larger than the caches,
            because in Fortran, the elements of an array are stored in
            memory contiguously by column, and the original loop iterates
            over rows, potentially creating at each access a cache miss.
          + -floop-strip-mine performs loop strip mining transformations
            on loops. Strip mining splits a loop into two nested loops.
            The outer loop has strides equal to the strip size and the
            inner loop has strides of the original loop within a strip.
            For example, given a loop like:
          DO I = 1, N
            A(I) = A(I) + C
          ENDDO

            loop strip mining will transform the loop as if the user had
            written:
          DO II = 1, N, 4
            DO I = II, min (II + 3, N)
              A(I) = A(I) + C
            ENDDO
          ENDDO

          + -floop-block performs loop blocking transformations on loops.
            Blocking strip mines each loop in the loop nest such that the
            memory accesses of the element loops fit inside caches. For
            example, given a loop like:
          DO I = 1, N
            DO J = 1, M
              A(J, I) = B(I) + C(J)
            ENDDO
          ENDDO

            loop blocking will transform the loop as if the user had
            written:
          DO II = 1, N, 64
            DO JJ = 1, M, 64
              DO I = II, min (II + 63, N)
                DO J = JJ, min (JJ + 63, M)
                  A(J, I) = B(I) + C(J)
                ENDDO
              ENDDO
            ENDDO
          ENDDO

            which can be beneficial when M is larger than the caches,
            because the innermost loop will iterate over a smaller amount
            of data that can be kept in the caches.
     * A new register allocator has replaced the old one. It is called
       integrated register allocator (IRA) because coalescing, register
       live range splitting, and hard register preferencing are done
       on-the-fly during coloring. It also has better integration with the
       reload pass. IRA is a regional register allocator which uses modern
       Chaitin-Briggs coloring instead of Chow's priority coloring used in
       the old register allocator. More info about IRA internals and
       options can be found in the GCC manuals.
     * A new instruction scheduler and software pipeliner, based on the
       selective scheduling approach, has been added. The new pass
       performs instruction unification, register renaming, substitution
       through register copies, and speculation during scheduling. The
       software pipeliner is able to pipeline non-countable loops. The new
       pass is targeted at scheduling-eager in-order platforms. In GCC 4.4
       it is available for the Intel Itanium platform working by default
       as the second scheduling pass (after register allocation) at the
       -O3 optimization level.
     * When using -fprofile-generate with a multi-threaded program, the
       profile counts may be slightly wrong due to race conditions. The
       new -fprofile-correction option directs the compiler to apply
       heuristics to smooth out the inconsistencies. By default the
       compiler will give an error message when it finds an inconsistent
       profile.
     * The new -fprofile-dir=PATH option permits setting the directory
       where profile data files are stored when using -fprofile-generate
       and friends, and the directory used when reading profile data files
       using -fprofile-use and friends.

New warning options

     * 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
       used to help ensure that code fits within a limited amount of stack
       space.
     * The command-line option -Wlarger-than-N is now written as
       -Wlarger-than=N and the old form is deprecated.
     * The new -Wno-mudflap option disables warnings about constructs
       which can not be instrumented when using -fmudflap.

New Languages and Language specific improvements

     * Version 3.0 of the [5]OpenMP specification is now supported for the
       C, C++, and Fortran compilers.
     * 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
       __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.

  C family

     * A new optimize attribute was added to allow programmers to change
       the optimization level and particular optimization options for an
       individual function. You can also change the optimization options
       via the GCC optimize pragma for functions defined after the pragma.
       The GCC push_options pragma and the GCC pop_options pragma allow
       you temporarily save and restore the options used. The GCC
       reset_options pragma restores the options to what was specified on
       the command line.
     * Uninitialized warnings do not require enabling optimization
       anymore, that is, -Wuninitialized can be used together with -O0.
       Nonetheless, the warnings given by -Wuninitialized will probably be
       more accurate if optimization is enabled.
     * -Wparentheses now warns about expressions such as (!x | y) and (!x
       & y). Using explicit parentheses, such as in ((!x) | y), silences
       this warning.
     * -Wsequence-point now warns within if, while,do while and for
       conditions, and within for begin/end expressions.
     * A new option -dU is available to dump definitions of preprocessor
       macros that are tested or expanded.

  C++

     * [7]Improved experimental support for the upcoming ISO C++ standard,
       C++0x. Including support for auto, inline namespaces, generalized
       initializer lists, defaulted and deleted functions, new character
       types, and scoped enums.
     * Those errors that may be downgraded to warnings to build legacy
       code now mention -fpermissive when -fdiagnostics-show-option is
       enabled.
     * -Wconversion now warns if the result of a static_cast to enumeral
       type is unspecified because the value is outside the range of the
       enumeral type.
     * -Wuninitialized now warns if a non-static reference or non-static
       const member appears in a class without constructors.
     * G++ now properly implements value-initialization, so objects with
       an initializer of () and an implicitly defined default constructor
       will be zero-initialized before the default constructor is called.

    Runtime Library (libstdc++)

     * [8]Improved experimental support for the upcoming ISO C++ standard,
       C++0x, including:
          + Support for <chrono>, <condition_variable>, <cstdatomic>,
            <forward_list>, <initializer_list>, <mutex>, <ratio>,
            <system_error>, and <thread>.
          + unique_ptr, <algorithm> additions, exception propagation, and
            support for the new character types in <string> and <limits>.
          + Existing facilities now exploit initializer lists, defaulted
            and deleted functions, and the newly implemented core C++0x
            features.
          + Some standard containers are more efficient together with
            stateful allocators, i.e., no allocator is constructed on the
            fly at element construction time.
     * Experimental support for non-standard pointer types in containers.
     * The long standing libstdc++/30928 has been fixed for targets
       running glibc 2.10 or later.
     * As usual, many small and larger bug fixes, in particular quite a
       few corner cases in <locale>.

  Fortran

     * GNU Fortran now employs libcpp directly instead of using cc1 as an
       external preprocessor. The [9]-cpp option was added to allow manual
       invocation of the preprocessor without relying on filename
       extensions.
     * The [10]-Warray-temporaries option warns about array temporaries
       generated by the compiler, as an aid to optimization.
     * The [11]-fcheck-array-temporaries option has been added, printing a
       notification at run time, when an array temporary had to be created
       for an function argument. Contrary to -Warray-temporaries the
       warning is only printed if the array is noncontiguous.
     * Improved generation of DWARF debugging symbols
     * If using an intrinsic not part of the selected standard (via -std=
       and -fall-intrinsics) gfortran will now treat it as if this
       procedure were declared EXTERNAL and try to link to a user-supplied
       procedure. -Wintrinsics-std will warn whenever this happens. The
       now-useless option -Wnonstd-intrinsic was removed.
     * The flag -falign-commons has been added to control the alignment of
       variables in COMMON blocks, which is enabled by default in line
       with previous GCC version. Using -fno-align-commons one can force
       commons to be contiguous in memory as required by the Fortran
       standard, however, this slows down the memory access. The option
       -Walign-commons, which is enabled by default, warns when padding
       bytes were added for alignment. The proper solution is to sort the
       common objects by decreasing storage size, which avoids the
       alignment problems.
     * Fortran 2003 support has been extended:
          + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
            now supported (except internal reads from/writes to wide
            strings). [12]-fbackslash now supports also \unnnn and
            \Unnnnnnnn to enter Unicode characters.
          + Asynchronous I/O (implemented as synchronous I/O) and the
            decimal=, size=, sign=, pad=, blank=, and delim= specifiers
            are now supported in I/O statements.
          + Support for Fortran 2003 structure constructors and for array
            constructor with typespec has been added.
          + Procedure Pointers (but not yet as component in derived types
            and as function results) are now supported.
          + Abstract types, type extension, and type-bound procedures
            (both PROCEDURE and GENERIC but not as operators). Note: As
            CLASS/polymorphyic types are not implemented, type-bound
            procedures with PASS accept as non-standard extension TYPE
            arguments.
     * Fortran 2008 support has been added:
          + The -std=f2008 option and support for the file extensions
            .f2008 and .F2008 has been added.
          + The g0 format descriptor is now supported.
          + The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH,
            ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED
            are now available (some of them existed as GNU extension
            before). Note: The hyperbolic functions are not yet supporting
            complex arguments and the three- argument version of BESSEL_*N
            is not available.
          + The bit intrinsics LEADZ and TRAILZ have been added.

  Java (GCJ)

  Ada

     * The Ada runtime now supports multilibs on many platforms including
       x86_64, SPARC and PowerPC. Their build is enabled by default.

New Targets and Target Specific Improvements

  ARM

     * GCC now supports optimizing for the Cortex-A9, Cortex-R4 and
       Cortex-R4F processors and has many other improvements to
       optimization for ARM processors.
     * GCC now supports the VFPv3 variant with 16 double-precision
       registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been
       renamed to -mfpu=vfpv3.
     * GCC now supports the -mfix-cortex-m3-ldrd option to work around an
       erratum on Cortex-M3 processors.
     * GCC now supports the __sync_* atomic operations for ARM EABI
       GNU/Linux.
     * The section anchors optimization is now enabled by default when
       optimizing for ARM.
     * GCC now uses a new EABI-compatible profiling interface for EABI
       targets. This requires a function __gnu_mcount_nc, which is
       provided by GNU libc versions 2.8 and later.

  AVR

     * The -mno-tablejump option has been deprecated because it has the
       same effect as the -fno-jump-tables option.
     * Added support for these new AVR devices:
          + ATA6289
          + ATtiny13A
          + ATtiny87
          + ATtiny167
          + ATtiny327
          + ATmega8C1
          + ATmega16C1
          + ATmega32C1
          + ATmega8M1
          + ATmega16M1
          + ATmega32M1
          + ATmega32U4
          + ATmega16HVB
          + ATmega4HVD
          + ATmega8HVD
          + ATmega64C1
          + ATmega64M1
          + ATmega16U4
          + ATmega32U6
          + ATmega128RFA1
          + AT90PWM81
          + AT90SCR100
          + M3000F
          + M3000S
          + M3001B

  IA-32/x86-64

     * Support for Intel AES built-in functions and code generation is
       available via -maes.
     * Support for Intel PCLMUL built-in function and code generation is
       available via -mpclmul.
     * Support for Intel AVX built-in functions and code generation is
       available via -mavx.
     * Automatically align the stack for local variables with alignment
       requirement.
     * 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
       an SVML ABI compatible library.
     * On x86-64, the ABI has been changed in the following cases to
       conform to the x86-64 ABI:
          + Passing/returning structures with flexible array member:
  struct foo
    {
      int i;
      int flex[];
    };
          + Passing/returning structures with complex float member:
  struct foo
    {
      int i;
      __complex__ float f;
    };
          + Passing/returning unions with long double member:
  union foo
    {
      int x;
      long double ld;
    };
       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.
     * A new target attribute was added to allow programmers to change the
       target options like -msse2 or -march=k8 for an individual function.
       You can also change the target options via the GCC target pragma
       for functions defined after the pragma.
     * GCC can now be configured with options --with-arch-32,
       --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and
       --with-tune-64 to control the default optimization separately for
       32-bit and 64-bit modes.

  IA-32/IA64

     * Support for __float128 (TFmode) IEEE quad type and corresponding
       TCmode IEEE complex quad type is available via the soft-fp library
       on IA-32/IA64 targets. This includes basic arithmetic operations
       (addition, subtraction, negation, multiplication and division) on
       __float128 real and TCmode complex values, the full set of IEEE
       comparisons between __float128 values, conversions to and from
       float, double and long double floating point types, as well as
       conversions to and from signed or unsigned integer, signed or
       unsigned long integer and signed or unsigned quad (TImode, IA64
       only) integer types. Additionally, all operations generate the full
       set of IEEE exceptions and support the full set of IEEE rounding
       modes.

  M68K/ColdFire

     * GCC now supports instruction scheduling for ColdFire V1, V3 and V4
       processors. (Scheduling support for ColdFire V2 processors was
       added in GCC 4.3.)
     * GCC now supports the -mxgot option to support programs requiring
       many GOT entries on ColdFire.
     * The m68k-*-linux-gnu target now builds multilibs by default.

  MIPS

     * MIPS Technologies have extended the original MIPS SVR4 ABI to
       include support for procedure linkage tables (PLTs) and copy
       relocations. These extensions allow GNU/Linux executables to use a
       significantly more efficient code model than the one defined by the
       original ABI.
       GCC support for this code model is available via a new command-line
       option, -mplt. There is also a new configure-time option,
       --with-mips-plt, to make -mplt the default.
       The new code model requires support from the assembler, the linker,
       and the runtime C library. This support is available in binutils
       2.19 and GLIBC 2.9.
     * GCC can now generate MIPS16 code for 32-bit GNU/Linux executables
       and 32-bit GNU/Linux shared libraries. This feature requires GNU
       binutils 2.19 or above.
     * Support for RMI's XLR processor is now available through the
       -march=xlr and -mtune=xlr options.
     * 64-bit targets can now perform 128-bit multiplications inline,
       instead of relying on a libgcc function.
     * Native GNU/Linux toolchains now support -march=native and
       -mtune=native, which select the host processor.
     * GCC now supports the R10K, R12K, R14K and R16K processors. The
       canonical -march= and -mtune= names for these processors are
       r10000, r12000, r14000 and r16000 respectively.
     * GCC can now work around the side effects of speculative execution
       on R10K processors. Please see the documentation of the
       -mr10k-cache-barrier option for details.
     * Support for the MIPS64 Release 2 instruction set has been added.
       The option -march=mips64r2 enables generation of these
       instructions.
     * GCC now supports Cavium Networks' Octeon processor. This support is
       available through the -march=octeon and -mtune=octeon options.
     * GCC now supports STMicroelectronics' Loongson 2E/2F processors. The
       canonical -march= and -mtune= names for these processors are
       loongson2e and loongson2f.

  picochip

   Picochip is a 16-bit processor. A typical picoChip contains over 250
   small cores, each with small amounts of memory. There are three
   processor variants (STAN, MEM and CTRL) with different instruction sets
   and memory configurations and they can be chosen using the -mae option.

   This port is intended to be a "C" only port.

  Power Architecture and PowerPC

     * GCC now supports the e300c2, e300c3 and e500mc processors.
     * GCC now supports Xilinx processors with a single-precision FPU.
     * Decimal floating point is now supported for e500 processors.

  S/390, zSeries and System z9/z10

     * Support for the IBM System z10 EC/BC processor has been added. When
       using the -march=z10 option, the compiler will generate code making
       use of instructions provided by the General-Instruction-Extension
       Facility and the Execute-Extension Facility.

  VxWorks

     * GCC now supports the thread-local storage mechanism used on
       VxWorks.

  Xtensa

     * GCC now supports thread-local storage (TLS) for Xtensa processor
       configurations that include the Thread Pointer option. TLS also
       requires support from the assembler and linker; this support is
       provided in the GNU binutils beginning with version 2.19.

Documentation improvements

Other significant improvements

GCC 4.4.1

   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
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).

GCC 4.4.2

   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
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).

GCC 4.4.3

   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
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).

GCC 4.4.4

   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
   not be complete (that is, it is possible that some PRs that have been
   fixed are not listed here).

   Please send FSF & GNU inquiries & questions to [17]gnu@gnu.org. There
   are also [18]other ways to contact the FSF.

   These pages are maintained by [19]the GCC team.


    For questions related to the use of GCC, please consult these web
    pages and the [20]GCC manuals. If that fails, the
    [21]gcc-help@gcc.gnu.org mailing list might help.
    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.
    All of our lists have [24]public archives.

   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Floor, Boston, MA 02110, USA.

   Verbatim copying and distribution of this entire article is permitted
   in any medium, provided this notice is preserved.
   Last modified 2010-04-29 [25]Valid XHTML 1.0

References

   1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.4
   2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
   3. http://gcc.gnu.org/gcc-4.4/porting_to.html
   4. http://gcc.gnu.org/wiki/Graphite
   5. http://openmp.org/wp/openmp-specifications/
   6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
   7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
   8. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#id476343
   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
  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
  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
  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
  17. mailto:gnu@gnu.org
  18. http://www.gnu.org/home.html#ContactInfo
  19. http://gcc.gnu.org/about.html
  20. http://gcc.gnu.org/onlinedocs/
  21. mailto:gcc-help@gcc.gnu.org
  22. mailto:gcc@gnu.org
  23. mailto:gcc@gcc.gnu.org
  24. http://gcc.gnu.org/lists.html
  25. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.3/index.html
                           GCC 4.3 Release Series

   January 24, 2009

   The [1]GNU project and the GCC developers are pleased to announce the
   release of GCC 4.3.4.

   This release is a bug-fix release, containing fixes for regressions in
   GCC 4.3.3 relative to previous releases of GCC.

Release History

   GCC 4.3.4
          August 4, 2009 ([2]changes)

   GCC 4.3.3
          January 24, 2009 ([3]changes)

   GCC 4.3.2
          August 27, 2008 ([4]changes)

   GCC 4.3.1
          June 6, 2008 ([5]changes)

   GCC 4.3.0
          March 5, 2008 ([6]changes)

References and Acknowledgements

   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
   GNU Compiler Collection.

   A list of [7]successful builds is updated as new information becomes
   available.

   The GCC developers would like to thank the numerous people that have
   contributed new features, improvements, bug fixes, and other changes as
   well as test results to GCC. This [8]amazing group of volunteers is
   what makes GCC successful.

   For additional information about GCC please refer to the [9]GCC project
   web site or contact the [10]GCC development mailing list.

   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
   are also [14]other ways to contact the FSF.

   These pages are maintained by [15]the GCC team.


    For questions related to the use of GCC, please consult these web
    pages and the [16]GCC manuals. If that fails, the
    [17]gcc-help@gcc.gnu.org mailing list might help.
    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.
    All of our lists have [20]public archives.

   Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
   Floor, Boston, MA 02110, USA.

   Verbatim copying and distribution of this entire article is permitted
   in any medium, provided this notice is preserved.
   Last modified 2009-10-15 [21]Valid XHTML 1.0

References

   1. http://www.gnu.org/
   2. 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
   5. 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/buildstat.html
   8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
   9. http://gcc.gnu.org/index.html
  10. mailto:gcc@gcc.gnu.org
  11. http://gcc.gnu.org/mirrors.html
  12. http://gcc.gnu.org/svn.html
  13. mailto:gnu@gnu.org
  14. http://www.gnu.org/home.html#ContactInfo
  15. http://gcc.gnu.org/about.html
  16. http://gcc.gnu.org/onlinedocs/
  17. mailto:gcc-help@gcc.gnu.org
  18. mailto:gcc@gnu.org
  19. mailto:gcc@gcc.gnu.org
  20. http://gcc.gnu.org/lists.html
  21. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.3/changes.html
                           GCC 4.3 Release Series
                      Changes, New Features, and Fixes

   The latest release in the 4.3 release series is [1]GCC 4.3.4.

Caveats

     * GCC requires the [2]GMP and [3]MPFR libraries for building all the
       various front-end languages it supports. See the [4]prerequisites
       page for version requirements.
     * ColdFire targets now treat long double as having the same format as
       double. In earlier versions of GCC, they used the 68881 long double
       format instead.
     * The m68k-uclinux target now uses the same calling conventions as
       m68k-linux-gnu. You can select the original calling conventions by
       configuring for m68k-uclinuxoldabi instead. Note that
       m68k-uclinuxoldabi also retains the original 80-bit long double on
       ColdFire targets.
     * The -fforce-mem option has been removed because it has had no
       effect in the last few GCC releases.
     * The i386 -msvr3-shlib option has been removed since it is no longer
       used.
     * Fastcall for i386 has been changed not to pass aggregate arguments
       in registers, following Microsoft compilers.
     * 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,
       which are no longer recognized. We removed these targets without a
       deprecation period because we discovered that they have been
       unusable since GCC 4.0.0.
     * Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*)
       has been removed. This support had been deprecated since GCC 4.0.0.
     * Support for a number of older systems and recently unmaintained or
       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
       will have their sources permanently removed.
       All GCC ports for the following processor architectures have been
       declared obsolete:
          + Morpho MT (mt-*)
       The following aliases for processor architectures have been
       declared obsolete. Users should use the indicated generic target
       names instead, with compile-time options such as -mcpu or
       configure-time options such as --with-cpu to control the
       configuration more precisely.
          + strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-*
            instead).
          + parisc*-*-* (use hppa*-*-* instead).
          + m680[012]0-*-* (use m68k-*-* instead).
       All GCC ports for the following operating systems have been
       declared obsolete:
          + BeOS (*-*-beos*)
          + kaOS (*-*-kaos*)
          + GNU/Linux using the a.out object format (*-*-linux*aout*)
          + GNU/Linux using version 1 of the GNU C Library
            (*-*-linux*libc1*)
          + Solaris versions before Solaris 7 (*-*-solaris2.[0-6],
            *-*-solaris2.[0-6].*)
          + Miscellaneous System V (*-*-sysv*)
          + WindISS (*-*-windiss*)
       Also, those for some individual systems on particular architectures
       have been obsoleted:
          + UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*)
          + CRIS with a.out object format (cris-*-aout)
          + BSD 4.3 on PA-RISC (hppa1.1-*-bsd*)
          + OSF/1 on PA-RISC (hppa1.1-*-osf*)
          + PRO on PA-RISC (hppa1.1-*-pro*)
          + Sequent PTX on IA32 (i[34567]86-sequent-ptx4*,
            i[34567]86-sequent-sysv4*)
          + SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*)
          + UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host
            was previously [5]removed in 2001, leaving only the support
            for UWIN as a target now being deprecated)
          + ChorusOS on PowerPC (powerpc-*-chorusos*)
          + All VAX configurations apart from NetBSD and OpenBSD
            (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*)
     * The [6]-Wconversion option has been modified. Its purpose now is to
       warn for implicit conversions that may alter a value. This new
       behavior is available for both C and C++. Warnings about
       conversions between signed and unsigned integers can be disabled by
       using -Wno-sign-conversion. In C++, they are disabled by default
       unless -Wsign-conversion is explicitly requested. The old behavior
       of -Wconversion, that is, warn for prototypes causing a type
       conversion that is different from what would happen to the same
       argument in the absence of a prototype, has been moved to a new
       option -Wtraditional-conversion, which is only available for C.
     * The -m386, -m486, -mpentium and -mpentiumpro tuning options have
       been removed because they were deprecated for more than 3 GCC major
       releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or
       -mtune=pentiumpro as a replacement.
     * The -funsafe-math-optimizations option now automatically turns on
       -fno-trapping-math in addition to -fno-signed-zeros, as it enables
       reassociation and thus may introduce or remove traps.
     * 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
       as well: use -maltivec for PowerPC platforms and -msse/-msse2 for
       i?86 and x86_64.
     * More information on porting to GCC 4.3 from previous versions of
       GCC can be found in the [7]porting guide for this release.

General Optimizer Improvements

     * The GCC middle-end has been integrated with the [8]MPFR library.
       This allows GCC to evaluate and replace at compile-time calls to
       built-in math functions having constant arguments with their
       mathematically equivalent results. In making use of [9]MPFR, GCC
       can generate correct results regardless of the math library
       implementation or floating point precision of the host platform.
       This also allows GCC to generate identical results regardless of
       whether one compiles in native or cross-compile configurations to a
       particular target. The following built-in functions take advantage
       of this new capability: acos, acosh, asin, asinh, atan2, atan,
       atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1,
       fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10,
       log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh,
       tan, tanh, tgamma, y0, y1 and yn. The float and long double
       variants of these functions (e.g. sinf and sinl) are also handled.
       The sqrt and cabs functions with constant arguments were already
       optimized in prior GCC releases. Now they also use [10]MPFR.
     * A new forward propagation pass on RTL was added. The new pass
       replaces several slower transformations, resulting in compile-time
       improvements as well as better code generation in some cases.
     * A new command-line switch -frecord-gcc-switches has been added to
       GCC, although it is only enabled for some targets. The switch
       causes the command line that was used to invoke the compiler to be
       recorded into the object file that is being created. The exact
       format of this recording is target and binary file format
       dependent, but it usually takes the form of a note section
       containing ASCII text. The switch is related to the -fverbose-asm
       switch, but that one only records the information in the assembler
       output file as comments, so the information never reaches the
       object file.
     * The inliner heuristic is now aware of stack frame consumption. New
       command-line parameters --param large-stack-frame and --param
       large-stack-frame-growth can be used to limit stack frame size
       growth caused by inlining.
     * During feedback directed optimizations, the expected block size the
       memcpy, memset and bzero functions operate on is discovered and for
       cases of commonly used small sizes, specialized inline code is
       generated.
     * __builtin_expect no longer requires its argument to be a compile
       time constant.
     * Interprocedural optimization was reorganized to work on functions
       in SSA form. This enables more precise and cheaper dataflow
       analysis and makes writing interprocedural optimizations easier.
       The following improvements have been implemented on top of this
       framework:
          + Pre-inline optimization: Selected local optimization passes
            are run before the inliner (and other interprocedural passes)
            are executed. This significantly improves the accuracy of code
            growth estimates used by the inliner and reduces the overall
            memory footprint for large compilation units.
          + Early inlining (a simple bottom-up inliner pass inlining only
            functions whose body is smaller than the expected call
            overhead) is now executed with the early optimization passes,
            thus inlining already optimized function bodies into an
            unoptimized function that is subsequently optimized by early
            optimizers. This enables the compiler to quickly eliminate
            abstraction penalty in C++ programs.
          + Interprocedural constant propagation now operate on SSA form
            increasing accuracy of the analysis.
     * A new internal representation for GIMPLE statements has been
       contributed, resulting in compile-time memory savings.
     * The vectorizer was enhanced to support vectorization of outer
       loops, intra-iteration parallelism (loop-aware SLP), vectorization
       of strided accesses and loops with multiple data-types. Run-time
       dependency testing using loop versioning was added. The cost model,
       turned on by -fvect-cost-model, was developed.

New Languages and Language specific improvements

     * We have added new command-line options
       -finstrument-functions-exclude-function-list and
       -finstrument-functions-exclude-file-list. They provide more control
       over which functions are annotated by the -finstrument-functions
       option.

  C family

     * Implicit conversions between generic vector types are now only
       permitted when the two vectors in question have the same number of
       elements and compatible element types. (Note that the restriction
       involves compatible element types, not implicitly-convertible
       element types: thus, a vector type with element type int may not be
       implicitly converted to a vector type with element type unsigned
       int.) This restriction, which is in line with specifications for
       SIMD architectures such as AltiVec, may be relaxed using the flag
       -flax-vector-conversions. This flag is intended only as a
       compatibility measure and should not be used for new code.
     * -Warray-bounds has been added and is now enabled by default for
       -Wall . It produces warnings for array subscripts that can be
       determined at compile time to be always out of bounds.
       -Wno-array-bounds will disable the warning.
     * The constructor and destructor function attributes now accept
       optional priority arguments which control the order in which the
