X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=NEWS;fp=NEWS;h=a12f52ff5e9da63732cdebd31559f2c80896734f;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=0000000000000000000000000000000000000000;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/NEWS b/NEWS new file mode 100644 index 00000000..a12f52ff --- /dev/null +++ b/NEWS @@ -0,0 +1,10555 @@ +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 + + October 15, 2009 + + The [1]GNU project and the GCC developers are pleased to announce the + release of GCC 4.4.3. + + This release is a bug-fix release, containing fixes for regressions in + GCC 4.4.1 relative to previous releases of GCC. + +Release History + + GCC 4.4.3 + January 21, 2010 ([2]changes) + + GCC 4.4.2 + October 15, 2009 ([3]changes) + + GCC 4.4.1 + July 22, 2009 ([4]changes) + + GCC 4.4.0 + April 21, 2009 ([5]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 [6]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 [7]amazing group of volunteers is + what makes GCC successful. + + For additional information about GCC please refer to the [8]GCC project + web site or contact the [9]GCC development mailing list. + + To obtain GCC please use [10]our mirror sites or [11]our SVN server. + + Please send FSF & GNU inquiries & questions to [12]gnu@gnu.org. There + are also [13]other ways to contact the FSF. + + These pages are maintained by [14]the GCC team. + + + For questions related to the use of GCC, please consult these web + pages and the [15]GCC manuals. If that fails, the + [16]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 [17]gcc@gnu.org or [18]gcc@gcc.gnu.org. + All of our lists have [19]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-01-21 [20]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/buildstat.html + 7. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html + 8. http://gcc.gnu.org/index.html + 9. mailto:gcc@gcc.gnu.org + 10. http://gcc.gnu.org/mirrors.html + 11. http://gcc.gnu.org/svn.html + 12. mailto:gnu@gnu.org + 13. http://www.gnu.org/home.html#ContactInfo + 14. http://gcc.gnu.org/about.html + 15. http://gcc.gnu.org/onlinedocs/ + 16. mailto:gcc-help@gcc.gnu.org + 17. mailto:gcc@gnu.org + 18. mailto:gcc@gcc.gnu.org + 19. http://gcc.gnu.org/lists.html + 20. 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.3. + +Caveats + + * __builtin_stdarg_start has been completely removed from GCC. + Support for 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 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 , , , + , , , , + , and . + + unique_ptr, additions, exception propagation, and + support for the new character types in and . + + 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 . + + 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). + + Please send FSF & GNU inquiries & questions to [16]gnu@gnu.org. There + are also [17]other ways to contact the FSF. + + These pages are maintained by [18]the GCC team. + + + For questions related to the use of GCC, please consult these web + pages and the [19]GCC manuals. If that fails, the + [20]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 [21]gcc@gnu.org or [22]gcc@gcc.gnu.org. + All of our lists have [23]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-01-21 [24]Valid XHTML 1.0 + +References + + 1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.3 + 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. mailto:gnu@gnu.org + 17. http://www.gnu.org/home.html#ContactInfo + 18. http://gcc.gnu.org/about.html + 19. http://gcc.gnu.org/onlinedocs/ + 20. mailto:gcc-help@gcc.gnu.org + 21. mailto:gcc@gnu.org + 22. mailto:gcc@gcc.gnu.org + 23. http://gcc.gnu.org/lists.html + 24. 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 + constructor and destructor functions are run. + * New [11]command-line options -Wtype-limits, + -Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body, + -Wclobbered and -Wignored-qualifiers have been added for finer + control of the diverse warnings enabled by -Wextra. + * A new function attribute alloc_size has been added to mark up + malloc style functions. For constant sized allocations this can be + used to find out the size of the returned pointer using the + __builtin_object_size() function for buffer overflow checking and + similar. This supplements the already built-in malloc and calloc + constant size handling. + * Integer constants written in binary are now supported as a GCC + extension. They consist of a prefix 0b or 0B, followed by a + sequence of 0 and 1 digits. + * A new predefined macro __COUNTER__ has been added. It expands to + sequential integral values starting from 0. In conjunction with the + ## operator, this provides a convenient means to generate unique + identifiers. + * A new command-line option -fdirectives-only has been added. It + enables a special preprocessing mode which improves the performance + of applications like distcc and ccache. + * Fixed-point data types and operators have been added. They are + based on Chapter 4 of the Embedded-C specification (n1169.pdf). + Currently, only MIPS targets are supported. + * Decimal floating-point arithmetic based on draft ISO/IEC TR 24732, + N1241, is now supported as a GCC extension to C for targets + i[34567]86-*-linux-gnu, powerpc*-*-linux-gnu, s390*-ibm-linux-gnu, + and x86_64-*-linux-gnu. The feature introduces new data types + _Decimal32, _Decimal64, and _Decimal128 with constant suffixes DF, + DD, and DL. + + C++ + + * [12]Experimental support for the upcoming ISO C++ standard, C++0x. + * -Wc++0x-compat has been added and is now enabled by default for + -Wall. It produces warnings for constructs whose meaning differs + between ISO C++ 1998 and C++0x. + * The -Wparentheses option now works for C++ as it does for C. It + warns if parentheses are omitted when operators with confusing + precedence are nested. It also warns about ambiguous else + statements. Since -Wparentheses is enabled by -Wall, this may cause + additional warnings with existing C++ code which uses -Wall. These + new warnings may be disabled by using -Wall -Wno-parentheses. + * The -Wmissing-declarations now works for C++ as it does for C. + * The -fvisibility-ms-compat flag was added, to make it easier to + port larger projects using shared libraries from Microsoft's Visual + Studio to ELF and Mach-O systems. + * C++ attribute handling has been overhauled for template arguments + (ie dependent types). In particular, __attribute__((aligned(T))); + works for C++ types. + + Runtime Library (libstdc++) + + * [13]Experimental support for the upcoming ISO C++ standard, C++0x. + * Support for TR1 mathematical special functions and regular + expressions. ([14]Implementation status of TR1) + * Default what implementations give more elaborate exception strings + for bad_cast, bad_typeid, bad_exception, and bad_alloc. + * Header dependencies have been streamlined, reducing unnecessary + includes and pre-processed bloat. + * Variadic template implementations of items in and + . + * An experimental [15]parallel mode has been added. This is a + parallel implementation of many C++ Standard library algorithms, + like std::accumulate, std::for_each, std::transform, or std::sort, + to give but four examples. These algorithms can be substituted for + the normal (sequential) libstdc++ algorithms on a piecemeal basis, + or all existing algorithms can be transformed via the + -D_GLIBCXX_PARALLEL macro. + * Debug mode versions of classes in and + . + * Formal deprecation of and , which are + now and . This code: + #include + __gnu_cxx::hash_set s; + + Can be transformed (in order of preference) to: + #include + std::tr1::unordered_set s; + + or + #include + __gnu_cxx::hash_set s; + + Similar transformations apply to __gnu_cxx::hash_map, + __gnu_cxx::hash_multimap, __gnu_cxx::hash_set, + __gnu_cxx::hash_multiset. + + Fortran + + * Due to the fact that the [16]GMP and [17]MPFR libraries are + required for all languages, Fortran is no longer special in this + regard and is available by default. + * The [18]-fexternal-blas option has been added, which generates + calls to BLAS routines for intrinsic matrix operations such as + matmul rather than using the built-in algorithms. + * Support to give a backtrace (compiler flag -fbacktrace or + environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems + only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a + run-time error occured. + * GNU Fortran now defines __GFORTRAN__ when it runs the C + preprocessor (CPP). + * The [19]-finit-local-zero, -finit-real, -finit-integer, + -finit-character, and -finit-logical options have been added, which + can be used to initialize local variables. + * The intrinsic procedures [20]GAMMA and [21]LGAMMA have been added, + which calculate the Gamma function and its logarithm. Use EXTERNAL + gamma if you want to use your own gamma function. + * GNU Fortran now regards the backslash character as literal (as + required by the Fortran 2003 standard); using [22]-fbackslash GNU + Fortran interprets backslashes as C-style escape characters. + * The [23]interpretation of binary, octal and hexadecimal (BOZ) + literal constants has been changed. Before they were always + interpreted as integer; now they are bit-wise transferred as + argument of INT, REAL, DBLE and CMPLX as required by the Fortran + 2003 standard, and for real and complex variables in DATA + statements or when directly assigned to real and complex variables. + Everywhere else and especially in expressions they are still + regarded as integer constants. + * Fortran 2003 support has been extended: + + Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE + + Pointer intent + + Intrinsic module ISO_ENV_FORTRAN + + Interoperability with C (ISO C Bindings) + + ABSTRACT INTERFACES and PROCEDURE statements (without POINTER + attribute) + + Fortran 2003 BOZ + + Java (GCJ) + + * 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 + existing front end bugs. + * libgcj now supports all 1.5 language features which require runtime + support: foreach, enum, annotations, generics, and auto-boxing. + * We've made many changes to the tools shipped with gcj. + + The old jv-scan tool has been removed. This tool never really + worked properly. There is no replacement. + + gcjh has been rewritten. Some of its more obscure options no + longer work, but are still recognized in an attempt at + compatibility. gjavah is a new program with similar + functionality but different command-line options. + + grmic and grmiregistry have been rewritten. grmid has been + added. + + gjar replaces the old fastjar. + + gjarsigner (used for signing jars), gkeytool (used for key + management), gorbd (for CORBA), gserialver (computes + serialization UIDs), and gtnameserv (also for CORBA) are now + installed. + * 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 + 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 + run time class gnu.gcj.util.GCInfo. + * java.util.TimeZone can now read files from /usr/share/zoneinfo to + provide correct, updated, timezone information. This means that + packagers no longer have to update libgcj when a time zone change + is published. + +New Targets and Target Specific Improvements + + IA-32/x86-64 + + * Tuning for Intel Core 2 processors is available via -mtune=core2 + and -march=core2. + * Tuning for AMD Geode processors is available via -mtune=geode and + -march=geode. + * Code generation of block move (memcpy) and block set (memset) was + rewritten. GCC can now pick the best algorithm (loop, unrolled + 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 + new option -minline-stringops-dynamically has been added. With this + option string operations of unknown size are expanded such that + small blocks are copied by in-line code, while for large blocks a + library call is used. This results in faster code than + -minline-all-stringops when the library implementation is capable + of using cache hierarchy hints. The heuristic choosing the + particular algorithm can be overwritten via -mstringop-strategy. + Newly also memset of values different from 0 is inlined. + * GCC no longer places the cld instruction before string operations. + 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 + in asm statement without reseting it afterward. + * Support for SSSE3 built-in functions and code generation are + available via -mssse3. + * Support for SSE4.1 built-in functions and code generation are + available via -msse4.1. + * Support for SSE4.2 built-in functions and code generation are + available via -msse4.2. + * 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 + allow explicit control of x87 floating point precision. + * Support for __float128 (TFmode) IEEE quad type and corresponding + TCmode IEEE complex quad type is available via the soft-fp library + on x86_64 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) integer + types. Additionally, all operations generate the full set of IEEE + exceptions and support the full set of IEEE rounding modes. + * 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 + link to an ACML ABI compatible library. + + ARM + + * Compiler and Library support for Thumb-2 and the ARMv7 architecture + has been added. + + CRIS + + New features + + * Compiler and Library support for the CRIS v32 architecture, as + found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been + added. + + Configuration changes + + * The cris-*-elf target now includes support for CRIS v32, including + libraries, through the -march=v32 option. + * A new crisv32-*-elf target defaults to generate code for CRIS v32. + * A new crisv32-*-linux* target defaults to generate code for CRIS + v32. + * The cris-*-aout target has been obsoleted. + + Improved support for built-in functions + + * GCC can now use the lz and swapwbr instructions to implement the + __builtin_clz, __builtin_ctz and __builtin_ffs family of functions. + * __builtin_bswap32 is now implemented using the swapwb instruction, + when available. + + m68k and ColdFire + + New features + + * Support for several new ColdFire processors has been added. You can + generate code for them using the new -mcpu option. + * All targets now support ColdFire processors. + * m68k-uclinux targets have improved support for C++ constructors and + destructors, and for shared libraries. + * 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. + + Optimizations + + * Support for sibling calls has been added. + * More use is now made of the ColdFire mov3q instruction. + * __builtin_clz is now implemented using the ff1 ColdFire + instruction, when available. + * GCC now honors the -m68010 option. 68010 code now uses clr rather + than move to zero volatile memory. + * 68020 targets and above can now use symbol(index.size*scale) + addresses for indexed array accesses. Earlier compilers would + always load the symbol into a base register first. + + Configuration changes + + * All m68k and ColdFire targets now allow the default processor to be + set at configure time using --with-cpu. + * A --with-arch configuration option has been added. This option + allows you to restrict a target to ColdFire or non-ColdFire + processors. + + Preprocessor macros + + * An __mcfv*__ macro is now defined for all ColdFire targets. + (Earlier versions of GCC only defined __mcfv4e__.) + * __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added. + * All targets now define __mc68010 and __mc68010__ when generating + 68010 code. + + Command-line changes + + * New command-line options -march, -mcpu, -mtune and -mhard-float + have been added. These options apply to both m68k and ColdFire + targets. + * -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative + versions of -mshort, etc. + * -fforce-addr has been removed. It is now ignored by the compiler. + + Other improvements + + * ColdFire targets now try to maintain a 4-byte-aligned stack where + possible. + * m68k-uclinux targets now try to avoid situations that lead to the + load-time error: BINFMT_FLAT: reloc outside program. + + MIPS + + Changes to existing configurations + + * libffi and libjava now support all three GNU/Linux ABIs: o32, n32 + and n64. Every GNU/Linux configuration now builds these libraries + by default. + * GNU/Linux configurations now generate -mno-shared code unless + overridden by -fpic, -fPIC, -fpie or -fPIE. + * mipsisa32*-linux-gnu configurations now generate hard-float code by + default, just like other mipsisa32* and mips*-linux-gnu + configurations. You can build a soft-float version of any + mips*-linux-gnu configuration by passing --with-float=soft to + configure. + * mips-wrs-vxworks now supports run-time processes (RTPs). + + Changes to existing command-line options + + * The -march and -mtune options no longer accept 24k as a processor + name. Please use 24kc, 24kf2_1 or 24kf1_1 instead. + * The -march and -mtune options now accept 24kf2_1, 24kef2_1 and + 34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The + options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for + 24kx, 24kex and 34kx. + + New configurations + + GCC now supports the following configurations: + * mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by + default. Earlier releases also recognized this configuration, but + they treated it in the same way as mipsisa32*-linux-gnu*. Note that + you can customize any mips*-linux-gnu* configuration to a + particular ISA or processor by passing an appropriate --with-arch + option to configure. + * mipsisa*-sde-elf*, which provides compatibility with MIPS + Technologies' SDE toolchains. The configuration uses the SDE + libraries by default, but you can use it like other newlib-based + ELF configurations by passing --with-newlib to configure. It is the + only configuration besides mips64vr*-elf* to build MIPS16 as well + as non-MIPS16 libraries. + * mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf* + configuration, but uses the o32 and o64 ABIs instead of the 32-bit + and 64-bit forms of the EABI. + + New processors and application-specific extensions + + * Support for the SmartMIPS ASE is available through the new + -msmartmips option. + * Support for revision 2 of the DSP ASE is available through the new + -mdspr2 option. A new preprocessor macro called __mips_dsp_rev + indicates the revision of the ASE in use. + * Support for the 4KS and 74K families of processors is available + through the -march and -mtune options. + + Improved support for built-in functions + + * GCC can now use load-linked, store-conditional and sync + instructions to implement atomic built-in functions such as + __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. + * GCC can now use the clz and dclz instructions to implement the + __builtin_ctz and __builtin_ffs families of functions. + * There is a new __builtin___clear_cache function for flushing the + instruction cache. GCC expands this function inline on MIPS32 + revision 2 targets, otherwise it calls the function specified by + -mcache-flush-func. + + MIPS16 improvements + + * GCC can now compile objects that contain a mixture of MIPS16 and + non-MIPS16 code. There are two new attributes, mips16 and nomips16, + for specifying which mode a function should use. + * A new option called -minterlink-mips16 makes non-MIPS16 code + link-compatible with MIPS16 code. + * After many bug fixes, the long-standing MIPS16 -mhard-float support + should now work fairly reliably. + * GCC can now use the MIPS16e save and restore instructions. + * -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled + with -G0 -fsection-anchors is often smaller than code compiled with + -G8. However, please note that you must usually compile all objects + in your application with the same -G option; see the documentation + of -G for details. + * A new option called-mcode-readable specifies which instructions are + allowed to load from the code segment. -mcode-readable=yes is the + default and says that any instruction may load from the code + segment. The other alternatives are -mcode-readable=pcrel, which + says that only PC-relative MIPS16 instructions may load from the + code segment, and -mcode-readable=no, which says that no + instruction may do so. Please see the documentation for more + details, including example uses. + + Small-data improvements + + There are three new options for controlling small data: + * -mno-extern-sdata, which disables small-data accesses for + externally-defined variables. Code compiled with -Gn + -mno-extern-sdata will be link-compatible with any -G setting + between -G0 and -Gn inclusive. + * -mno-local-sdata, which disables the use of small-data sections for + data that is not externally visible. This option can be a useful + way of reducing small-data usage in less performance-critical parts + of an application. + * -mno-gpopt, which disables the use of the $gp register while still + honoring the -G limit when placing externally-visible data. This + option implies -mno-extern-sdata and -mno-local-sdata and it can be + useful in situations where $gp does not necessarily hold the + expected value. + + Miscellaneous improvements + + * There is a new option called -mbranch-cost for tweaking the + perceived cost of branches. + * If GCC is configured to use a version of GAS that supports the + .gnu_attribute directive, it will use that directive to record + certain properties of the output code. .gnu_attribute is new to GAS + 2.18. + * There are two new function attributes, near and far, for overriding + the command-line setting of -mlong-calls on a function-by-function + basis. + * -mfp64, which previously required a 64-bit target, now works with + MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and + mipsisa*-sde-elf* configurations provide suitable library support. + * GCC now recognizes the -mdmx and -mmt options and passes them down + to the assembler. It does nothing else with the options at present. + + SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture + (BEA) + + * Support has been added for this new architecture. + + RS6000 (POWER/PowerPC) + + * Support for the PowerPC 750CL paired-single instructions has been + added with a new powerpc-*-linux*paired* target configuration. It + is enabled by an associated -mpaired option and can be accessed + using new built-in functions. + * Support for auto-detecting architecture and system configuration to + auto-select processor optimization tuning. + * Support for VMX on AIX 5.3 has been added. + * Support for AIX Version 6.1 has been added. + + S/390, zSeries and System z9 + + * Support for the IBM System z9 EC/BC processor (z9 GA3) has been + added. When using the -march=z9-ec option, the compiler will + generate code making use of instructions provided by the decimal + floating point facility and the floating point conversion facility + (pfpo). Besides the instructions used to implement decimal floating + point operations these facilities also contain instructions to move + between general purpose and floating point registers and to modify + and copy the sign-bit of floating point values. + * When the -march=z9-ec option is used the new + -mhard-dfp/-mno-hard-dfp options can be used to specify whether the + decimal floating point hardware instructions will be used or not. + If none of them is given the hardware support is enabled by + default. + * The -mstack-guard option can now be omitted when using stack + checking via -mstack-size in order to let GCC choose a sensible + stack guard value according to the frame size of each function. + * Various changes to improve performance of generated code have been + implemented, including: + + The condition code set by an add logical with carry + instruction is now available for overflow checks like: a + b + + carry < b. + + The test data class instruction is now used to implement + sign-bit and infinity checks of binary and decimal floating + point numbers. + + Xtensa + + * Stack unwinding for exception handling now uses by default a + specialized version of DWARF unwinding. This is not + binary-compatible with the setjmp/longjmp (sjlj) unwinding used for + Xtensa with previous versions of GCC. + * For Xtensa processors that include the Conditional Store option, + the built-in functions for atomic memory access are now implemented + using S32C1I instructions. + * If the Xtensa NSA option is available, GCC will use it to implement + the __builtin_ctz and __builtin_clz functions. + +Documentation improvements + + * Existing libstdc++ documentation has been edited and restructured + into a single DocBook XML manual. The results can be viewed online + [24]here. + +Other significant improvements + + * The compiler's --help command-line option has been extended so that + it now takes an optional set of arguments. These arguments restrict + the information displayed to specific classes of command-line + options, and possibly only a subset of those options. It is also + now possible to replace the descriptive text associated with each + displayed option with an indication of its current value, or for + binary options, whether it has been enabled or disabled. + Here are some examples. The following will display all the options + controlling warning messages: + --help=warnings + + Whereas this will display all the undocumented, target specific + options: + --help=target,undocumented + + This sequence of commands will display the binary optimizations + that are enabled by -O3: + gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts + gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts + diff /tmp/O2-opts /tmp/O3-opts | grep enabled + + * The configure options --with-pkgversion and --with-bugurl have been + added. These allow distributors of GCC to include a + distributor-specific string in manuals and --version output and to + specify the URL for reporting bugs in their versions of GCC. + +GCC 4.3.1 + + 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 + not be complete (that is, it is possible that some PRs that have been + fixed are not listed here). + +Target Specific Changes + + IA-32/x86-64 + + ABI changes + + * Starting with GCC 4.3.1, decimal floating point variables are + aligned to their natural boundaries when they are passed on the + stack for i386. + + Command-line changes + + * Starting with GCC 4.3.1, the -mcld option has been added to + automatically generate a cld instruction in the prologue of + functions that use string instructions. This option is used for + backward compatibility on some operating systems and can be enabled + by default for 32-bit x86 targets by configuring GCC with the + --enable-cld configure option. + +GCC 4.3.2 + + 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 + not be complete (that is, it is possible that some PRs that have been + fixed are not listed here). + +GCC 4.3.3 + + 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 + not be complete (that is, it is possible that some PRs that have been + fixed are not listed here). + +GCC 4.3.4 + + 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 + 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 [29]gnu@gnu.org. There + are also [30]other ways to contact the FSF. + + These pages are maintained by [31]the GCC team. + + + For questions related to the use of GCC, please consult these web + pages and the [32]GCC manuals. If that fails, the + [33]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 [34]gcc@gnu.org or [35]gcc@gcc.gnu.org. + All of our lists have [36]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-08-13 [37]Valid XHTML 1.0 + +References + + 1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.4 + 2. http://gmplib.org/ + 3. http://www.mpfr.org/ + 4. http://gcc.gnu.org/install/prerequisites.html + 5. http://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html + 6. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options + 7. http://gcc.gnu.org/gcc-4.3/porting_to.html + 8. http://www.mpfr.org/ + 9. http://www.mpfr.org/ + 10. http://www.mpfr.org/ + 11. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html + 12. 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 + 15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html + 16. http://gmplib.org/ + 17. http://www.mpfr.org/ + 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 + 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 + 22. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html + 23. http://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html + 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 + 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 + 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4 + 29. mailto:gnu@gnu.org + 30. http://www.gnu.org/home.html#ContactInfo + 31. http://gcc.gnu.org/about.html + 32. http://gcc.gnu.org/onlinedocs/ + 33. mailto:gcc-help@gcc.gnu.org + 34. mailto:gcc@gnu.org + 35. mailto:gcc@gcc.gnu.org + 36. http://gcc.gnu.org/lists.html + 37. http://validator.w3.org/check/referer +====================================================================== +http://gcc.gnu.org/gcc-4.2/index.html + GCC 4.2 Release Series + + May 19, 2008 + + The [1]GNU project and the GCC developers are pleased to announce the + release of GCC 4.2.4. + + This release is a bug-fix release, containing fixes for regressions in + GCC 4.2.3 relative to previous releases of GCC. + +Release History + + GCC 4.2.4 + May 19, 2008 ([2]changes) + + GCC 4.2.3 + February 1, 2008 ([3]changes) + + GCC 4.2.2 + October 7, 2007 ([4]changes) + + GCC 4.2.1 + July 18, 2007 ([5]changes) + + GCC 4.2.0 + May 13, 2007 ([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 2008-10-04 [21]Valid XHTML 1.0 + +References + + 1. http://www.gnu.org/ + 2. 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 + 5. 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 + 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.2/changes.html + GCC 4.2 Release Series + Changes, New Features, and Fixes + +Caveats + + * 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 + used to apply had been removed before GCC 4.0. + +General Optimizer Improvements + + * New command-line options specify the possible relationships among + parameters and between parameters and global data. For example, + -fargument-noalias-anything specifies that arguments do not alias + any other storage. + Each language will automatically use whatever option is required by + the language standard. You should not need to use these options + yourself. + +New Languages and Language specific improvements + + * [1]OpenMP is now supported for the C, C++ and Fortran compilers. + * New command-line options -fstrict-overflow and -Wstrict-overflow + have been added. -fstrict-overflow tells the compiler that it may + assume that the program follows the strict signed overflow + semantics permitted for the language: for C and C++ this means that + the compiler may assume that signed overflow does not occur. For + example, a loop like + for (i = 1; i > 0; i *= 2) + + is presumably intended to continue looping until i overflows. With + -fstrict-overflow, the compiler may assume that signed overflow + will not occur, and transform this into an infinite loop. + -fstrict-overflow is turned on by default at -O2, and may be + disabled via -fno-strict-overflow. The -Wstrict-overflow option may + be used to warn about cases where the compiler assumes that signed + overflow will not occur. It takes five different levels: + -Wstrict-overflow=1 to 5. See the [2]documentation for details. + -Wstrict-overflow=1 is enabled by -Wall. + * The new command-line option -fno-toplevel-reorder directs GCC to + emit top-level functions, variables, and asm statements in the same + order that they appear in the input file. This is intended to + support existing code which relies on a particular ordering (for + example, code which uses top-level asm statements to switch + sections). For new code, it is generally better to use function and + variable attributes. The -fno-toplevel-reorder option may be used + 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 + 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 + report. + + C family + + * The pragma redefine_extname will now macro expand its tokens for + compatibility with SunPRO. + * 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 + 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 + disabled with the new gnu_inline function attribute or the new + -fgnu89-inline command-line option. Also, GCC 4.2 and later will + define one of the preprocessor macros __GNUC_GNU_INLINE__ or + __GNUC_STDC_INLINE__ to indicate the semantics of inline functions + in the current compilation. + * A new command-line option -Waddress has been added to warn about + suspicious uses of memory addresses as, for example, using the + address of a function in a conditional expression, and comparisons + against the memory address of a string literal. This warning is + enabled by -Wall. + + C++ + + * C++ visibility handling has been overhauled. + Restricted visiblity is propagated from classes to members, from + functions to local statics, and from templates and template + arguments to instantiations, unless the latter has explicitly + declared visibility. + The visibility attribute for a class must come between the + class-key and the name, not after the closing brace. + Attributes are now allowed for enums and elaborated-type-specifiers + that only declare a type. + Members of the anonymous namespace are now local to a particular + translation unit, along with any other declarations which use them, + though they are still treated as having external linkage for + language semantics. + * The (undocumented) extension which permitted templates with default + arguments to be bound to template template parameters with fewer + parameters has been removed. For example: + template