diff options
Diffstat (limited to 'gcc-4.8/NEWS')
-rw-r--r-- | gcc-4.8/NEWS | 14005 |
1 files changed, 0 insertions, 14005 deletions
diff --git a/gcc-4.8/NEWS b/gcc-4.8/NEWS deleted file mode 100644 index 84ff00692..000000000 --- a/gcc-4.8/NEWS +++ /dev/null @@ -1,14005 +0,0 @@ -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.8/index.html - - GCC 4.8 Release Series - - May 22, 2014 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 4.8.3. - - This release is a bug-fix release, containing fixes for regressions in - GCC 4.8.2 relative to previous releases of GCC. - -Release History - - GCC 4.8.3 - May 22, 2014 ([2]changes, [3]documentation) - - GCC 4.8.2 - October 16, 2013 ([4]changes, [5]documentation) - - GCC 4.8.1 - May 31, 2013 ([6]changes, [7]documentation) - - GCC 4.8.0 - March 22, 2013 ([8]changes, [9]documentation) - -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 [10]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 [11]amazing group of volunteers is - what makes GCC successful. - - For additional information about GCC please refer to the [12]GCC - project web site or contact the [13]GCC development mailing list. - - To obtain GCC please use [14]our mirror sites or [15]our SVN server. - - - 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. Comments on these - web pages and the development of GCC are welcome on our developer - list at [18]gcc@gcc.gnu.org. All of [19]our lists have public - archives. - - Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [21]maintained by the GCC team. Last modified - 2014-05-22[22]. - -References - - 1. http://www.gnu.org/ - 2. http://gcc.gnu.org/gcc-4.8/changes.html - 3. http://gcc.gnu.org/onlinedocs/4.8.3/ - 4. http://gcc.gnu.org/gcc-4.8/changes.html - 5. http://gcc.gnu.org/onlinedocs/4.8.2/ - 6. http://gcc.gnu.org/gcc-4.8/changes.html - 7. http://gcc.gnu.org/onlinedocs/4.8.1/ - 8. http://gcc.gnu.org/gcc-4.8/changes.html - 9. http://gcc.gnu.org/onlinedocs/4.8.0/ - 10. http://gcc.gnu.org/gcc-4.8/buildstat.html - 11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 12. http://gcc.gnu.org/index.html - 13. mailto:gcc@gcc.gnu.org - 14. http://gcc.gnu.org/mirrors.html - 15. http://gcc.gnu.org/svn.html - 16. http://gcc.gnu.org/onlinedocs/ - 17. mailto:gcc-help@gcc.gnu.org - 18. mailto:gcc@gcc.gnu.org - 19. http://gcc.gnu.org/lists.html - 20. http://www.fsf.org/ - 21. http://gcc.gnu.org/about.html - 22. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.8/changes.html - - GCC 4.8 Release Series - Changes, New Features, and Fixes - -Caveats - - GCC now uses C++ as its implementation language. This means that to - build GCC from sources, you will need a C++ compiler that understands - C++ 2003. For more details on the rationale and specific changes, - please refer to the [1]C++ conversion page. - - To enable the Graphite framework for loop optimizations you now need - CLooG version 0.18.0 and ISL version 0.11.1. Both can be obtained from - the [2]GCC infrastructure directory. The installation manual contains - more information about requirements to build GCC. - - GCC now uses a more aggressive analysis to derive an upper bound for - the number of iterations of loops using constraints imposed by language - standards. This may cause non-conforming programs to no longer work as - expected, such as SPEC CPU 2006 464.h264ref and 416.gamess. A new - option, -fno-aggressive-loop-optimizations, was added to disable this - aggressive analysis. In some loops that have known constant number of - iterations, but undefined behavior is known to occur in the loop before - reaching or during the last iteration, GCC will warn about the - undefined behavior in the loop instead of deriving lower upper bound of - the number of iterations for the loop. The warning can be disabled with - -Wno-aggressive-loop-optimizations. - - On ARM, a bug has been fixed in GCC's implementation of the AAPCS rules - for the layout of vectors that could lead to wrong code being - generated. Vectors larger than 8 bytes in size are now by default - aligned to an 8-byte boundary. This is an ABI change: code that makes - explicit use of vector types may be incompatible with binary objects - built with older versions of GCC. Auto-vectorized code is not affected - by this change. - - On AVR, support has been removed for the command-line option - -mshort-calls deprecated in GCC 4.7. - - On AVR, the configure option --with-avrlibc supported since GCC 4.7.2 - is turned on per default for all non-RTEMS configurations. This option - arranges for a better integration of [3]AVR Libc with avr-gcc. For - technical details, see [4]PR54461. To turn off the option in non-RTEMS - configurations, use --with-avrlibc=no. If the compiler is configured - for RTEMS, the option is always turned off. - - More information on porting to GCC 4.8 from previous versions of GCC - can be found in the [5]porting guide for this release. - -General Optimizer Improvements (and Changes) - - * DWARF4 is now the default when generating DWARF debug information. - When -g is used on a platform that uses DWARF debugging - information, GCC will now default to -gdwarf-4 - -fno-debug-types-section. - GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 debug information - consumers support DWARF4 by default. Before GCC 4.8 the default - version used was DWARF2. To make GCC 4.8 generate an older DWARF - version use -g together with -gdwarf-2 or -gdwarf-3. The default - for Darwin and VxWorks is still -gdwarf-2 -gstrict-dwarf. - * A new general optimization level, -Og, has been introduced. It - addresses the need for fast compilation and a superior debugging - experience while providing a reasonable level of runtime - performance. Overall experience for development should be better - than the default optimization level -O0. - * A new option -ftree-partial-pre was added to control the partial - redundancy elimination (PRE) optimization. This option is enabled - by default at the -O3 optimization level, and it makes PRE more - aggressive. - * The option -fconserve-space has been removed; it was no longer - useful on most targets since GCC supports putting variables into - BSS without making them common. - * The struct reorg and matrix reorg optimizations (command-line - options -fipa-struct-reorg and -fipa-matrix-reorg) have been - removed. They did not always work correctly, nor did they work with - link-time optimization (LTO), hence were only applicable to - programs consisting of a single translation unit. - * Several scalability bottle-necks have been removed from GCC's - optimization passes. Compilation of extremely large functions, e.g. - due to the use of the flatten attribute in the "Eigen" C++ linear - algebra templates library, is significantly faster than previous - releases of GCC. - * Link-time optimization (LTO) improvements: - + LTO partitioning has been rewritten for better reliability and - maintanibility. Several important bugs leading to link - failures have been fixed. - * Interprocedural optimization improvements: - + A new symbol table has been implemented. It builds on existing - callgraph and varpool modules and provide a new API. Unusual - symbol visibilities and aliases are handled more consistently - leading to, for example, more aggressive unreachable code - removal with LTO. - + The inline heuristic can now bypass limits on the size of of - inlined functions when the inlining is particularly - profitable. This happens, for example, when loop bounds or - array strides get propagated. - + Values passed through aggregates (either by value or - reference) are now propagated at the inter-procedural level - leading to better inlining decisions (for example in the case - of Fortran array descriptors) and devirtualization. - * [6]AddressSanitizer , a fast memory error detector, has been added - and can be enabled via -fsanitize=address. Memory access - instructions will be instrumented to detect heap-, stack-, and - global-buffer overflow as well as use-after-free bugs. To get nicer - stacktraces, use -fno-omit-frame-pointer. The AddressSanitizer is - available on IA-32/x86-64/x32/PowerPC/PowerPC64 GNU/Linux and on - x86-64 Darwin. - * [7]ThreadSanitizer has been added and can be enabled via - -fsanitize=thread. Instructions will be instrumented to detect data - races. The ThreadSanitizer is available on x86-64 GNU/Linux. - * A new local register allocator (LRA) has been implemented, which - replaces the 26 year old reload pass and improves generated code - quality. For now it is active on the IA-32 and x86-64 targets. - * Support for transactional memory has been implemented on the - following architectures: IA-32/x86-64, ARM, PowerPC, SH, SPARC, and - Alpha. - -New Languages and Language specific improvements - - C family - - * Each diagnostic emitted now includes the original source line and a - caret '^' indicating the column. The option - -fno-diagnostics-show-caret suppresses this information. - * The option -ftrack-macro-expansion=2 is now enabled by default. - This allows the compiler to display the macro expansion stack in - diagnostics. Combined with the caret information, an example - diagnostic showing these two features is: - -t.c:1:94: error: invalid operands to binary < (have `struct mystruct' and `float -') - #define MYMAX(A,B) __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _ -_b = (B); __a < __b ? __b : __a; }) - - ^ -t.c:7:7: note: in expansion of macro 'MYMAX' - X = MYMAX(P, F); - ^ - - * A new -Wsizeof-pointer-memaccess warning has been added (also - enabled by -Wall) to warn about suspicious length parameters to - certain string and memory built-in functions if the argument uses - sizeof. This warning warns e.g. about memset (ptr, 0, sizeof - (ptr)); if ptr is not an array, but a pointer, and suggests a - possible fix, or about memcpy (&foo, ptr, sizeof (&foo));. - * The new option -Wpedantic is an alias for -pedantic, which is now - deprecated. The forms -Wno-pedantic, -Werror=pedantic, and - -Wno-error=pedantic work in the same way as for any other -W - option. One caveat is that -Werror=pedantic is not equivalent to - -pedantic-errors, since the latter makes into errors some warnings - that are not controlled by -Wpedantic, and the former only affects - diagnostics that are disabled when using -Wno-pedantic. - * The option -Wshadow no longer warns if a declaration shadows a - function declaration, unless the former declares a function or - pointer to function, because this is [8]a common and valid case in - real-world code. - - C++ - - * G++ now implements the [9]C++11 thread_local keyword; this differs - from the GNU __thread keyword primarily in that it allows dynamic - initialization and destruction semantics. Unfortunately, this - support requires a run-time penalty for references to - non-function-local thread_local variables defined in a different - translation unit even if they don't need dynamic initialization, so - users may want to continue to use __thread for TLS variables with - static initialization semantics. - If the programmer can be sure that no use of the variable in a - non-defining TU needs to trigger dynamic initialization (either - because the variable is statically initialized, or a use of the - variable in the defining TU will be executed before any uses in - another TU), they can avoid this overhead with the - -fno-extern-tls-init option. - OpenMP threadprivate variables now also support dynamic - initialization and destruction by the same mechanism. - * G++ now implements the [10]C++11 attribute syntax, e.g. - -[[noreturn]] void f(); - - and also the alignment specifier, e.g. - -alignas(double) int i; - - * G++ now implements [11]C++11 inheriting constructors, e.g. - -struct A { A(int); }; -struct B: A { using A::A; }; // defines B::B(int) -B b(42); // OK - - * As of GCC 4.8.1, G++ implements the change to decltype semantics - from [12]N3276. - -struct A f(); -decltype(f()) g(); // OK, return type of f() is not required to be complete. - - * As of GCC 4.8.1, G++ implements [13]C++11 ref-qualifiers, e.g. - -struct A { int f() &; }; -int i = A().f(); // error, f() requires an lvalue object - - * G++ now supports a -std=c++1y option for experimentation with - features proposed for the next revision of the standard, expected - around 2014. Currently the only difference from -std=c++11 is - support for return type deduction in normal functions, as proposed - in [14]N3386. Status of C++1y features in GCC 4.8 can be found - [15]here. - * The G++ namespace association extension, __attribute ((strong)), - has been deprecated. Inline namespaces should be used instead. - * G++ now supports a -fext-numeric-literal option to control whether - GNU numeric literal suffixes are accepted as extensions or - processed as C++11 user-defined numeric literal suffixes. The flag - is on (use suffixes for GNU literals) by default for -std=gnu++*, - and -std=c++98. The flag is off (use suffixes for user-defined - literals) by default for -std=c++11 and later. - - Runtime Library (libstdc++) - - * [16]Improved experimental support for the new ISO C++ standard, - C++11, including: - + forward_list meets the allocator-aware container requirements; - + this_thread::sleep_for(), this_thread::sleep_until() and - this_thread::yield() are defined without requiring the - configure option --enable-libstdcxx-time; - * Improvements to <random>: - + SSE optimized normal_distribution. - + Use of hardware RNG instruction for random_device on new x86 - processors (requires the assembler to support the - instruction.) - and <ext/random>: - + New random number engine simd_fast_mersenne_twister_engine - with an optimized SSE implementation. - + New random number distributions beta_distribution, - normal_mv_distribution, rice_distribution, - nakagami_distribution, pareto_distribution, k_distribution, - arcsine_distribution, hoyt_distribution. - * Added --disable-libstdcxx-verbose configure option to disable - diagnostic messages issued when a process terminates abnormally. - This may be useful for embedded systems to reduce the size of - executables that link statically to the library. - - Fortran - - * Compatibility notice: - + Module files: The version of module files (.mod) has been - incremented. Fortran MODULEs compiled by earlier GCC versions - have to be recompiled, when they are USEd by files compiled - with GCC 4.8. GCC 4.8 is not able to read .mod files created - by earlier versions; attempting to do so gives an error - message. - Note: The ABI of the produced assembler data itself has not - changed; object files and libraries are fully compatible with - older versions except as noted below. - + ABI: Some internal names (used in the assembler/object file) - have changed for symbols declared in the specification part of - a module. If an affected module - or a file using it via use - association - is recompiled, the module and all files which - directly use such symbols have to be recompiled as well. This - change only affects the following kind of module symbols: - o Procedure pointers. Note: C-interoperable function - pointers (type(c_funptr)) are not affected nor are - procedure-pointer components. - o Deferred-length character strings. - * The [17]BACKTRACE intrinsic subroutine has been added. It shows a - backtrace at an arbitrary place in user code; program execution - continues normally afterwards. - * The [18]-Wc-binding-type warning option has been added (disabled by - default). It warns if the a variable might not be C interoperable; - in particular, if the variable has been declared using an intrinsic - type with default kind instead of using a kind parameter defined - for C interoperability in the intrinsic ISO_C_Binding module. - Before, this warning was always printed. The -Wc-binding-type - option is enabled by -Wall. - * The [19]-Wrealloc-lhs and -Wrealloc-lhs-all warning command-line - options have been added, which diagnose when code to is inserted - for automatic (re)allocation of a variable during assignment. This - option can be used to decide whether it is safe to use - [20]-fno-realloc-lhs. Additionally, it can be used to find - automatic (re)allocation in hot loops. (For arrays, replacing - "var=" by "var(:)=" disables the automatic reallocation.) - * The [21]-Wcompare-reals command-line option has been added. When - this is set, warnings are issued when comparing REAL or COMPLEX - types for equality and inequality; consider replacing a == b by - abs(a -b) < eps with a suitable eps. -Wcompare-reals is enabled by - -Wextra. - * The [22]-Wtarget-lifetime command-line option has been added - (enabled with -Wall), which warns if the pointer in a pointer - assignment might outlive its target. - * Reading floating point numbers which use "q" for the exponential - (such as 4.0q0) is now supported as vendor extension for better - compatibility with old data files. It is strongly recommended to - use for I/O the equivalent but standard conforming "e" (such as - 4.0e0). - (For Fortran source code, consider replacing the "q" in - floating-point literals by a kind parameter (e.g. 4.0e0_qp with a - suitable qp). Note that - in Fortran source code - replacing "q" by - a simple "e" is not equivalent.) - * The GFORTRAN_TMPDIR environment variable for specifying a - non-default directory for files opened with STATUS="SCRATCH", is - not used anymore. Instead gfortran checks the POSIX/GNU standard - TMPDIR environment variable. If TMPDIR is not defined, gfortran - falls back to other methods to determine the directory for - temporary files as documented in the [23]user manual. - * [24]Fortran 2003: - + Support for unlimited polymorphic variables (CLASS(*)) has - been added. Nonconstant character lengths are not yet - supported. - * [25]TS 29113: - + Assumed types (TYPE(*)) are now supported. - + Experimental support for assumed-rank arrays (dimension(..)) - has been added. Note that currently gfortran's own array - descriptor is used, which is different from the one defined in - TS29113, see [26]gfortran's header file or use the [27]Chasm - Language Interoperability Tools. - - Go - - * GCC 4.8.2 provides a complete implementation of the Go 1.1.2 - release. - * GCC 4.8.0 and 4.8.1 implement a preliminary version of the Go 1.1 - release. The library support is not quite complete. - * Go has been tested on GNU/Linux and Solaris platforms for various - processors including x86, x86_64, PowerPC, SPARC, and Alpha. It may - work on other platforms as well. - -New Targets and Target Specific Improvements - - AArch64 - - * A new port has been added to support AArch64, the new 64-bit - architecture from ARM. Note that this is a separate port from the - existing 32-bit ARM port. - * The port provides initial support for the Cortex-A53 and the - Cortex-A57 processors with the command line options - -mcpu=cortex-a53 and -mcpu=cortex-a57. - - ARM - - * Initial support has been added for the AArch32 extensions defined - in the ARMv8 architecture. - * Code generation improvements for the Cortex-A7 and Cortex-A15 CPUs. - * A new option, -mcpu=marvell-pj4, has been added to generate code - for the Marvell PJ4 processor. - * The compiler can now automatically generate the VFMA, VFMS, REVSH - and REV16 instructions. - * A new vectorizer cost model for Advanced SIMD configurations to - improve the auto-vectorization strategies used. - * The scheduler now takes into account the number of live registers - to reduce the amount of spilling that can occur. This should - improve code performance in large functions. The limit can be - removed by using the option -fno-sched-pressure. - * Improvements have been made to the Marvell iWMMX code generation - and support for the iWMMX2 SIMD unit has been added. The option - -mcpu=iwmmxt2 can be used to enable code generation for the latter. - * A number of code generation improvements for Thumb2 to reduce code - size when compiling for the M-profile processors. - * The RTEMS (arm-rtems) port has been updated to use the EABI. - * Code generation support for the old FPA and Maverick floating-point - architectures has been removed. Ports that previously relied on - these features have also been removed. This includes the targets: - + arm*-*-linux-gnu (use arm*-*-linux-gnueabi) - + arm*-*-elf (use arm*-*-eabi) - + arm*-*-uclinux* (use arm*-*-uclinux*eabi) - + arm*-*-ecos-elf (no alternative) - + arm*-*-freebsd (no alternative) - + arm*-wince-pe* (no alternative). - - AVR - - * Support for the "Embedded C" fixed-point has been added. For - details, see the [28]GCC wiki and the [29]user manual. The support - is not complete. - * A new print modifier %r for register operands in inline assembler - is supported. It will print the raw register number without the - register prefix 'r': - /* Return the most significant byte of 'val', a 64-bit value. */ - - unsigned char msb (long long val) - { - unsigned char c; - __asm__ ("mov %0, %r1+7" : "=r" (c) : "r" (val)); - return c; - } - The inline assembler in this example will generate code like - mov r24, 8+7 - provided c is allocated to R24 and val is allocated to R8...R15. - This works because the GNU assembler accepts plain register numbers - without register prefix. - * Static initializers with 3-byte symbols are supported now: - extern const __memx char foo; - const __memx void *pfoo = &foo; - This requires at least Binutils 2.23. - - IA-32/x86-64 - - * Allow -mpreferred-stack-boundary=3 for the x86-64 architecture with - SSE extensions disabled. Since the x86-64 ABI requires 16 byte - stack alignment, this is ABI incompatible and intended to be used - in controlled environments where stack space is an important - limitation. This option will lead to wrong code when functions - compiled with 16 byte stack alignment (such as functions from a - standard library) are called with misaligned stack. In this case, - SSE instructions may lead to misaligned memory access traps. In - addition, variable arguments will be handled incorrectly for 16 - byte aligned objects (including x87 long double and __int128), - leading to wrong results. You must build all modules with - -mpreferred-stack-boundary=3, including any libraries. This - includes the system libraries and startup modules. - * Support for the new Intel processor codename Broadwell with RDSEED, - ADCX, ADOX, PREFETCHW is available through -madx, -mprfchw, - -mrdseed command-line options. - * Support for the Intel RTM and HLE intrinsics, built-in functions - and code generation is available via -mrtm and -mhle. - * Support for the Intel FXSR, XSAVE and XSAVEOPT instruction sets. - Intrinsics and built-in functions are available via -mfxsr, -mxsave - and -mxsaveopt respectively. - * New -maddress-mode=[short|long] options for x32. - -maddress-mode=short overrides default 64-bit addresses to 32-bit - by emitting the 0x67 address-size override prefix. This is the - default address mode for x32. - * New built-in functions to detect run-time CPU type and ISA: - + A built-in function __builtin_cpu_is has been added to detect - if the run-time CPU is of a particular type. It returns a - positive integer on a match and zero otherwise. It accepts one - string literal argument, the CPU name. For example, - __builtin_cpu_is("westmere") returns a positive integer if the - run-time CPU is an Intel Core i7 Westmere processor. Please - refer to the [30]user manual for the list of valid CPU names - recognized. - + A built-in function __builtin_cpu_supports has been added to - detect if the run-time CPU supports a particular ISA feature. - It returns a positive integer on a match and zero otherwise. - It accepts one string literal argument, the ISA feature. For - example, __builtin_cpu_supports("ssse3") returns a positive - integer if the run-time CPU supports SSSE3 instructions. - Please refer to the [31]user manual for the list of valid ISA - names recognized. - Caveat: If these built-in functions are called before any static - constructors are invoked, like during IFUNC initialization, then - the CPU detection initialization must be explicitly run using this - newly provided built-in function, __builtin_cpu_init. The - initialization needs to be done only once. For example, this is how - the invocation would look like inside an IFUNC initializer: - static void (*some_ifunc_resolver(void))(void) - { - __builtin_cpu_init(); - if (__builtin_cpu_is("amdfam10h") ... - if (__builtin_cpu_supports("popcnt") ... - } - - * Function Multiversioning Support with G++: - It is now possible to create multiple function versions each - targeting a specific processor and/or ISA. Function versions have - the same signature but different target attributes. For example, - here is a program with function versions: - __attribute__ ((target ("default"))) - int foo(void) - { - return 1; - } - - __attribute__ ((target ("sse4.2"))) - int foo(void) - { - return 2; - } - - int main (void) - { - int (*p) = &foo; - assert ((*p)() == foo()); - return 0; - } - - Please refer to this [32]wiki for more information. - * The x86 back end has been improved to allow option -fschedule-insns - to work reliably. This option can be used to schedule instructions - better and leads to improved performace in certain cases. - * Windows MinGW-w64 targets (*-w64-mingw*) require at least r5437 - from the Mingw-w64 trunk. - * Support for new AMD family 15h processors (Steamroller core) is now - available through the -march=bdver3 and -mtune=bdver3 options. - * Support for new AMD family 16h processors (Jaguar core) is now - available through the -march=btver2 and -mtune=btver2 options. - - FRV - - * This target now supports the -fstack-usage command-line option. - - MIPS - - * GCC can now generate code specifically for the R4700, Broadcom XLP - and MIPS 34kn processors. The associated -march options are - -march=r4700, -march=xlp and -march=34kn respectively. - * GCC now generates better DSP code for MIPS 74k cores thanks to - further scheduling optimizations. - * The MIPS port now supports the -fstack-check option. - * GCC now passes the -mmcu and -mno-mcu options to the assembler. - * Previous versions of GCC would silently accept -fpic and -fPIC for - -mno-abicalls targets like mips*-elf. This combination was not - intended or supported, and did not generate position-independent - code. GCC 4.8 now reports an error when this combination is used. - - PowerPC / PowerPC64 / RS6000 - - * SVR4 configurations (GNU/Linux, FreeBSD, NetBSD) no longer save, - restore or update the VRSAVE register by default. The respective - operating systems manage the VRSAVE register directly. - * Large TOC support has been added for AIX through the command line - option -mcmodel=large. - * Native Thread-Local Storage support has been added for AIX. - * VMX (Altivec) and VSX instruction sets now are enabled implicitly - when targetting processors that support those hardware features on - AIX 6.1 and above. - - RX - - * This target will now issue a warning message whenever multiple fast - interrupt handlers are found in the same compilation unit. This - feature can be turned off by the new - -mno-warn-multiple-fast-interrupts command-line option. - - S/390, System z - - * Support for the IBM zEnterprise zEC12 processor has been added. - When using the -march=zEC12 option, the compiler will generate code - making use of the following new instructions: - + load and trap instructions - + 2 new compare and trap instructions - + rotate and insert selected bits - without CC clobber - The -mtune=zEC12 option enables zEC12 specific instruction - scheduling without making use of new instructions. - * Register pressure sensitive instruction scheduling is enabled by - default. - * The ifunc function attribute is enabled by default. - * memcpy and memcmp invokations on big memory chunks or with run time - lengths are not generated inline anymore when tuning for z10 or - higher. The purpose is to make use of the IFUNC optimized versions - in Glibc. - - SH - - * The default alignment settings have been reduced to be less - aggressive. This results in more compact code for optimization - levels other than -Os. - * Improved support for the __atomic built-in functions: - + A new option -matomic-model=model selects the model for the - generated atomic sequences. The following models are - supported: - - soft-gusa - Software gUSA sequences (SH3* and SH4* only). On - SH4A targets this will now also partially utilize - the movco.l and movli.l instructions. This is the - default when the target is sh3*-*-linux* or - sh4*-*-linux*. - - hard-llcs - Hardware movco.l / movli.l sequences (SH4A only). - - soft-tcb - Software thread control block sequences. - - soft-imask - Software interrupt flipping sequences (privileged - mode only). This is the default when the target is - sh1*-*-linux* or sh2*-*-linux*. - - none - Generates function calls to the respective __atomic - built-in functions. This is the default for SH64 - targets or when the target is not sh*-*-linux*. - - + The option -msoft-atomic has been deprecated. It is now an - alias for -matomic-model=soft-gusa. - + A new option -mtas makes the compiler generate the tas.b - instruction for the __atomic_test_and_set built-in function - regardless of the selected atomic model. - + The __sync functions in libgcc now reflect the selected atomic - model when building the toolchain. - * Added support for the mov.b and mov.w instructions with - displacement addressing. - * Added support for the SH2A instructions movu.b and movu.w. - * Various improvements to code generated for integer arithmetic. - * Improvements to conditional branches and code that involves the T - bit. A new option -mzdcbranch tells the compiler to favor - zero-displacement branches. This is enabled by default for SH4* - targets. - * The pref instruction will now be emitted by the __builtin_prefetch - built-in function for SH3* targets. - * The fmac instruction will now be emitted by the fmaf standard - function and the __builtin_fmaf built-in function. - * The -mfused-madd option has been deprecated in favor of the - machine-independent -ffp-contract option. Notice that the fmac - instruction will now be generated by default for expressions like a - * b + c. This is due to the compiler default setting - -ffp-contract=fast. - * Added new options -mfsrra and -mfsca to allow the compiler using - the fsrra and fsca instructions on targets other than SH4A (where - they are already enabled by default). - * Added support for the __builtin_bswap32 built-in function. It is - now expanded as a sequence of swap.b and swap.w instructions - instead of a library function call. - * The behavior of the -mieee option has been fixed and the negative - form -mno-ieee has been added to control the IEEE conformance of - floating point comparisons. By default -mieee is now enabled and - the option -ffinite-math-only implicitly sets -mno-ieee. - * Added support for the built-in functions __builtin_thread_pointer - and __builtin_set_thread_pointer. This assumes that GBR is used to - hold the thread pointer of the current thread. Memory loads and - stores relative to the address returned by __builtin_thread_pointer - will now also utilize GBR based displacement address modes. - * The -mdiv= option for targets other than SHmedia has been fixed and - documented. - - SPARC - - * Added optimized instruction scheduling for Niagara4. - - TILE-Gx - - * Added support for the -mcmodel=MODEL command-line option. The - models supported are small and large. - - V850 - - * This target now supports the E3V5 architecture via the use of the - new -mv850e3v5 command-line option. It also has experimental - support for the e3v5 LOOP instruction which can be enabled via the - new -mloop command-line option. - - XStormy16 - - * This target now supports the -fstack-usage command-line option. - -Operating Systems - - Windows (Cygwin) - - * Executables are now linked against shared libgcc by default. The - previous default was to link statically, which can still be done by - explicitly specifying -static or static-libgcc on the command line. - However it is strongly advised against, as it will cause problems - for any application that makes use of DLLs compiled by GCC. It - should be alright for a monolithic stand-alone application that - only links against the Windows DLLs, but offers little or no - benefit. - -GCC 4.8.1 - - This is the [33]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.8.1 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - The C++11 <chrono> std::chrono::system_clock and - std::chrono::steady_clock classes have changed ABI in GCC 4.8.1, they - both are now separate (never typedefs of each other), both use - std::chrono::nanoseconds resolution, on most GNU/Linux configurations - std::chrono::steady_clock is now finally monotonic, and both classes - are mangled differently than in the previous GCC releases. - std::chrono::system_clock::now() with std::chrono::microseconds resp. - std::chrono::seconds resolution is still exported for backwards - compatibility with default configured libstdc++. Note that libstdc++ - configured with --enable-libstdcxx-time= used to be ABI incompatible - with default configured libstdc++ for those two classes and no ABI - compatibility can be offered for those configurations, so any C++11 - code that uses those classes and has been compiled and linked against - libstdc++ configured with the non-default --enable-libstdcxx-time= - configuration option needs to be recompiled. - -GCC 4.8.2 - - This is the [34]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.8.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.8.3 - - This is the [35]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.8.3 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - Support for the new powerpc64le-linux platform has been added. It - defaults to generating code that conforms to the ELFV2 ABI. - - - For questions related to the use of GCC, please consult these web - pages and the [36]GCC manuals. If that fails, the - [37]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [38]gcc@gcc.gnu.org. All of [39]our lists have public - archives. - - Copyright (C) [40]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [41]maintained by the GCC team. Last modified - 2014-05-22[42]. - -References - - 1. http://gcc.gnu.org/wiki/cxx-conversion - 2. ftp://gcc.gnu.org/pub/gcc/infrastructure/ - 3. http://www.nongnu.org/avr-libc/ - 4. http://gcc.gnu.org/PR54461 - 5. http://gcc.gnu.org/gcc-4.8/porting_to.html - 6. https://code.google.com/p/address-sanitizer/ - 7. https://code.google.com/p/data-race-test/wiki/ThreadSanitizer - 8. https://lkml.org/lkml/2006/11/28/239 - 9. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html - 10. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html - 11. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html - 12. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf - 13. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html - 14. http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3386.html - 15. http://gcc.gnu.org/projects/cxx1y.html - 16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011 - 17. http://gcc.gnu.org/onlinedocs/gfortran/BACKTRACE.html - 18. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html - 19. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html - 20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html - 21. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html - 22. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html - 23. http://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html - 24. http://gcc.gnu.org/wiki/Fortran2003Status - 25. http://gcc.gnu.org/wiki/TS29113Status - 26. http://gcc.gnu.org/viewcvs/trunk/libgfortran/libgfortran.h?content-type=text%2Fplain&view=co - 27. http://chasm-interop.sourceforge.net/ - 28. http://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support - 29. http://gcc.gnu.org/onlinedocs/gcc/Fixed-Point.html - 30. http://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html#X86-Built-in-Functions - 31. http://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html#X86-Built-in-Functions - 32. http://gcc.gnu.org/wiki/FunctionMultiVersioning - 33. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.1 - 34. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.2 - 35. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.3 - 36. http://gcc.gnu.org/onlinedocs/ - 37. mailto:gcc-help@gcc.gnu.org - 38. mailto:gcc@gcc.gnu.org - 39. http://gcc.gnu.org/lists.html - 40. http://www.fsf.org/ - 41. http://gcc.gnu.org/about.html - 42. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.7/index.html - - GCC 4.7 Release Series - - April 11, 2013 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 4.7.3. - - This release is a bug-fix release, containing fixes for regressions in - GCC 4.7.2 relative to previous releases of GCC. - -Release History - - GCC 4.7.3 - April 11, 2013 ([2]changes, [3]documentation) - - GCC 4.7.2 - September 20, 2012 ([4]changes, [5]documentation) - - GCC 4.7.1 - June 14, 2012 ([6]changes, [7]documentation) - - GCC 4.7.0 - March 22, 2012 ([8]changes, [9]documentation) - -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 [10]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 [11]amazing group of volunteers is - what makes GCC successful. - - For additional information about GCC please refer to the [12]GCC - project web site or contact the [13]GCC development mailing list. - - To obtain GCC please use [14]our mirror sites or [15]our SVN server. - - - 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. Comments on these - web pages and the development of GCC are welcome on our developer - list at [18]gcc@gcc.gnu.org. All of [19]our lists have public - archives. - - Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [21]maintained by the GCC team. Last modified - 2013-04-11[22]. - -References - - 1. http://www.gnu.org/ - 2. http://gcc.gnu.org/gcc-4.7/changes.html - 3. http://gcc.gnu.org/onlinedocs/4.7.3/ - 4. http://gcc.gnu.org/gcc-4.7/changes.html - 5. http://gcc.gnu.org/onlinedocs/4.7.2/ - 6. http://gcc.gnu.org/gcc-4.7/changes.html - 7. http://gcc.gnu.org/onlinedocs/4.7.1/ - 8. http://gcc.gnu.org/gcc-4.7/changes.html - 9. http://gcc.gnu.org/onlinedocs/4.7.0/ - 10. http://gcc.gnu.org/gcc-4.7/buildstat.html - 11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 12. http://gcc.gnu.org/index.html - 13. mailto:gcc@gcc.gnu.org - 14. http://gcc.gnu.org/mirrors.html - 15. http://gcc.gnu.org/svn.html - 16. http://gcc.gnu.org/onlinedocs/ - 17. mailto:gcc-help@gcc.gnu.org - 18. mailto:gcc@gcc.gnu.org - 19. http://gcc.gnu.org/lists.html - 20. http://www.fsf.org/ - 21. http://gcc.gnu.org/about.html - 22. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.7/changes.html - - GCC 4.7 Release Series - Changes, New Features, and Fixes - -Caveats - - * The -fconserve-space flag has been deprecated. The flag had no - effect for most targets: only targets without a global .bss section - and without support for switchable sections. Furthermore, the flag - only had an effect for G++, where it could result in wrong - semantics (please refer to the GCC manual for further details). The - flag will be removed in GCC 4.8 - * Support for a number of older systems and recently unmaintained or - untested target ports of GCC has been declared obsolete in GCC 4.7. - 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: - + picoChip (picochip-*) - The following ports for individual systems on particular - architectures have been obsoleted: - + IRIX 6.5 (mips-sgi-irix6.5) - + MIPS OpenBSD (mips*-*-openbsd*) - + Solaris 8 (*-*-solaris2.8). Details can be found in the - [1]announcement. - + Tru64 UNIX V5.1 (alpha*-dec-osf5.1*) - * On ARM, when compiling for ARMv6 (but not ARMv6-M), ARMv7-A, - ARMv7-R, or ARMv7-M, the new option -munaligned-access is active by - default, which for some sources generates code that accesses memory - on unaligned addresses. This requires the kernel of those systems - to enable such accesses (controlled by CP15 register c1, refer to - ARM documentation). Alternatively, or for compatibility with - kernels where unaligned accesses are not supported, all code has to - be compiled with -mno-unaligned-access. Upstream Linux kernel - releases have automatically and unconditionally supported unaligned - accesses as emitted by GCC due to this option being active since - version 2.6.28. - * Support on ARM for the legacy floating-point accelerator (FPA) and - the mixed-endian floating-point format that it used has been - obsoleted. The ports that still use this format have been obsoleted - as well. Many legacy ARM ports already provide an alternative that - uses the VFP floating-point format. The obsolete ports will be - deleted in the next release. - The obsolete ports with alternatives are: - + arm*-*-rtems (use arm*-*-rtemseabi) - + arm*-*-linux-gnu (use arm*-*-linux-gnueabi) - + arm*-*-elf (use arm*-*-eabi) - + arm*-*-uclinux* (use arm*-*-uclinux*eabi) - Note, however, that these alternatives are not binary compatible - with their legacy counterparts (although some can support running - legacy applications). - The obsolete ports that currently lack a modern alternative are: - + arm*-*-ecos-elf - + arm*-*-freebsd - + arm*-wince-pe* - New ports that support more recent versions of the architecture are - welcome. - * Support for the Maverick co-processor on ARM has been obsoleted. - Code to support it will be deleted in the next release. - * Support has been removed for Unix International threads on Solaris - 2, so the --enable-threads=solaris configure option and the - -threads compiler option don't work any longer. - * Support has been removed for the Solaris BSD Compatibility Package, - which lives in /usr/ucbinclude and /usr/ucblib. It has been removed - from Solaris 11, and was only intended as a migration aid from - SunOS 4 to SunOS 5. The -compat-bsd compiler option is not - recognized any longer. - * The AVR port's libgcc has been improved and its multilib structure - has been enhanced. As a result, all objects contributing to an - application must either be compiled with GCC versions up to 4.6.x - or with GCC versions 4.7.1 or later. If the compiler is used with - AVR Libc, you need a version that supports the new layout, i.e. - implements [2]#35407. - * The AVR port's -mshort-calls command-line option has been - deprecated. It will be removed in the GCC 4.8 release. See -mrelax - for a replacement. - * The AVR port only references startup code that clears .bss and the - common section resp. initializes the .data and .rodata section - provided respective sections (or subsections thereof) are not - empty, see [3]PR18145. Applications that put all static storage - objects into non-standard sections and / or define all static - storage objects in assembler modules, must reference __do_clear_bss - resp. __do_copy_data by hand or undefine the symbol(s) by means of - -Wl,-u,__do_clear_bss resp. -Wl,-u,__do_copy_data. - * The ARM port's -mwords-little-endian option has been deprecated. It - will be removed in a future release. - * Support has been removed for the NetWare x86 configuration - obsoleted in GCC 4.6. - * It is no longer possible to use the "l" constraint in MIPS16 asm - statements. - * GCC versions 4.7.0 and 4.7.1 had changes to the C++ standard - library which affected the ABI in C++11 mode: a data member was - added to std::list changing its size and altering the definitions - of some member functions, and std::pair's move constructor was - non-trivial which altered the calling convention for functions with - std::pair arguments or return types. The ABI incompatibilities have - been fixed for GCC version 4.7.2 but as a result C++11 code - compiled with GCC 4.7.0 or 4.7.1 may be incompatible with C++11 - code compiled with different GCC versions and with C++98/C++03 code - compiled with any version. - * On ARM, a bug has been fixed in GCC's implementation of the AAPCS - rules for the layout of vectors that could lead to wrong code being - generated. Vectors larger than 8 bytes in size are now by default - aligned to an 8-byte boundary. This is an ABI change: code that - makes explicit use of vector types may be incompatible with binary - objects built with older versions of GCC. Auto-vectorized code is - not affected by this change. (This change affects GCC versions - 4.7.2 and later.) - * More information on porting to GCC 4.7 from previous versions of - GCC can be found in the [4]porting guide for this release. - -General Optimizer Improvements - - * Support for a new parameter --param case-values-threshold=n was - added to allow users to control the cutoff between doing switch - statements as a series of if statements and using a jump table. - * Link-time optimization (LTO) improvements: - + Improved scalability and reduced memory usage. Link time - optimization of Firefox now requires 3GB of RAM on a 64-bit - system, while over 8GB was needed previously. Linking time has - been improved, too. The serial stage of linking Firefox has - been sped up by about a factor of 10. - + Reduced size of object files and temporary storage used during - linking. - + Streaming performance (both outbound and inbound) has been - improved. - + ld -r is now supported with LTO. - + Several bug fixes, especially in symbol table handling and - merging. - * Interprocedural optimization improvements: - + Heuristics now take into account that after inlining code will - be optimized out because of known values (or properties) of - function parameters. For example: -void foo(int a) -{ - if (a > 10) - ... huge code ... -} -void bar (void) -{ - foo (0); -} - - The call of foo will be inlined into bar even when optimizing - for code size. Constructs based on __builtin_constant_p are - now understood by the inliner and code size estimates are - evaluated a lot more realistically. - + The representation of C++ virtual thunks and aliases (both - implicit and defined via the alias attribute) has been - re-engineered. Aliases no longer pose optimization barriers - and calls to an alias can be inlined and otherwise optimized. - + The inter-procedural constant propagation pass has been - rewritten. It now performs generic function specialization. - For example when compiling the following: -void foo(bool flag) -{ - if (flag) - ... do something ... - else - ... do something else ... -} -void bar (void) -{ - foo (false); - foo (true); - foo (false); - foo (true); - foo (false); - foo (true); -} - - GCC will now produce two copies of foo. One with flag being - true, while other with flag being false. This leads to - performance improvements previously possible only by inlining - all calls. Cloning causes a lot less code size growth. - * A string length optimization pass has been added. It attempts to - track string lengths and optimize various standard C string - functions like strlen, strchr, strcpy, strcat, stpcpy and their - _FORTIFY_SOURCE counterparts into faster alternatives. This pass is - enabled by default at -O2 or above, unless optimizing for size, and - can be disabled by the -fno-optimize-strlen option. The pass can - e.g. optimize -char *bar (const char *a) -{ - size_t l = strlen (a) + 2; - char *p = malloc (l); if (p == NULL) return p; - strcpy (p, a); strcat (p, "/"); return p; -} - - into: -char *bar (const char *a) -{ - size_t tmp = strlen (a); - char *p = malloc (tmp + 2); if (p == NULL) return p; - memcpy (p, a, tmp); memcpy (p + tmp, "/", 2); return p; -} - - or for hosted compilations where stpcpy is available in the runtime - and headers provide its prototype, e.g. -void foo (char *a, const char *b, const char *c, const char *d) -{ - strcpy (a, b); strcat (a, c); strcat (a, d); -} - - can be optimized into: -void foo (char *a, const char *b, const char *c, const char *d) -{ - strcpy (stpcpy (stpcpy (a, b), c), d); -} - -New Languages and Language specific improvements - - * Version 3.1 of the [5]OpenMP specification is now supported for the - C, C++, and Fortran compilers. - - Ada - - * The command-line option -feliminate-unused-debug-types has been - re-enabled by default, as it is for the other languages, leading to - a reduction in debug info size of 12.5% and more for relevant - cases, as well as to a small compilation speedup. - - C family - - * A new built-in, __builtin_assume_aligned, has been added, through - which the compiler can be hinted about pointer alignment and can - use it to improve generated code. - * A new warning option -Wunused-local-typedefs was added for C, C++, - Objective-C and Objective-C++. This warning diagnoses typedefs - locally defined in a function, and otherwise not used. - * A new experimental command-line option -ftrack-macro-expansion was - added for C, C++, Objective-C, Objective-C++ and Fortran. It allows - the compiler to emit diagnostic about the current macro expansion - stack when a compilation error occurs in a macro expansion. - * Experimental support for transactional memory has been added. It - includes support in the compiler, as well as a supporting runtime - library called libitm. To compile code with transactional memory - constructs, use the -fgnu-tm option. - Support is currently available for Alpha, ARM, PowerPC, SH, SPARC, - and 32-bit/64-bit x86 platforms. - For more details on transactional memory see [6]the GCC WiKi. - * Support for atomic operations specifying the C++11/C11 memory model - has been added. These new __atomic routines replace the existing - __sync built-in routines. - Atomic support is also available for memory blocks. Lock-free - instructions will be used if a memory block is the same size and - alignment as a supported integer type. Atomic operations which do - not have lock-free support are left as function calls. A set of - library functions is available on the GCC atomic wiki in the - "External Atomics Library" section. - For more details on the memory models and features, see the - [7]atomic wiki. - * When a binary operation is performed on vector types and one of the - operands is a uniform vector, it is possible to replace the vector - with the generating element. For example: -typedef int v4si __attribute__ ((vector_size (16))); -v4si res, a = {1,2,3,4}; -int x; - -res = 2 + a; /* means {2,2,2,2} + a */ -res = a - x; /* means a - {x,x,x,x} */ - - C - - * There is support for some more features from the C11 revision of - the ISO C standard. GCC now accepts the options -std=c11 and - -std=gnu11, in addition to the previous -std=c1x and -std=gnu1x. - + Unicode strings (previously supported only with options such - as -std=gnu11, now supported with -std=c11), and the - predefined macros __STDC_UTF_16__ and __STDC_UTF_32__. - + Nonreturning functions (_Noreturn and <stdnoreturn.h>). - + Alignment support (_Alignas, _Alignof, max_align_t, - <stdalign.h>). - + A built-in function __builtin_complex is provided to support C - library implementation of the CMPLX family of macros. - - C++ - - * G++ now accepts the -std=c++11, -std=gnu++11, and -Wc++11-compat - options, which are equivalent to -std=c++0x, -std=gnu++0x, and - -Wc++0x-compat, respectively. - * G++ now implements [8]C++11 extended friend syntax: - -template<class W> -class Q -{ - static const int I = 2; -public: - friend W; -}; - -struct B -{ - int ar[Q<B>::I]; -}; - - * Thanks to Ville Voutilainen, G++ now implements [9]C++11 explicit - override control. - -struct B { - virtual void f() const final; - virtual void f(int); -}; - -struct D : B { - void f() const; // error: D::f attempts to override final B::f - void f(long) override; // error: doesn't override anything - void f(int) override; // ok -}; - -struct E final { }; -struct F: E { }; // error: deriving from final class - - * G++ now implements [10]C++11 non-static data member initializers. - -struct A { - int i = 42; -} a; // initializes a.i to 42 - - * Thanks to Ed Smith-Rowland, G++ now implements [11]C++11 - user-defined literals. - -// Not actually a good approximation. :) -constexpr long double operator"" _degrees (long double d) { return d * 0.0175; } -long double pi = 180.0_degrees; - - * G++ now implements [12]C++11 alias-declarations. - -template <class T> using Ptr = T*; -Ptr<int> ip; // decltype(ip) is int* - - * Thanks to Ville Voutilainen and Pedro Lamarao, G++ now implements - [13]C++11 delegating constructors. - -struct A { - A(int); - A(): A(42) { } // delegate to the A(int) constructor -}; - - * G++ now fully implements C++11 atomic classes rather than just - integer derived classes. - -class POD { - int a; - int b; -}; -std::atomic<POD> my_atomic_POD; - - * G++ now sets the predefined macro __cplusplus to the correct value, - 199711L for C++98/03, and 201103L for C++11. - * G++ now correctly implements the two-phase lookup rules such that - an unqualified name used in a template must have an appropriate - declaration found either in scope at the point of definition of the - template or by argument-dependent lookup at the point of - instantiation. As a result, code that relies on a second - unqualified lookup at the point of instantiation to find functions - declared after the template or in dependent bases will be rejected. - The compiler will suggest ways to fix affected code, and using the - -fpermissive compiler flag will allow the code to compile with a - warning. - -template <class T> -void f() { g(T()); } // error, g(int) not found by argument-dependent lookup -void g(int) { } // fix by moving this declaration before the declaration of f - -template <class T> -struct A: T { - // error, B::g(B) not found by argument-dependent lookup - void f() { g(T()); } // fix by using this->g or A::g -}; - -struct B { void g(B); }; - -int main() -{ - f<int>(); - A<B>().f(); -} - - * G++ now properly re-uses stack space allocated for temporary - objects when their lifetime ends, which can significantly lower - stack consumption for some C++ functions. As a result of this, some - code with undefined behavior will now break: - -const int &f(const int &i) { return i; } -.... -const int &x = f(1); -const int &y = f(2); - - Here, x refers to the temporary allocated to hold the 1 argument, - which only lives until the end of the initialization; it - immediately becomes a dangling reference. So the next statement - re-uses the stack slot to hold the 2 argument, and users of x get - that value instead. - Note that this should not cause any change of behavior for - temporaries of types with non-trivial destructors, as they are - already destroyed at end of full-expression; the change is that now - the storage is released as well. - * A new command-line option -Wdelete-non-virtual-dtor has been added - to warn when delete is used to destroy an instance of a class which - has virtual functions and non-virtual destructor. It is unsafe to - delete an instance of a derived class through a pointer to a base - class if the base class does not have a virtual destructor. This - warning is enabled by -Wall. - * A new command-line option -Wzero-as-null-pointer-constant has been - added to warn when a literal '0' is used as null pointer constant. - It can be useful to facilitate the conversion to nullptr in C++11. - * As per C++98, access-declarations are now deprecated by G++. - Using-declarations are to be used instead. Furthermore, some - efforts have been made to improve the support of class scope - using-declarations. In particular, using-declarations referring to - a dependent type now work as expected ([14]bug c++/14258). - * The ELF symbol visibility of a template instantiation is now - properly constrained by the visibility of its template arguments - ([15]bug c++/35688). - - Runtime Library (libstdc++) - - * [16]Improved experimental support for the new ISO C++ standard, - C++11, including: - + using noexcept in most of the library; - + implementations of pointer_traits, allocator_traits and - scoped_allocator_adaptor; - + uses-allocator construction for tuple; - + vector meets the allocator-aware container requirements; - + replacing monotonic_clock with steady_clock; - + enabling the thread support library on most POSIX targets; - + many small improvements to conform to the FDIS. - * Added --enable-clocale=newlib configure option. - * Debug Mode iterators for unordered associative containers. - * Avoid polluting the global namespace and do not include <unistd.h>. - - Fortran - - * The compile flag [17]-fstack-arrays has been added, which causes - all local arrays to be put on stack memory. For some programs this - will improve the performance significantly. If your program uses - very large local arrays, it is possible that you will have to - extend your runtime limits for stack memory. - * The [18]-Ofast flag now also implies [19]-fno-protect-parens and - [20]-fstack-arrays. - * Front-end optimizations can now be selected by the - [21]-ffrontend-optimize option and deselected by the - -fno-frontend-optimize option. - * When front-end optimization removes a function call, - [22]-Wfunction-elimination warns about that. - * When performing front-end-optimization, the - [23]-faggressive-function-elimination option allows the removal of - duplicate function calls even for impure functions. - * The flag [24]-Wreal-q-constant has been added, which warns if - floating-point literals have been specified using q (such as - 1.0q0); the q marker is now supported as a vendor extension to - denote quad precision (REAL(16) or, if not available, REAL(10)). - Consider using a kind parameter (such as in 1.0_qp) instead, which - can be obtained via [25]SELECTED_REAL_KIND. - * The GFORTRAN_USE_STDERR environment variable has been removed. GNU - Fortran now always prints error messages to standard error. If you - wish to redirect standard error, please consult the manual for your - OS, shell, batch environment etc. as appropriate. - * The -fdump-core option and GFORTRAN_ERROR_DUMPCORE environment - variable have been removed. When encountering a serious error, - gfortran will now always abort the program. Whether a core dump is - generated depends on the user environment settings; see the ulimit - -c setting for POSIX shells, limit coredumpsize for C shells, and - the [26]WER user-mode dumps settings on Windows. - * The [27]-fbacktrace option is now enabled by default. When - encountering a fatal error, gfortran will attempt to print a - backtrace to standard error before aborting. It can be disabled - with -fno-backtrace. Note: On POSIX targets with the addr2line - utility from GNU binutils, GNU Fortran can print a backtrace with - function name, file name, line number information in addition to - the addresses; otherwise only the addresses are printed. - * [28]Fortran 2003: - + Generic interface names which have the same name as derived - types are now supported, which allows to write constructor - functions. Note that Fortran does not support static - constructor functions; only default initialization or an - explicit structure-constructor initialization are available. - + [29]Polymorphic (class) arrays are now supported. - * [30]Fortran 2008: - + Support for the DO CONCURRENT construct has been added, which - allows the user to specify that individual loop iterations - have no interdependencies. - + [31]Coarrays: Full single-image support except for polymorphic - coarrays. Additionally, preliminary support for multiple - images via an MPI-based [32]coarray communication library has - been added. Note: The library version is not yet usable as - remote coarray access is not yet possible. - * [33]TS 29113: - + New flag [34]-std=f2008ts permits programs that are expected - to conform to the Fortran 2008 standard and the draft - Technical Specification (TS) 29113 on Further Interoperability - of Fortran with C. - + The OPTIONAL attribute is now allowed for dummy arguments of - BIND(C) procedures. - + The RANK intrinsic has been added. - + The implementation of the ASYNCHRONOUS attribute in GCC is - compatible with the candidate draft of TS 29113 (since GCC - 4.6). - - Go - - * GCC 4.7 implements the [35]Go 1 language standard. The library - support in 4.7.0 is not quite complete, due to release timing. - Release 4.7.1 includes complete support for Go 1. The Go library is - from the Go 1.0.1 release. - * Go has been tested on GNU/Linux and Solaris platforms. It may work - on other platforms as well. - -New Targets and Target Specific Improvements - - ARM - - * GCC now supports the Cortex-A7 processor implementing the v7-a - version of the architecture using the option -mcpu=cortex-a7. - * The default vector size in auto-vectorization for NEON is now 128 - bits. If vectorization fails thusly, the vectorizer tries again - with 64-bit vectors. - * A new option -mvectorize-with-neon-double was added to allow users - to change the vector size to 64 bits. - - AVR - - * GCC now supports the XMEGA architecture. This requires GNU binutils - 2.22 or later. - * Support for the [36]named address spaces __flash, __flash1, ..., - __flash5 and __memx has been added. These address spaces locate - read-only data in flash memory and allow reading from flash memory - by means of ordinary C code, i.e. without the need of (inline) - assembler code: - -const __flash int values[] = { 42, 31 }; - -int add_values (const __flash int *p, int i) -{ - return values[i] + *p; -} - - * Support has been added for the AVR-specific configure option - --with-avrlibc=yes in order to arrange for better integration of - [37]AVR-Libc. This configure option is supported in avr-gcc 4.7.2 - and newer and will only take effect in non-RTEMS configurations. If - avr-gcc is configured for RTEMS, the option will be ignored which - is the same as specifying --with-avrlibc=no. See [38]PR54461 for - more technical details. - * Support for AVR-specific [39]built-in functions has been added. - * Support has been added for the signed and unsigned 24-bit scalar - integer types __int24 and __uint24. - * New command-line options -maccumulate-args, -mbranch-cost=cost and - -mstrict-X were added to allow better fine-tuning of code - optimization. - * The command option -fdata-sections now also takes affect on the - section names of variables with the progmem attribute. - * A new inline assembler print modifier %i to print a RAM address as - I/O address has been added: - -#include <avr/io.h> /* Port Definitions from AVR-LibC */ - -void set_portb (uint8_t value) -{ - asm volatile ("out %i0, %1" :: "n" (&PORTB), "r" (value) : "memory"); -} - - The offset between an I/O address and the RAM address for that I/O - location is device-specific. This offset is taken into account when - printing a RAM address with the %i modifier so that the address is - suitable to be used as operand in an I/O command. The address must - be a constant integer known at compile time. - * The inline assembler constraint "R" to represent integers in the - range -6 ... 5 has been removed without replacement. - * Many optimizations to: - + 64-bit integer arithmetic - + Widening multiplication - + Integer division by a constant - + Avoid constant reloading in multi-byte instructions. - + Micro-optimizations for special instruction sequences. - + Generic built-in functions like __builtin_ffs*, - __builtin_clz*, etc. - + If-else decision trees generated by switch instructions - + Merging of data located in flash memory - + New libgcc variants for devices with 8-bit wide stack pointer - + ... - * Better documentation: - + Handling of EIND and indirect jumps on devices with more than - 128 KiB of program memory. - + Handling of the RAMPD, RAMPX, RAMPY and RAMPZ special function - registers. - + Function attributes OS_main and OS_task. - + AVR-specific built-in macros. - - C6X - - * Support has been added for the Texas Instruments C6X family of - processors. - - CR16 - - * Support has been added for National Semiconductor's CR16 - architecture. - - Epiphany - - * Support has been added for Adapteva's Epiphany architecture. - - IA-32/x86-64 - - * Support for Intel AVX2 intrinsics, built-in functions and code - generation is available via -mavx2. - * Support for Intel BMI2 intrinsics, built-in functions and code - generation is available via -mbmi2. - * Implementation and automatic generation of __builtin_clz* using the - lzcnt instruction is available via -mlzcnt. - * Support for Intel FMA3 intrinsics and code generation is available - via -mfma. - * A new -mfsgsbase command-line option is available that makes GCC - generate new segment register read/write instructions through - dedicated built-ins. - * Support for the new Intel rdrnd instruction is available via - -mrdrnd. - * Two additional AVX vector conversion instructions are available via - -mf16c. - * Support for new Intel processor codename IvyBridge with RDRND, - FSGSBASE and F16C is available through -march=core-avx-i. - * Support for the new Intel processor codename Haswell with AVX2, - FMA, BMI, BMI2, LZCNT is available through -march=core-avx2. - * Support for new AMD family 15h processors (Piledriver core) is now - available through -march=bdver2 and -mtune=bdver2 options. - * Support for [40]the x32 psABI is now available through the -mx32 - option. - * Windows mingw targets are using the -mms-bitfields option by - default. - * Windows x86 targets are using the __thiscall calling convention for - C++ class-member functions. - * Support for the configure option --with-threads=posix for Windows - mingw targets. - - MIPS - - * GCC now supports thread-local storage (TLS) for MIPS16. This - requires GNU binutils 2.22 or later. - * GCC can now generate code specifically for the Cavium Octeon+ and - Octeon2 processors. The associated command-line options are - -march=octeon+ and -march=octeon2 respectively. Both options - require GNU binutils 2.22 or later. - * GCC can now work around certain 24k errata, under the control of - the command-line option -mfix-24k. These workarounds require GNU - binutils 2.20 or later. - * 32-bit MIPS GNU/Linux targets such as mips-linux-gnu can now build - n32 and n64 multilibs. The result is effectively a 64-bit GNU/Linux - toolchain that generates 32-bit code by default. Use the - configure-time option --enable-targets=all to select these extra - multilibs. - * Passing -fno-delayed-branch now also stops the assembler from - automatically filling delay slots. - - PowerPC/PowerPC64 - - * Vectors of type vector long long or vector long are passed and - returned using the same method as other vectors with the VSX - instruction set. Previously GCC did not adhere to the ABI for - 128-bit vectors with 64-bit integer base types (PR 48857). This - will also be fixed in the GCC 4.6.1 and 4.5.4 releases. - * A new option -mno-pointers-to-nested-functions was added to allow - AIX 32-bit/64-bit and GNU/Linux 64-bit PowerPC users to specify - that the compiler should not load up the chain register (r11) - before calling a function through a pointer. If you use this - option, you cannot call nested functions through a pointer, or call - other languages that might use the static chain. - * A new option msave-toc-indirect was added to allow AIX - 32-bit/64-bit and GNU/Linux 64-bit PowerPC users control whether we - save the TOC in the prologue for indirect calls or generate the - save inline. This can speed up some programs that call through a - function pointer a lot, but it can slow down other functions that - only call through a function pointer in exceptional cases. - * The PowerPC port will now enable machine-specific built-in - functions when the user switches the target machine using the - #pragma GCC target or __attribute__ ((__target__ ("target"))) code - sequences. In addition, the target macros are updated. However, due - to the way the -save-temps switch is implemented, you won't see the - effect of these additional macros being defined in preprocessor - output. - - SH - - * A new option -msoft-atomic has been added. When it is specified, - GCC will generate GNU/Linux-compatible gUSA atomic sequences for - the new __atomic routines. - * Since it is neither supported by GAS nor officially documented, - code generation for little endian SH2A has been disabled. - Specifying -ml with -m2a* will now result in a compiler error. - * The defunct -mbranch-cost option has been fixed. - * Some improvements to the generated code of: - + Utilization of the tst #imm,R0 instruction. - + Dynamic shift instructions on SH2A. - + Integer absolute value calculations. - * The -mdiv= option for targets other than SHmedia has been fixed and - documented. - - SPARC - - * The option -mflat has been reinstated. When it is specified, the - compiler will generate code for a single register window model. - This is essentially a new implementation and the corresponding - debugger support has been added to GDB 7.4. - * Support for the options -mtune=native and -mcpu=native has been - added on selected native platforms (GNU/Linux and Solaris). - * Support for the SPARC T3 (Niagara 3) processor has been added. - * VIS: - + An intrinsics header visintrin.h has been added. - + Builtin intrinsics for the VIS 1.0 edge handling and pixel - compare instructions have been added. - + The little-endian version of alignaddr is now supported. - + When possible, VIS builtins are marked const, which should - increase the compiler's ability to optimize VIS operations. - + The compiler now properly tracks the %gsr register and how it - behaves as an input for various VIS instructions. - + Akin to fzero, the compiler can now generate fone instructions - in order to set all of the bits of a floating-point register - to 1. - + The documentation for the VIS intrinsics in the GCC manual has - been brought up to date and many inaccuracies were fixed. - + Intrinsics for the VIS 2.0 bmask, bshuffle, and - non-condition-code setting edge instructions have been added. - Their availability is controlled by the new -mvis2 and - -mno-vis2 options. They are enabled by default on - UltraSPARC-III and later CPUs. - * Support for UltraSPARC Fused Multiply-Add floating-point extensions - has been added. These instructions are enabled by default on SPARC - T3 (Niagara 3) and later CPUs. - - TILE-Gx/TILEPro - - * Support has been added for the Tilera TILE-Gx and TILEPro families - of processors. - -Other significant improvements - - * A new option (-grecord-gcc-switches) was added that appends - compiler command-line options that might affect code generation to - the DW_AT_producer attribute string in the DWARF debugging - information. - * GCC now supports various new GNU extensions to the DWARF debugging - information format, like [41]entry value and [42]call site - information, [43]typed DWARF stack or [44]a more compact macro - representation. Support for these extensions has been added to GDB - 7.4. They can be disabled through the -gstrict-dwarf command-line - option. - -GCC 4.7.1 - - This is the [45]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.7.1 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - The Go frontend in the 4.7.1 release fully supports the [46]Go 1 - language standard. - -GCC 4.7.2 - - This is the [47]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.7.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.7.3 - - This is the [48]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.7.3 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - - For questions related to the use of GCC, please consult these web - pages and the [49]GCC manuals. If that fails, the - [50]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [51]gcc@gcc.gnu.org. All of [52]our lists have public - archives. - - Copyright (C) [53]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [54]maintained by the GCC team. Last modified - 2013-04-11[55]. - -References - - 1. http://gcc.gnu.org/ml/gcc-patches/2011-03/msg01263.html - 2. http://savannah.nongnu.org/bugs/?35407 - 3. http://gcc.gnu.org/PR18145 - 4. http://gcc.gnu.org/gcc-4.7/porting_to.html - 5. http://openmp.org/wp/openmp-specifications/ - 6. http://gcc.gnu.org/wiki/TransactionalMemory - 7. http://gcc.gnu.org/wiki/Atomic/GCCMM - 8. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html - 9. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html - 10. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html - 11. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html - 12. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html - 13. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html - 14. http://gcc.gnu.org/PR14258 - 15. http://gcc.gnu.org/PR35688 - 16. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/libstdc++/manual/manual/status.html#status.iso.2011 - 17. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254 - 18. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Optimize-Options.html#index-Ofast-689 - 19. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfno-protect-parens_007d-270 - 20. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254 - 21. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfrontend-optimize_007d-275 - 22. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWfunction-elimination_007d-170 - 23. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270 - 24. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149 - 25. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html - 26. http://msdn.microsoft.com/en-us/library/bb787181%28v=vs.85%29.aspx - 27. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183 - 28. http://gcc.gnu.org/wiki/Fortran2003Status - 29. http://gcc.gnu.org/wiki/OOP - 30. http://gcc.gnu.org/wiki/Fortran2008Status - 31. http://gcc.gnu.org/wiki/Coarray - 32. http://gcc.gnu.org/wiki/CoarrayLib - 33. http://gcc.gnu.org/wiki/TS29113Status - 34. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bstd_003d_007d_0040var_007bstd_007d-option-53 - 35. http://weekly.golang.org/doc/go1.html - 36. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html - 37. http://nongnu.org/avr-libc/ - 38. http://gcc.gnu.org/PR54461 - 39. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html - 40. https://sites.google.com/site/x32abi/ - 41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1 - 42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2 - 43. http://www.dwarfstd.org/doc/040408.1.html - 44. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1 - 45. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1 - 46. http://weekly.golang.org/doc/go1.html - 47. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2 - 48. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.3 - 49. http://gcc.gnu.org/onlinedocs/ - 50. mailto:gcc-help@gcc.gnu.org - 51. mailto:gcc@gcc.gnu.org - 52. http://gcc.gnu.org/lists.html - 53. http://www.fsf.org/ - 54. http://gcc.gnu.org/about.html - 55. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.6/index.html - - GCC 4.6 Release Series - - April 12, 2013 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 4.6.4. - - This release is a bug-fix release, containing fixes for regressions in - GCC 4.6.3 relative to previous releases of GCC. - -Release History - - GCC 4.6.4 - April 12, 2013 ([2]changes, [3]documentation) - - GCC 4.6.3 - March 1, 2012 ([4]changes, [5]documentation) - - GCC 4.6.2 - October 26, 2011 ([6]changes, [7]documentation) - - GCC 4.6.1 - June 27, 2011 ([8]changes, [9]documentation) - - GCC 4.6.0 - March 25, 2011 ([10]changes, [11]documentation) - -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 [12]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 [13]amazing group of volunteers is - what makes GCC successful. - - For additional information about GCC please refer to the [14]GCC - project web site or contact the [15]GCC development mailing list. - - To obtain GCC please use [16]our mirror sites or [17]our SVN server. - - - For questions related to the use of GCC, please consult these web - pages and the [18]GCC manuals. If that fails, the - [19]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [20]gcc@gcc.gnu.org. All of [21]our lists have public - archives. - - Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [23]maintained by the GCC team. Last modified - 2013-04-12[24]. - -References - - 1. http://www.gnu.org/ - 2. http://gcc.gnu.org/gcc-4.6/changes.html - 3. http://gcc.gnu.org/onlinedocs/4.6.4/ - 4. http://gcc.gnu.org/gcc-4.6/changes.html - 5. http://gcc.gnu.org/onlinedocs/4.6.3/ - 6. http://gcc.gnu.org/gcc-4.6/changes.html - 7. http://gcc.gnu.org/onlinedocs/4.6.2/ - 8. http://gcc.gnu.org/gcc-4.6/changes.html - 9. http://gcc.gnu.org/onlinedocs/4.6.1/ - 10. http://gcc.gnu.org/gcc-4.6/changes.html - 11. http://gcc.gnu.org/onlinedocs/4.6.0/ - 12. http://gcc.gnu.org/gcc-4.6/buildstat.html - 13. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 14. http://gcc.gnu.org/index.html - 15. mailto:gcc@gcc.gnu.org - 16. http://gcc.gnu.org/mirrors.html - 17. http://gcc.gnu.org/svn.html - 18. http://gcc.gnu.org/onlinedocs/ - 19. mailto:gcc-help@gcc.gnu.org - 20. mailto:gcc@gcc.gnu.org - 21. http://gcc.gnu.org/lists.html - 22. http://www.fsf.org/ - 23. http://gcc.gnu.org/about.html - 24. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.6/changes.html - - GCC 4.6 Release Series - Changes, New Features, and Fixes - -Caveats - - * The options -b <machine> and -V <version> have been removed because - they were unreliable. Instead, users should directly run - <machine>-gcc when cross-compiling, or <machine>-gcc-<version> to - run a different version of gcc. - * GCC now has stricter checks for invalid command-line options. In - particular, when gcc was called to link object files rather than - compile source code, it would previously accept and ignore all - options starting with --, including linker options such as - --as-needed and --export-dynamic, although such options would - result in errors if any source code was compiled. Such options, if - unknown to the compiler, are now rejected in all cases; if the - intent was to pass them to the linker, options such as - -Wl,--as-needed should be used. - * Versions of the GNU C library up to and including 2.11.1 included - an [1]incorrect implementation of the cproj function. GCC optimizes - its builtin cproj according to the behavior specified and allowed - by the ISO C99 standard. If you want to avoid discrepancies between - the C library and GCC's builtin transformations when using cproj in - your code, use GLIBC 2.12 or later. If you are using an older GLIBC - and actually rely on the incorrect behavior of cproj, then you can - disable GCC's transformations using -fno-builtin-cproj. - * The C-only intermodule optimization framework (IMA, enabled by - -combine) has been removed in favor of the new generic link-time - optimization framework (LTO) introduced in [2]GCC 4.5.0. - * GCC now ships with the LGPL-licensed libquadmath library, which - provides quad-precision mathematical functions for targets with a - __float128 datatype. __float128 is available for targets on 32-bit - x86, x86-64 and Itanium architectures. The libquadmath library is - automatically built on such targets when building the Fortran - compiler. - * New -Wunused-but-set-variable and -Wunused-but-set-parameter - warnings were added for C, C++, Objective-C and Objective-C++. - These warnings diagnose variables respective parameters which are - only set in the code and never otherwise used. Usually such - variables are useless and often even the value assigned to them is - computed needlessly, sometimes expensively. The - -Wunused-but-set-variable warning is enabled by default by -Wall - flag and -Wunused-but-set-parameter by -Wall -Wextra flags. - * On ARM, a bug has been fixed in GCC's implementation of the AAPCS - rules for the layout of vectors that could lead to wrong code being - generated. Vectors larger than 8 bytes in size are now by default - aligned to an 8-byte boundary. This is an ABI change: code that - makes explicit use of vector types may be incompatible with binary - objects built with older versions of GCC. Auto-vectorized code is - not affected by this change. (This change affects GCC versions - 4.6.4 and later, with the exception of versions 4.7.0 and 4.7.1.) - * On AVR, variables with the progmem attribute to locate data in - flash memory must be qualified as const. - * Support for a number of older systems and recently unmaintained or - untested target ports of GCC has been declared obsolete in GCC 4.6. - 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: - + Argonaut ARC (arc-*) - + National Semiconductor CRX (crx-*) - + Motorola 68HC11 and 68HC12 (m68hc11-*-*, m6811-*-*, - m68hc12-*-*, m6812-*-*) - + Sunplus S+core (score-*) - The following ports for individual systems on particular - architectures have been obsoleted: - + Interix (i[34567]86-*-interix3*) - + NetWare x86 (i[3456x]86-*-netware*) - + Generic ARM PE (arm-*-pe* other than arm*-wince-pe*) - + MCore PE (mcore-*-pe*) - + SH SymbianOS (sh*-*-symbianelf*) - + GNU Hurd on Alpha and PowerPC (alpha*-*-gnu*, powerpc*-*-gnu*) - + M68K uClinux old ABI (m68k-*-uclinuxoldabi*) - + a.out NetBSD (arm*-*-netbsd*, i[34567]86-*-netbsd*, - vax-*-netbsd*, but not *-*-netbsdelf*) - The i[34567]86-*-pe alias for Cygwin targets has also been - obsoleted; users should configure for i[34567]86-*-cygwin* instead. - Certain configure options to control the set of libraries built - with GCC on some targets have been obsoleted. On ARM targets, the - options --disable-fpu, --disable-26bit, --disable-underscore, - --disable-interwork, --disable-biendian and --disable-nofmult have - been obsoleted. On MIPS targets, the options - --disable-single-float, --disable-biendian and --disable-softfloat - have been obsoleted. - * Support has been removed for all the [3]configurations obsoleted in - GCC 4.5. - * More information on porting to GCC 4.6 from previous versions of - GCC can be found in the [4]porting guide for this release. - -General Optimizer Improvements - - * A new general optimization level, -Ofast, has been introduced. It - combines the existing optimization level -O3 with options that can - affect standards compliance but result in better optimized code. - For example, -Ofast enables -ffast-math. - * Link-time optimization improvements: - + The [5]Scalable Whole Program Optimizer (WHOPR) project has - stabilized to the point of being usable. It has become the - default mode when using the LTO optimization model. Link time - optimization can now split itself into multiple parallel - compilations. Parallelism is controlled with -flto=n (where n - specifies the number of compilations to execute in parallel). - GCC can also cooperate with a GNU make job server by - specifying the -flto=jobserver option and adding + to the - beginning of the Makefile rule executing the linker. - Classical LTO mode can be enforced by -flto-partition=none. - This may result in small code quality improvements. - + A large number of bugs were fixed. GCC itself, Mozilla Firefox - and other large applications can be built with LTO enabled. - + The linker plugin support improvements - o Linker plugin is now enabled by default when the linker - is detected to have plugin support. This is the case for - GNU ld 2.21.51 or newer (on ELF and Cygwin targets) and - the Gold linker on ELF targets. Plugin support of the - Apple linker on Darwin is not compatible with GCC. The - linker plugin can also be controlled by the - -fuse-linker-plugin command line option. - o Resolution information from the linker plugin is used to - drive whole program assumptions. Use of the linker plugin - results in more aggressive optimization on binaries and - on shared libraries that use the hidden visibility - attribute. Consequently the use of -fwhole-program is not - necessary in addition to LTO. - + Hidden symbols used from non-LTO objects now have to be - explicitly annotated with externally_visible when the linker - plugin is not used. - + C++ inline functions and virtual tables are now privatized - more aggressively, leading to better inter-procedural - optimization and faster dynamic linking. - + Memory usage and intermediate language streaming performance - have been improved. - + Static constructors and destructors from individual units are - inlined into a single function. This can significantly improve - startup times of large C++ applications where static - constructors are very common. For example, static constructors - are used when including the iostream header. - + Support for the Ada language has been added. - * Interprocedural optimization improvements - + The interprocedural framework was re-tuned for link time - optimization. Several scalability issues were resolved. - + Improved auto-detection of const and pure functions. Newly, - noreturn functions are auto-detected. - The [6]-Wsuggest-attribute=[const|pure|noreturn] flag is - available that informs users when adding attributes to headers - might improve code generation. - + A number of inlining heuristic improvements. In particular: - o Partial inlining is now supported and enabled by default - at -O2 and greater. The feature can be controlled via - -fpartial-inlining. - Partial inlining splits functions with short hot path to - return. This allows more aggressive inlining of the hot - path leading to better performance and often to code size - reductions (because cold parts of functions are not - duplicated). - o Scalability for large compilation units was improved - significantly. - o Inlining of callbacks is now more aggressive. - o Virtual methods are considered for inlining when the - caller is inlined and devirtualization is then possible. - o Inlining when optimizing for size (either in cold regions - of a program or when compiling with -Os) was improved to - better handle C++ programs with larger abstraction - penalty, leading to smaller and faster code. - + The IPA reference optimization pass detecting global variables - used or modified by functions was strengthened and sped up. - + Functions whose address was taken are now optimized out when - all references to them are dead. - + A new inter-procedural static profile estimation pass detects - functions that are executed once or unlikely to be executed. - Unlikely executed functions are optimized for size. Functions - executed once are optimized for size except for the inner - loops. - + On most targets with named section support, functions used - only at startup (static constructors and main), functions used - only at exit and functions detected to be cold are placed into - separate text segment subsections. This extends the - -freorder-functions feature and is controlled by the same - switch. The goal is to improve the startup time of large C++ - programs. - Proper function placement requires linker support. GNU ld - 2.21.51 on ELF targets was updated to place those functions - together within the text section leading to better code - locality and faster startup times of large C++ programs. The - feature is also supported in the Apple linker. Support in the - gold linker is planned. - * A new switch -fstack-usage has been added. It makes the compiler - output stack usage information for the program, on a per-function - basis, in an auxiliary file. - * A new switch -fcombine-stack-adjustments has been added. It can be - used to enable or disable the compiler's stack-slot combining pass - which before was enabled automatically at -O1 and above, but could - not be controlled on its own. - * A new switch -fstrict-volatile-bitfields has been added. Using it - indicates that accesses to volatile bitfields should use a single - access of the width of the field's type. This option can be useful - for precisely defining and accessing memory-mapped peripheral - registers from C or C++. - -Compile time and memory usage improvements - - * Datastructures used by the dataflow framework in GCC were - reorganized for better memory usage and more cache locality. - Compile time is improved especially on units with large functions - (possibly resulting from a lot of inlining) not fitting into the - processor cache. The compile time of the GCC C compiler binary with - link-time optimization went down by over 10% (benchmarked on x86-64 - target). - -New Languages and Language specific improvements - - Ada - - * Stack checking has been improved on selected architectures (Alpha, - IA-32/x86-64, RS/6000 and SPARC): it now will detect stack - overflows in all cases on these architectures. - * Initial support for Ada 2012 has been added. - - C family - - * A new warning, enabled by -Wdouble-promotion, has been added that - warns about cases where a value of type float is implicitly - promoted to double. This is especially helpful for CPUs that handle - the former in hardware, but emulate the latter in software. - * A new function attribute leaf was introduced. This attribute allows - better inter-procedural optimization across calls to functions that - return to the current unit only via returning or exception - handling. This is the case for most library functions that have no - callbacks. - * Support for a new data type __int128 for targets having wide enough - machine-mode support. - * The new function attribute callee_pop_aggregate allows to specify - if the caller or callee is responsible for popping the aggregate - return pointer value from the stack. - * Support for selectively enabling and disabling warnings via #pragma - GCC diagnostic has been added. For instance: -#pragma GCC diagnostic error "-Wuninitialized" - foo(a); /* error is given for this one */ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wuninitialized" - foo(b); /* no diagnostic for this one */ -#pragma GCC diagnostic pop - foo(c); /* error is given for this one */ -#pragma GCC diagnostic pop - foo(d); /* depends on command line options */ - - * The -fmax-errors=N option is now supported. Using this option - causes the compiler to exit after N errors have been issued. - - C - - * There is now experimental support for some features from the - upcoming C1X revision of the ISO C standard. This support may be - selected with -std=c1x, or -std=gnu1x for C1X with GNU extensions. - Note that this support is experimental and may change incompatibly - in future releases for consistency with changes to the C1X standard - draft. The following features are newly supported as described in - the N1539 draft of C1X (with changes agreed at the March 2011 WG14 - meeting); some other features were already supported with no - compiler changes being needed, or have some support but not in full - accord with N1539 (as amended). - + Static assertions (_Static_assert keyword) - + Typedef redefinition - + New macros in <float.h> - + Anonymous structures and unions - * The new -fplan9-extensions option directs the compiler to support - some extensions for anonymous struct fields which are implemented - by the Plan 9 compiler. A pointer to a struct may be automatically - converted to a pointer to an anonymous field when calling a - function, in order to make the types match. An anonymous struct - field whose type is a typedef name may be referred to using the - typedef name. - - C++ - - * Improved [7]experimental support for the upcoming C++0x ISO C++ - standard, including support for constexpr (thanks to Gabriel Dos - Reis and Jason Merrill), nullptr (thanks to Magnus Fromreide), - noexcept, unrestricted unions, range-based for loops (thanks to - Rodrigo Rivas Costa), opaque enum declarations (thanks also to - Rodrigo), implicitly deleted functions and implicit move - constructors. - * When an extern declaration within a function does not match a - declaration in the enclosing context, G++ now properly declares the - name within the namespace of the function rather than the namespace - which was open just before the function definition ([8]c++/43145). - * GCC now warns by default when casting integers to larger pointer - types. These warnings can be disabled with the option - -Wno-int-to-pointer-cast, which is now also available in C++. - * G++ no longer optimizes using the assumption that a value of - enumeration type will fall within the range specified by the - standard, since that assumption is easily violated with a - conversion from integer type ([9]c++/43680). The old behavior can - be restored with -fstrict-enums. - * The new -fnothrow-opt flag changes the semantics of a throw() - exception specification to match the proposed semantics of the - noexcept specification: just call terminate if an exception tries - to propagate out of a function with such an exception - specification. This dramatically reduces or eliminates the code - size overhead from adding the exception specification. - * The new -Wnoexcept flag will suggest adding a noexcept qualifier to - a function that the compiler can tell doesn't throw if it would - change the value of a noexcept expression. - * The -Wshadow option now warns if a local variable or type - declaration shadows another type in C++. Note that the compiler - will not warn if a local variable shadows a struct/class/enum, but - will warn if it shadows an explicit typedef. - * When an identifier is not found in the current scope, G++ now - offers suggestions about which identifier might have been intended. - * G++ now issues clearer diagnostics for missing semicolons after - class, struct, and union definitions. - * G++ now issues clearer diagnostics for missing semicolons after - class member declarations. - * G++ now issues clearer diagnostics when a colon is used in a place - where a double-colon was intended. - * G++ no longer accepts mutable on reference members ([10]c++/33558). - Use -fpermissive to allow the old, non-conforming behaviour. - * A few mangling fixes have been made, to attribute const/volatile on - function pointer types, decltype of a plain decl, and use of a - function parameter in the declaration of another parameter. By - default the compiler still uses the old mangling, but emits aliases - with the new mangling on targets that support strong aliases. Users - can switch over entirely to the new mangling with -fabi-version=5 - or -fabi-version=0. -Wabi will now warn about code that uses the - old mangling. - * In 4.6.0 and 4.6.1 G++ no longer allows objects of const-qualified - type to be default initialized unless the type has a user-declared - default constructor. In 4.6.2 G++ implements the proposed - resolution of [11]DR 253, so default initialization is allowed if - it initializes all subobjects. Code that fails to compile can be - fixed by providing an initializer e.g. - struct A { A(); }; - struct B : A { int i; }; - const B b = B(); - Use -fpermissive to allow the old, non-conforming behaviour. - - Runtime Library (libstdc++) - - * [12]Improved experimental support for the upcoming ISO C++ - standard, C++0x, including using constexpr and nullptr. - * Performance improvements to the [13]Debug Mode, thanks to Franc,ois - Dumont. - * Atomic operations used for reference-counting are annotated so that - they can be understood by race detectors such as Helgrind, see - [14]Data Race Hunting. - * Most libstdc++ standard headers have been changed to no longer - include the cstddef header as an implementation detail. Code that - relied on that header being included as side-effect of including - other standard headers will need to include cstddef explicitly. - - Fortran - - * On systems supporting the libquadmath library, GNU Fortran now also - supports a quad-precision, kind=16 floating-point data type - (REAL(16), COMPLEX(16)). As the data type is not fully supported in - hardware, calculations might be one to two orders of magnitude - slower than with the 4, 8 or 10 bytes floating-point data types. - This change does not affect systems which support REAL(16) in - hardware nor those which do not support libquadmath. - * Much improved compile time for large array constructors. - * In order to reduce execution time and memory consumption, use of - temporary arrays in assignment expressions is avoided for many - cases. The compiler now reverses loops in order to avoid generating - a temporary array where possible. - * Improved diagnostics, especially with -fwhole-file. - * The -fwhole-file flag is now enabled by default. This improves code - generation and diagnostics. It can be disabled using the deprecated - -fno-whole-file flag. - * Support the generation of Makefile dependencies via the [15]-M... - flags of GCC; you may need to specify the -cpp option in addition. - The dependencies take modules, Fortran's include, and CPP's - #include into account. Note: Using -M for the module path is no - longer supported, use -J instead. - * The flag -Wconversion has been modified to only issue warnings - where a conversion leads to information loss. This drastically - reduces the number of warnings; -Wconversion is thus now enabled - with -Wall. The flag -Wconversion-extra has been added and also - warns about other conversions; -Wconversion-extra typically issues - a huge number of warnings, most of which can be ignored. - * A new command-line option -Wunused-dummy-argument warns about - unused dummy arguments and is included in -Wall. Before, - -Wunused-variable also warned about unused dummy arguments. - * Fortran 2003 support has been extended: - + Improved support for polymorphism between libraries and - programs and for complicated inheritance patterns (cf. - [16]object-oriented programming). - + Experimental support of the ASSOCIATE construct. - + In pointer assignments it is now possible to specify the lower - bounds of the pointer and, for a rank-1 or a simply contiguous - data-target, to remap the bounds. - + Automatic (re)allocation: In intrinsic assignments to - allocatable variables the left-hand side will be automatically - allocated (if unallocated) or reallocated (if the shape or - type parameter is different). To avoid the small performance - penalty, you can use a(:) = ... instead of a = ... for arrays - and character strings - or disable the feature using -std=f95 - or -fno-realloc-lhs. - + Deferred type parameter: For scalar allocatable and pointer - variables the character length can be deferred. - + Namelist variables with allocatable and pointer attribute and - nonconstant length type parameter are supported. - * Fortran 2008 support has been extended: - + Experimental [17]coarray support (for one image only, i.e. - num_images() == 1); use the [18]-fcoarray=single flag to - enable it. - + The STOP and the new ERROR STOP statements now support all - constant expressions. - + Support for the CONTIGUOUS attribute. - + Support for ALLOCATE with MOLD. - + Support for the STORAGE_SIZE intrinsic inquiry function. - + Support of the NORM2 and PARITY intrinsic functions. - + The following bit intrinsics were added: POPCNT and POPPAR for - counting the number of 1 bits and returning the parity; BGE, - BGT, BLE, and BLT for bitwise comparisons; DSHIFTL and DSHIFTR - for combined left and right shifts, MASKL and MASKR for simple - left and right justified masks, MERGE_BITS for a bitwise merge - using a mask, SHIFTA, SHIFTL and SHIFTR for shift operations, - and the transformational bit intrinsics IALL, IANY and - IPARITY. - + Support of the EXECUTE_COMMAND_LINE intrinsic subroutine. - + Support for the IMPURE attribute for procedures, which allows - for ELEMENTAL procedures without the restrictions of PURE. - + Null pointers (including NULL()) and not allocated variables - can be used as actual argument to optional non-pointer, - non-allocatable dummy arguments, denoting an absent argument. - + Non-pointer variables with TARGET attribute can be used as - actual argument to POINTER dummies with INTENT(IN) - + Pointers including procedure pointers and those in a derived - type (pointer components) can now be initialized by a target - instead of only by NULL. - + The EXIT statement (with construct-name) can now be used to - leave not only the DO but also the ASSOCIATE, BLOCK, IF, - SELECT CASE and SELECT TYPE constructs. - + Internal procedures can now be used as actual argument. - + The named constants INTEGER_KINDS, LOGICAL_KINDS, REAL_KINDS - and CHARACTER_KINDS of the intrinsic module ISO_FORTRAN_ENV - have been added; these arrays contain the supported kind - values for the respective types. - + The module procedures C_SIZEOF of the intrinsic module - ISO_C_BINDINGS and COMPILER_VERSION and COMPILER_OPTIONS of - ISO_FORTRAN_ENV have been implemented. - + Minor changes: obsolescence diagnostics for ENTRY was added - for -std=f2008; a line may start with a semicolon; for - internal and module procedures END can be used instead of END - SUBROUTINE and END FUNCTION; SELECTED_REAL_KIND now also takes - a RADIX argument; intrinsic types are supported for - TYPE(intrinsic-type-spec); multiple type-bound procedures can - be declared in a single PROCEDURE statement; implied-shape - arrays are supported for named constants (PARAMETER). The - transformational, three argument versions of BESSEL_JN and - BESSEL_YN were added - the elemental, two-argument version had - been added in GCC 4.4; note that the transformational - functions use a recurrence algorithm. - - Go - - Support for the [19]Go programming language has been added to GCC. It - is not enabled by default when you build GCC; use the - --enable-languages configure option to build it. The driver program for - compiling Go code is gccgo. - - Go is currently known to work on GNU/Linux and RTEMS. Solaris support - is in progress. It may or may not work on other platforms. - - Objective-C and Objective-C++ - - * The -fobjc-exceptions flag is now required to enable Objective-C - exception and synchronization syntax (introduced by the keywords - @try, @catch, @finally and @synchronized). - * A number of Objective-C 2.0 features and extensions are now - supported by GCC. These features are enabled by default; you can - disable them by using the new -fobjc-std=objc1 command-line option. - * The Objective-C 2.0 dot-syntax is now supported. It is an - alternative syntax for using getters and setters; object.count is - automatically converted into [object count] or [object setCount: - ...] depending on context; for example if (object.count > 0) is - automatically compiled into the equivalent of if ([object count] > - 0) while object.count = 0; is automatically compiled into the - equivalent ot [object setCount: 0];. The dot-syntax can be used - with instance and class objects and with any setters or getters, no - matter if they are part of a declared property or not. - * Objective-C 2.0 declared properties are now supported. They are - declared using the new @property keyword, and are most commonly - used in conjunction with the new Objective-C 2.0 dot-syntax. The - nonatomic, readonly, readwrite, assign, retain, copy, setter and - getter attributes are all supported. Marking declared properties - with __attribute__ ((deprecated)) is supported too. - * The Objective-C 2.0 @synthesize and @dynamic keywords are - supported. @synthesize causes the compiler to automatically - synthesize a declared property, while @dynamic is used to disable - all warnings for a declared property for which no implementation is - provided at compile time. Synthesizing declared properties requires - runtime support in most useful cases; to be able to use it with the - GNU runtime, appropriate helper functions have been added to the - GNU Objective-C runtime ABI, and are implemented by the GNU - Objective-C runtime library shipped with GCC. - * The Objective-C 2.0 fast enumeration syntax is supported in - Objective-C. This is currently not yet available in Objective-C++. - Fast enumeration requires support in the runtime, and such support - has been added to the GNU Objective-C runtime library (shipped with - GCC). - * The Objective-C 2.0 @optional keyword is supported. It allows you - to mark methods or properties in a protocol as optional as opposed - to required. - * The Objective-C 2.0 @package keyword is supported. It has currently - the same effect as the @public keyword. - * Objective-C 2.0 method attributes are supported. Currently the - supported attributes are deprecated, sentinel, noreturn and format. - * Objective-C 2.0 method argument attributes are supported. The most - widely used attribute is unused, to mark an argument as unused in - the implementation. - * Objective-C 2.0 class and protocol attributes are supported. - Currently the only supported attribute is deprecated. - * Objective-C 2.0 class extensions are supported. A class extension - has the same syntax as a category declaration with no category - name, and the methods and properties declared in it are added - directly to the main class. It is mostly used as an alternative to - a category to add methods to a class without advertising them in - the public headers, with the advantage that for class extensions - the compiler checks that all the privately declared methods are - actually implemented. - * As a result of these enhancements, GCC can now be used to build - Objective-C and Objective-C++ software that uses Foundation and - other important system frameworks with the NeXT runtime on Darwin 9 - and Darwin 10 (OSX 10.5 and 10.6). - * Many bugs in the compiler have been fixed in this release; in - particular, LTO can now be used when compiling Objective-C and - Objective-C++ and the parser is much more robust in dealing with - invalid code. - - Runtime Library (libobjc) - - * The GNU Objective-C runtime library now defines the macro - __GNU_LIBOBJC__ (with a value that is increased at every release - where there is any change to the API) in objc/objc.h, making it - easy to determine if the GNU Objective-C runtime library is being - used, and if so, which version. Previous versions of the GNU - Objective-C runtime library (and other Objective-C runtime - libraries such as the Apple one) do not define this macro. - * A new Objective-C 2.0 API, almost identical to the one implemented - by the Apple Objective-C runtime, has been implemented in the GNU - Objective-C runtime library. The new API hides the internals of - most runtime structures but provides a more extensive set of - functions to operate on them. It is much easier, for example, to - create or modify classes at runtime. The new API also makes it - easier to port software from Apple to GNU as almost no changes - should be required. The old API is still supported for backwards - compatibility; including the old objc/objc-api.h header file - automatically selects the old API, while including the new - objc/runtime.h header file automatically selects the new API. - Support for the old API is being phased out and upgrading the - software to use the new API is strongly recommended. To check for - the availability of the new API, the __GNU_LIBOBJC__ macro can be - used as older versions of the GNU Objective-C runtime library, - which do not support the new API, do not define such a macro. - * Runtime support for @synchronized has been added. - * Runtime support for Objective-C 2.0 synthesized property accessors - has been added. - * Runtime support for Objective-C 2.0 fast enumeration has been - added. - -New Targets and Target Specific Improvements - - ARM - - * GCC now supports the Cortex-M4 processor implementing the v7-em - version of the architecture using the option -mcpu=cortex-m4. - * Scheduling descriptions for the Cortex-M4, the Neon and the - floating point units of the Cortex-A9 and a pipeline description - for the Cortex-A5 have been added. - * Synchronization primitives such as __sync_fetch_and_add and friends - are now inlined for supported architectures rather than calling - into a kernel helper function. - * SSA loop prefetching is enabled by default for the Cortex-A9 at - -O3. - * Several improvements were committed to improve code generation for - the ARM architecture including a rewritten implementation for load - and store multiples. - * Several enhancements were committed to improve SIMD code generation - for NEON by adding support for widening instructions, misaligned - loads and stores, vector conditionals and support for 64 bit - arithmetic. - * Support was added for the Faraday cores fa526, fa606te, fa626te, - fmp626te, fmp626 and fa726te and can be used with the respective - names as parameters to the -mcpu= option. - * Basic support was added for Cortex-A15 and is available through - -mcpu=cortex-a15. - * GCC for AAPCS configurations now more closely adheres to the AAPCS - specification by enabling -fstrict-volatile-bitfields by default. - - IA-32/x86-64 - - * The new -fsplit-stack option permits programs to use a - discontiguous stack. This is useful for threaded programs, in that - it is no longer necessary to specify the maximum stack size when - creating a thread. This feature is currently only implemented for - 32-bit and 64-bit x86 GNU/Linux targets. - * Support for emitting profiler counter calls before function - prologues. This is enabled via a new command-line option -mfentry. - * Optimization for the Intel Core 2 processors is now available - through the -march=core2 and -mtune=core2 options. - * Support for Intel Core i3/i5/i7 processors is now available through - the -march=corei7 and -mtune=corei7 options. - * Support for Intel Core i3/i5/i7 processors with AVX is now - available through the -march=corei7-avx and -mtune=corei7-avx - options. - * Support for AMD Bobcat (family 14) processors is now available - through the -march=btver1 and -mtune=btver1 options. - * Support for AMD Bulldozer (family 15) processors is now available - through the -march=bdver1 and -mtune=bdver1 options. - * The default setting (when not optimizing for size) for 32-bit - GNU/Linux and Darwin x86 targets has been changed to - -fomit-frame-pointer. The default can be reverted to - -fno-omit-frame-pointer by configuring GCC with the - --enable-frame-pointer configure option. - * Darwin, FreeBSD, Solaris 2, MinGW and Cygwin now all support - __float128 on 32-bit and 64-bit x86 targets. - * AVX floating-point arithmetic can now be enabled by default at - configure time with the new --with-fpmath=avx option. - * The SSA loop prefetching pass is enabled when using -O3 when - optimizing for CPUs where prefetching is beneficial (AMD CPUs newer - than K6). - * Support for TBM (Trailing Bit Manipulation) built-in functions and - code generation is available via -mtbm. - * Support for AMD's BMI (Bit Manipulation) built-in functions and - code generation is available via -mbmi. - - MicroBlaze - - * Support has been added for the Xilinx MicroBlaze softcore processor - (microblaze-elf) embedded target. This configurable processor is - supported on several Xilinx Spartan and Virtex FPGAs. - - MIPS - - * GCC now supports the Loongson 3A processor. Its canonical -march= - and -mtune= name is loongson3a. - - MN10300 / AM33 - - * The inline assembly register constraint "A" has been renamed "c". - This constraint is used to select a floating-point register that - can be used as the destination of a multiply-accumulate - instruction. - * New inline assembly register constraints "A" and "D" have been - added. These constraint letters resolve to all general registers - when compiling for AM33, and resolve to address registers only or - data registers only when compiling for MN10300. - * The MDR register is represented in the compiler. One can access the - register via the "z" constraint in inline assembly. It can be - marked as clobbered or used as a local register variable via the - "mdr" name. The compiler uses the RETF instruction if the function - does not modify the MDR register, so it is important that inline - assembly properly annotate any usage of the register. - - PowerPC/PowerPC64 - - * GCC now supports the Applied Micro Titan processor with - -mcpu=titan. - * The -mrecip option has been added, which indicates whether the - reciprocal and reciprocal square root instructions should be used. - * The -mveclibabi=mass option can be used to enable the compiler to - autovectorize mathematical functions using the Mathematical - Acceleration Subsystem library. - * The -msingle-pic-base option has been added, which instructs the - compiler to avoid loading the PIC base register in function - prologues. The PIC base register must be initialized by the runtime - system. - * The -mblock-move-inline-limit option has been added, which enables - the user to control the maximum size of inlined memcpy calls and - similar. - * PowerPC64 GNU/Linux support for applications requiring a large TOC - section has been improved. A new command-line option, - -mcmodel=MODEL, controls this feature; valid values for MODEL are - small, medium, or large. - * The Altivec builtin functions vec_ld and vec_st have been modified - to generate the Altivec memory instructions LVX and STVX, even if - the -mvsx option is used. In the initial GCC 4.5 release, these - builtin functions were changed to generate VSX memory reference - instructions instead of Altivec memory instructions, but there are - differences between the two instructions. If the VSX instruction - set is available, you can now use the new builtin functions - vec_vsx_ld and vec_vsx_st which always generates the VSX memory - instructions. - * The GCC compiler on AIX now defaults to a process layout with a - larger data space allowing larger programs to be compiled. - * The GCC long double type on AIX 6.1 and above has reverted to 64 - bit double precision, matching the AIX XL compiler default, because - of missing C99 symbols required by the GCC runtime. - * The default processor scheduling model and tuning for PowerPC64 - GNU/Linux and for AIX 6.1 and above now is POWER7. - * Starting with GCC 4.6.1, vectors of type vector long long or vector - long are passed and returned in the same method as other vectors - with the VSX instruction set. Previously the GCC compiler did not - adhere to the ABI for 128-bit vectors with 64-bit integer base - types (PR 48857). This is also fixed in the GCC 4.5.4 release. - - S/390, zSeries and System z9/z10, IBM zEnterprise z196 - - * Support for the zEnterprise z196 processor has been added. When - using the -march=z196 option, the compiler will generate code - making use of the following instruction facilities: - + Conditional load/store - + Distinct-operands - + Floating-point-extension - + Interlocked-access - + Population-count - The -mtune=z196 option avoids the compare and branch instructions - as well as the load address instruction with an index register as - much as possible and performs instruction scheduling appropriate - for the new out-of-order pipeline architecture. - * When using the -m31 -mzarch options the generated code still - conforms to the 32-bit ABI but uses the general purpose registers - as 64-bit registers internally. This requires a Linux kernel saving - the whole 64-bit registers when doing a context switch. Kernels - providing that feature indicate that by the 'highgprs' string in - /proc/cpuinfo. - * The SSA loop prefetching pass is enabled when using -O3. - - SPARC - - * GCC now supports the LEON series of SPARC V8 processors. The code - generated by the compiler can either be tuned to it by means of the - --with-tune=leon configure option and -mtune=leon compilation - option, or the compiler can be built for the sparc-leon-{elf,linux} - and sparc-leon3-{elf,linux} targets directly. - * GCC has stopped sign/zero-extending parameter registers in the - callee for functions taking parameters with sub-word size in 32-bit - mode, since this is redundant with the specification of the ABI. - GCC has never done so in 64-bit mode since this is also redundant. - * The command line option -mfix-at697f has been added to enable the - documented workaround for the single erratum of the Atmel AT697F - processor. - -Operating Systems - - Android - - * GCC now supports the Bionic C library and provides a convenient way - of building native libraries and applications for the Android - platform. Refer to the documentation of the -mandroid and -mbionic - options for details on building native code. At the moment, Android - support is enabled only for ARM. - - Darwin/Mac OS X - - * General - + Initial support for CFString types has been added. - This allows GCC to build projects including the system Core - Foundation frameworks. The GCC Objective-C family supports - CFString "toll-free bridged" as per the Mac OS X system tools. - CFString is also recognized in the context of format - attributes and arguments (see the documentation for format - attributes for limitations). At present, 8-bit character types - are supported. - + Object file size reduction. - The Darwin zeroed memory allocators have been re-written to - make more use of .zerofill sections. For non-debug code, this - can reduce object file size significantly. - + Objective-C family 64-bit support (NeXT ABI 2). - Initial support has been added to support 64-bit Objective-C - code using the Darwin/OS X native (NeXT) runtime. ABI version - 2 will be selected automatically when 64-bit code is built. - + Objective-C family 32-bit ABI 1. - For 32-bit code ABI 1 is also now also allowed. At present it - must be selected manually using -fobjc-abi-version=1 where - applicable - i.e. on Darwin 9/10 (OS X 10.5/10.6). - * x86 Architecture - + The -mdynamic-no-pic option has been enabled. - Code supporting -mdynamic-no-pic optimization has been added - and is applicable to -m32 builds. The compiler bootstrap uses - the option where appropriate. - + The default value for -mtune= has been changed. - Since Darwin systems are primarily Xeon, Core-2 or similar the - default tuning has been changed to -mtune=core2. - + Enable 128-bit long double (__float128) support on Darwin. - * PPC Architecture - + Darwin64 ABI. - Several significant bugs have been fixed, such that GCC now - produces code compatible with the Darwin64 PowerPC ABI. - + libffi and boehm-gc. - The Darwin ports of the libffi and boehm-gc libraries have - been upgraded to include a Darwin64 implementation. This means - that powerpc*-*-darwin9 platforms may now, for example, build - Java applications with -m64 enabled. - + Plug-in support has been enabled. - + The -fsection-anchors option is now available although, - presently, not heavily tested. - - Solaris 2 - - New Features - - * Support symbol versioning with the Sun linker. - * Allow libstdc++ to leverage full ISO C99 support on Solaris 10+. - * Support thread-local storage (TLS) with the Sun assembler on - Solaris 2/x86. - * Support TLS on Solaris 8/9 if prerequisites are met. - * Support COMDAT group with the GNU assembler and recent Sun linker. - * Support the Sun assembler visibility syntax. - * Default Solaris 2/x86 to -march=pentium4 (Solaris 10+) resp. - -march=pentiumpro (Solaris 8/9). - * Don't use SSE on Solaris 8/9 x86 by default. - * Enable 128-bit long double (__float128) support on Solaris 2/x86. - - ABI Change - - * Change the ABI for returning 8-byte vectors like __m64 in MMX - registers on Solaris 10+/x86 to match the Sun Studio 12.1+ - compilers. This is an incompatible change. If you use such types, - you must either recompile all your code with the new compiler or - use the new -mvect8-ret-in-mem option to remain compatible with - previous versions of GCC and Sun Studio. - - Windows x86/x86_64 - - * Initial support for decimal floating point. - * Support for the __thiscall calling-convention. - * Support for hot-patchable function prologues via the - ms_hook_prologue attribute for x86_64 in addition to 32-bit x86. - * Improvements of stack-probing and stack-allocation mechanisms. - * Support of push/pop-macro pragma as preprocessor command. - With #pragma push_macro("macro-name") the current definition of - macro-name is saved and can be restored with #pragma - pop_macro("macro-name") to its saved definition. - * Enable 128-bit long double (__float128) support on MinGW and - Cygwin. - -Other significant improvements - - Installation changes - - * An install-strip make target is provided that installs stripped - executables, and may install libraries with unneeded or debugging - sections stripped. - * On Power7 systems, there is a potential problem if you build the - GCC compiler with a host compiler using options that enable the VSX - instruction set generation. If the host compiler has been patched - so that the vec_ld and vec_st builtin functions generate Altivec - memory instructions instead of VSX memory instructions, then you - should be able to build the compiler with VSX instruction - generation. - -Changes for GCC Developers - - Note: these changes concern developers that develop GCC itself or - software that integrates with GCC, such as plugins, and not the general - GCC users. - * The gengtype utility, which previously was internal to the GCC - build process, has been enchanced to provide GC root information - for plugins as necessary. - * The old GC allocation interface of ggc_alloc and friends was - replaced with a type-safe alternative. - -GCC 4.6.1 - - This is the [20]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.6.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.6.2 - - This is the [21]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.6.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.6.3 - - This is the [22]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.6.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.6.4 - - This is the [23]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.6.4 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - - For questions related to the use of GCC, please consult these web - pages and the [24]GCC manuals. If that fails, the - [25]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [26]gcc@gcc.gnu.org. All of [27]our lists have public - archives. - - Copyright (C) [28]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [29]maintained by the GCC team. Last modified - 2013-04-12[30]. - -References - - 1. http://sourceware.org/bugzilla/show_bug.cgi?id=10401 - 2. http://gcc.gnu.org/gcc-4.5/changes.html - 3. http://gcc.gnu.org/gcc-4.5/changes.html#obsoleted - 4. http://gcc.gnu.org/gcc-4.6/porting_to.html - 5. http://gcc.gnu.org/projects/lto/whopr.pdf - 6. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options - 7. http://gcc.gnu.org/gcc-4.6/cxx0x_status.html - 8. http://gcc.gnu.org/PR43145 - 9. http://gcc.gnu.org/PR43680 - 10. http://gcc.gnu.org/PR33558 - 11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#253 - 12. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x - 13. http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html - 14. http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.races - 15. http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html - 16. http://gcc.gnu.org/wiki/OOP - 17. http://gcc.gnu.org/wiki/Coarray - 18. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcoarray_007d-233 - 19. http://golang.org/ - 20. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.1 - 21. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.2 - 22. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.3 - 23. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.4 - 24. http://gcc.gnu.org/onlinedocs/ - 25. mailto:gcc-help@gcc.gnu.org - 26. mailto:gcc@gcc.gnu.org - 27. http://gcc.gnu.org/lists.html - 28. http://www.fsf.org/ - 29. http://gcc.gnu.org/about.html - 30. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.5/index.html - - GCC 4.5 Release Series - - Jul 2, 2012 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 4.5.4. - - This release is a bug-fix release, containing fixes for regressions in - GCC 4.5.3 relative to previous releases of GCC. - -Release History - - GCC 4.5.4 - Jul 2, 2012 ([2]changes) - - GCC 4.5.3 - Apr 28, 2011 ([3]changes) - - GCC 4.5.2 - Dec 16, 2010 ([4]changes) - - GCC 4.5.1 - Jul 31, 2010 ([5]changes) - - GCC 4.5.0 - April 14, 2010 ([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. - - - For questions related to the use of GCC, please consult these web - pages and the [13]GCC manuals. If that fails, the - [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [15]gcc@gcc.gnu.org. All of [16]our lists have public - archives. - - Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [18]maintained by the GCC team. Last modified - 2012-11-02[19]. - -References - - 1. http://www.gnu.org/ - 2. http://gcc.gnu.org/gcc-4.5/changes.html - 3. http://gcc.gnu.org/gcc-4.5/changes.html - 4. http://gcc.gnu.org/gcc-4.5/changes.html - 5. http://gcc.gnu.org/gcc-4.5/changes.html - 6. http://gcc.gnu.org/gcc-4.5/changes.html - 7. http://gcc.gnu.org/gcc-4.5/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. http://gcc.gnu.org/onlinedocs/ - 14. mailto:gcc-help@gcc.gnu.org - 15. mailto:gcc@gcc.gnu.org - 16. http://gcc.gnu.org/lists.html - 17. http://www.fsf.org/ - 18. http://gcc.gnu.org/about.html - 19. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.5/changes.html - - GCC 4.5 Release Series - Changes, New Features, and Fixes - -Caveats - - * GCC now requires the [1]MPC library in order to build. See the - [2]prerequisites page for version requirements. - * Support for a number of older systems and recently unmaintained or - untested target ports of GCC has been declared obsolete in GCC 4.5. - Unless there is activity to revive them, the next release of GCC - will have their sources permanently removed. - The following ports for individual systems on particular - architectures have been obsoleted: - + IRIX releases before 6.5 (mips-sgi-irix5*, - mips-sgi-irix6.[0-4]) - + Solaris 7 (*-*-solaris2.7) - + Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*, - alpha-dec-osf5.0*) - + Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions - can be found in the [3]announcement. - Support for the classic POWER architecture implemented in the - original RIOS and RIOS2 processors of the old IBM RS/6000 product - line has been obsoleted in the rs6000 port. This does not affect - the new generation Power and PowerPC architectures. - * Support has been removed for all the [4]configurations obsoleted in - GCC 4.4. - * Support has been removed for the protoize and unprotoize utilities, - obsoleted in GCC 4.4. - * Support has been removed for tuning for Itanium1 (Merced) variants. - Note that code tuned for Itanium2 should also run correctly on - Itanium1. - * GCC now generates unwind info also for epilogues. DWARF debuginfo - generated by GCC now uses more features of DWARF3 than before, and - also some DWARF4 features. GDB older than 7.0 is not able to handle - either of these, so to debug GCC 4.5 generated binaries or - libraries GDB 7.0 or later is needed. You can disable use of DWARF4 - features with the -gdwarf-3 -gstrict-dwarf options, or use - -gdwarf-2 -gstrict-dwarf to restrict GCC to just DWARF2, but - epilogue unwind info is emitted unconditionally whenever unwind - info is emitted. - * On x86 targets, code containing floating-point calculations may run - significantly slower when compiled with GCC 4.5 in strict C99 - conformance mode than they did with earlier GCC versions. This is - due to stricter standard conformance of the compiler and can be - avoided by using the option -fexcess-precision=fast; also see - [5]below. - * The function attribute noinline no longer prevents GCC from cloning - the function. A new attribute noclone has been introduced for this - purpose. Cloning a function means that it is duplicated and the new - copy is specialized for certain contexts (for example when a - parameter is a known constant). - -General Optimizer Improvements - - * The -save-temps now takes an optional argument. The -save-temps and - -save-temps=cwd switches write the temporary files in the current - working directory based on the original source file. The - -save-temps=obj switch will write files into the directory - specified with the -o option, and the intermediate filenames are - based on the output file. This will allow the user to get the - compiler intermediate files when doing parallel builds without two - builds of the same filename located in different directories from - interfering with each other. - * Debugging dumps are now created in the same directory as the object - file rather than in the current working directory. This allows the - user to get debugging dumps when doing parallel builds without two - builds of the same filename interfering with each other. - * GCC has been integrated with the [6]MPC library. This allows GCC to - evaluate complex arithmetic at compile time [7]more accurately. It - also allows GCC to evaluate calls to complex built-in math - functions having constant arguments and replace them at compile - time with their mathematically equivalent results. In doing so, 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: cacos, cacosh, casin, casinh, catan, - catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan, - and ctanh. The float and long double variants of these functions - (e.g. csinf and csinl) are also handled. - * A new link-time optimizer has been added ([8]-flto). When this - option is used, GCC generates a bytecode representation of each - input file and writes it to specially-named sections in each object - file. When the object files are linked together, all the function - bodies are read from these named sections and instantiated as if - they had been part of the same translation unit. This enables - interprocedural optimizations to work across different files (and - even different languages), potentially improving the performance of - the generated code. To use the link-timer optimizer, -flto needs to - be specified at compile time and during the final link. If the - program does not require any symbols to be exported, it is possible - to combine -flto and the experimental [9]-fwhopr with - [10]-fwhole-program to allow the interprocedural optimizers to use - more aggressive assumptions. - * The automatic parallelization pass was enhanced to support - parallelization of outer loops. - * Automatic parallelization can be enabled as part of Graphite. In - addition to -ftree-parallelize-loops=, specify - -floop-parallelize-all to enable the Graphite-based optimization. - * The infrastructure for optimizing based on [11]restrict qualified - pointers has been rewritten and should result in code generation - improvements. Optimizations based on restrict qualified pointers - are now also available when using -fno-strict-aliasing. - * There is a new optimization pass that attempts to change prototype - of functions to avoid unused parameters, pass only relevant parts - of structures and turn arguments passed by reference to arguments - passed by value when possible. It is enabled by -O2 and above as - well as -Os and can be manually invoked using the new command-line - switch -fipa-sra. - * GCC now optimize exception handling code. In particular cleanup - regions that are proved to not have any effect are optimized out. - -New Languages and Language specific improvements - - All languages - - * The -fshow-column option is now on by default. This means error - messages now have a column associated with them. - - Ada - - * Compilation of programs heavily using discriminated record types - with variant parts has been sped up and generates more compact - code. - * Stack checking now works reasonably well on most plaforms. In some - specific cases, stack overflows may still fail to be detected, but - a compile-time warning will be issued for these cases. - - C family - - * If a header named in a #include directive is not found, the - compiler exits immediately. This avoids a cascade of errors arising - from declarations expected to be found in that header being - missing. - * A new built-in function __builtin_unreachable() has been added that - tells the compiler that control will never reach that point. It may - be used after asm statements that terminate by transferring control - elsewhere, and in other places that are known to be unreachable. - * The -Wlogical-op option now warns for logical expressions such as - (c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be - mistakes. This option is disabled by default. - * An asm goto feature has been added to allow asm statements that - jump to C labels. - * C++0x raw strings are supported for C++ and for C with -std=gnu99. - * The deprecated attribute now takes an optional string argument, for - example, __attribute__((deprecated("text string"))), that will be - printed together with the deprecation warning. - - C - - * The -Wenum-compare option, which warns when comparing values of - different enum types, now works for C. It formerly only worked for - C++. This warning is enabled by -Wall. It may be avoided by using a - type cast. - * The -Wcast-qual option now warns about casts which are unsafe in - that they permit const-correctness to be violated without further - warnings. Specifically, it warns about cases where a qualifier is - added when all the lower types are not const. For example, it warns - about a cast from char ** to const char **. - * The -Wc++-compat option is significantly improved. It issues new - warnings for: - + Using C++ reserved operator names as identifiers. - + Conversions to enum types without explicit casts. - + Using va_arg with an enum type. - + Using different enum types in the two branches of ?:. - + Using ++ or -- on a variable of enum type. - + Using the same name as both a struct, union or enum tag and a - typedef, unless the typedef refers to the tagged type itself. - + Using a struct, union, or enum which is defined within another - struct or union. - + A struct field defined using a typedef if there is a field in - the struct, or an enclosing struct, whose name is the typedef - name. - + Duplicate definitions at file scope. - + Uninitialized const variables. - + A global variable with an anonymous struct, union, or enum - type. - + Using a string constant to initialize a char array whose size - is the length of the string. - * The new -Wjump-misses-init option warns about cases where a goto or - switch skips the initialization of a variable. This sort of branch - is an error in C++ but not in C. This warning is enabled by - -Wc++-compat. - * GCC now ensures that a C99-conforming <stdint.h> is present on most - targets, and uses information about the types in this header to - implement the Fortran bindings to those types. GCC does not ensure - the presence of such a header, and does not implement the Fortran - bindings, on the following targets: NetBSD, VxWorks, VMS, - SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF. - * GCC now implements C90- and C99-conforming rules for constant - expressions. This may cause warnings or errors for some code using - expressions that can be folded to a constant but are not constant - expressions as defined by ISO C. - * All known target-independent C90 and C90 Amendment 1 conformance - bugs, and all known target-independent C99 conformance bugs not - related to floating point or extended identifiers, have been fixed. - * The C decimal floating point support now includes support for the - FLOAT_CONST_DECIMAL64 pragma. - * The named address space feature from ISO/IEC TR 18037 is now - supported. This is currently only implemented for the SPU - processor. - - C++ - - * Improved [12]experimental support for the upcoming C++0x ISO C++ - standard, including support for raw strings, lambda expressions and - explicit type conversion operators. - * When printing the name of a class template specialization, G++ will - now omit any template arguments which come from default template - arguments. This behavior (and the pretty-printing of function - template specializations as template signature and arguments) can - be disabled with the -fno-pretty-templates option. - * Access control is now applied to typedef names used in a template, - which may cause G++ to reject some ill-formed code that was - accepted by earlier releases. The -fno-access-control option can be - used as a temporary workaround until the code is corrected. - * Compilation time for code that uses templates should now scale - linearly with the number of instantiations rather than - quadratically, as template instantiations are now looked up using - hash tables. - * Declarations of functions that look like builtin declarations of - library functions are only considered to be redeclarations if they - are declared with extern "C". This may cause problems with code - that omits extern "C" on hand-written declarations of C library - functions such as abort or memcpy. Such code is ill-formed, but was - accepted by earlier releases. - * Diagnostics that used to complain about passing non-POD types to - ... or jumping past the declaration of a non-POD variable now check - for triviality rather than PODness, as per C++0x. - * In C++0x mode local and anonymous classes are now allowed as - template arguments, and in declarations of variables and functions - with linkage, so long as any such declaration that is used is also - defined ([13]DR 757). - * Labels may now have attributes, as has been permitted for a while - in C. This is only permitted when the label definition and the - attribute specifier is followed by a semicolon--i.e., the label - applies to an empty statement. The only useful attribute for a - label is unused. - * G++ now implements [14]DR 176. Previously G++ did not support using - the injected-class-name of a template base class as a type name, - and lookup of the name found the declaration of the template in the - enclosing scope. Now lookup of the name finds the - injected-class-name, which can be used either as a type or as a - template, depending on whether or not the name is followed by a - template argument list. As a result of this change, some code that - was previously accepted may be ill-formed because - 1. The injected-class-name is not accessible because it's from a - private base, or - 2. The injected-class-name cannot be used as an argument for a - template template parameter. - In either of these cases, the code can be fixed by adding a - nested-name-specifier to explicitly name the template. The first - can be worked around with -fno-access-control; the second is only - rejected with -pedantic. - * A new standard mangling for SIMD vector types has been added, to - avoid name clashes on systems with vectors of varying length. By - default the compiler still uses the old mangling, but emits aliases - with the new mangling on targets that support strong aliases. Users - can switch over entirely to the new mangling with -fabi-version=4 - or -fabi-version=0. -Wabi will now warn about code that uses the - old mangling. - * The command-line option -ftemplate-depth-N is now written as - -ftemplate-depth=N and the old form is deprecated. - * Conversions between NULL and non-pointer types are now warned by - default. The new option -Wno-conversion-null disables these - warnings. Previously these warnings were only available when using - -Wconversion explicitly. - - Runtime Library (libstdc++) - - * [15]Improved experimental support for the upcoming ISO C++ - standard, C++0x, including: - + Support for <future>, <functional>, and <random>. - + Existing facilities now exploit explicit operators and the - newly implemented core C++0x features. - * An experimental [16]profile mode has been added. This is an - implementation of many C++ standard library constructs with an - additional analysis layer that gives performance improvement advice - based on recognition of suboptimal usage patterns. For example, -#include <vector> -int main() -{ - std::vector<int> v; - for (int k = 0; k < 1024; ++k) - v.insert(v.begin(), k); -} - - When instrumented via the profile mode, can return suggestions - about the initial size and choice of the container used as follows: -vector-to-list: improvement = 5: call stack = 0x804842c ... - : advice = change std::vector to std::list -vector-size: improvement = 3: call stack = 0x804842c ... - : advice = change initial container size from 0 to 1024 - - These constructs can be substituted for the normal libstdc++ - constructs on a piecemeal basis, or all existing components can be - transformed via the -D_GLIBCXX_PROFILE macro. - * [17]Support for decimal floating-point arithmetic (aka ISO C++ TR - 24733) has been added. This support is in header file - <decimal/decimal>, uses namespace std::decimal, and includes - classes decimal32, decimal64, and decimal128. - * Sources have been audited for application of function attributes - nothrow, const, pure, and noreturn. - * Python pretty-printers have been added for many standard library - components that simplify the internal representation and present a - more intuitive view of components when used with - appropriately-advanced versions of GDB. For more information, - please consult the more [18]detailed description. - * The default behavior for comparing typeinfo names has changed, so - in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero. - * The new -static-libstdc++ option directs g++ to link the C++ - library statically, even if the default would normally be to link - it dynamically. - - Fortran - - * The COMMON default padding has been changed - instead of adding the - padding before a variable it is now added afterwards, which - increases the compatibility with other vendors and helps to obtain - the correct output in some cases. Cf. also the -falign-commons - option ([19]added in 4.4). - * The -finit-real= option now also supports the value snan for - signalling not-a-number; to be effective, one additionally needs to - enable trapping (e.g. via -ffpe-trap=). Note: Compile-time - optimizations can turn a signalling NaN into a quiet one. - * The new option -fcheck= has been added with the options bounds, - array-temps, do, pointer, and recursive. The bounds and array-temps - options are equivalent to -fbounds-check and - -fcheck-array-temporaries. The do option checks for invalid - modification of loop iteration variables, and the recursive option - tests for recursive calls to subroutines/functions which are not - marked as recursive. With pointer pointer association checks in - calls are performed; however, neither undefined pointers nor - pointers in expressions are handled. Using -fcheck=all enables all - these run-time checks. - * The run-time checking -fcheck=bounds now warns about invalid string - lengths of character dummy arguments. Additionally, more - compile-time checks have been added. - * The new option [20]-fno-protect-parens has been added; if set, the - compiler may reorder REAL and COMPLEX expressions without regard to - parentheses. - * GNU Fortran no longer links against libgfortranbegin. As before, - MAIN__ (assembler symbol name) is the actual Fortran main program, - which is invoked by the main function. However, main is now - generated and put in the same object file as MAIN__. For the time - being, libgfortranbegin still exists for backward compatibility. - For details see the new [21]Mixed-Language Programming chapter in - the manual. - * The I/O library was restructured for performance and cleaner code. - * Array assignments and WHERE are now run in parallel when OpenMP's - WORKSHARE is used. - * The experimental option -fwhole-file was added. The option allows - whole-file checking of procedure arguments and allows for better - optimizations. It can also be used with -fwhole-program, which is - now also supported in gfortran. - * More Fortran 2003 and Fortran 2008 mathematical functions can now - be used as initialization expressions. - * Some extended attributes such as STDCALL are now supported via the - [22]GCC$ compiler directive. - * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN - intrinsic behaves now as if zero were always positive. - * For legacy compatibiliy: On Cygwin and MinGW, the special files - CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now - supported. - * Fortran 2003 support has been extended: - + Procedure-pointer function results and procedure-pointer - components (including PASS), - + allocatable scalars (experimental), - + DEFERRED type-bound procedures, - + the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements - have been implemented. - + The ALLOCATE statement supports type-specs and the SOURCE= - argument. - + OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC - type-bound procedure (i.e. as type-bound operators). - + Rounding (ROUND=, RZ, ...) for output is now supported. - + The INT_FAST{8,16,32,64,128}_T kind type parameters of the - intrinsic module ISO_C_BINDING are now supported, except for - the targets listed above as ones where GCC does not have - <stdint.h> type information. - + Extensible derived types with type-bound procedure or - procedure pointer with PASS attribute now have to use CLASS in - line with the Fortran 2003 standard; the workaround to use - TYPE is no longer supported. - + [23]Experimental, incomplete support for polymorphism, - including CLASS, SELECT TYPE and dynamic dispatch of - type-bound procedure calls. Some features do not work yet such - as unlimited polymorphism (CLASS(*)). - * Fortran 2008 support has been extended: - + The OPEN statement now supports the NEWUNIT= option, which - returns a unique file unit, thus preventing inadvertent use of - the same unit in different parts of the program. - + Support for unlimited format items has been added. - + The INT{8,16,32} and REAL{32,64,128} kind type parameters of - the intrinsic module ISO_FORTRAN_ENV are now supported. - + Using complex arguments with TAN, SINH, COSH, TANH, ASIN, - ACOS, and ATAN is now possible; the functions ASINH, ACOSH, - and ATANH have been added (for real and complex arguments) and - ATAN(Y,X) is now an alias for ATAN2(Y,X). - + The BLOCK construct has been implemented. - -New Targets and Target Specific Improvements - - AIX - - * Full cross-toolchain support now available with GNU Binutils - - ARM - - * GCC now supports the Cortex-M0 and Cortex-A5 processors. - * GCC now supports the ARM v7E-M architecture. - * GCC now supports VFPv4-based FPUs and FPUs with - single-precision-only VFP. - * GCC has many improvements to optimization for other ARM processors, - including scheduling support for the integer pipeline on Cortex-A9. - * GCC now supports the IEEE 754-2008 half-precision floating-point - type, and a variant ARM-specific half-precision type. This type is - specified using __fp16, with the layout determined by - -mfp16-format. With appropriate -mfpu options, the Cortex-A9 and - VFPv4 half-precision instructions will be used. - * GCC now supports the variant of AAPCS that uses VFP registers for - parameter passing and return values. - - AVR - - * The -mno-tablejump option has been removed because it has the same - effect as the -fno-jump-tables option. - * Added support for these new AVR devices: - + ATmega8U2 - + ATmega16U2 - + ATmega32U2 - - IA-32/x86-64 - - * GCC now will set the default for -march= based on the configure - target. - * GCC now supports handling floating-point excess precision arising - from use of the x87 floating-point unit in a way that conforms to - ISO C99. This is enabled with -fexcess-precision=standard and with - standards conformance options such as -std=c99, and may be disabled - using -fexcess-precision=fast. - * Support for the Intel Atom processor is now available through the - -march=atom and -mtune=atom options. - * A new -mcrc32 option is now available to enable crc32 intrinsics. - * A new -mmovbe option is now available to enable GCC to use the - movbe instruction to implement __builtin_bswap32 and - __builtin_bswap64. - * SSE math now can be enabled by default at configure time with the - new --with-fpmath=sse option. - * There is a new intrinsic header file, <x86intrin.h>. It should be - included before using any IA-32/x86-64 intrinsics. - * Support for the XOP, FMA4, and LWP instruction sets for the AMD - Orochi processors are now available with the -mxop, -mfma4, and - -mlwp options. - * The -mabm option enables GCC to use the popcnt and lzcnt - instructions on AMD processors. - * The -mpopcnt option enables GCC to use the popcnt instructions on - both AMD and Intel processors. - - M68K/ColdFire - - * GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x - and 5441x devices. - * GCC now supports thread-local storage (TLS) on M68K and ColdFire - processors. - - MeP - - Support has been added for the Toshiba Media embedded Processor (MeP, - or mep-elf) embedded target. - - MIPS - - * GCC now supports MIPS 1004K processors. - * GCC can now be configured with options --with-arch-32, - --with-arch-64, --with-tune-32 and --with-tune-64 to control the - default optimization separately for 32-bit and 64-bit modes. - * MIPS targets now support an alternative _mcount interface, in which - register $12 points to the function's save slot for register $31. - This interface is selected by the -mcount-ra-address option; see - the documentation for more details. - * GNU/Linux targets can now generate read-only .eh_frame sections. - This optimization requires GNU binutils 2.20 or above, and is only - available if GCC is configured with a suitable version of binutils. - * GNU/Linux targets can now attach special relocations to indirect - calls, so that the linker can turn them into direct jumps or - branches. This optimization requires GNU binutils 2.20 or later, - and is automatically selected if GCC is configured with an - appropriate version of binutils. It can be explicitly enabled or - disabled using the -mrelax-pic-calls command-line option. - * GCC now generates more heavily-optimized atomic operations on - Octeon processors. - * MIPS targets now support the -fstack-protector option. - * GCC now supports an -msynci option, which specifies that synci is - enough to flush the instruction cache, without help from the - operating system. GCC uses this information to optimize - automatically-generated cache flush operations, such as those used - for nested functions in C. There is also a --with-synci - configure-time option, which makes -msynci the default. - * GCC supports four new function attributes for interrupt handlers: - interrupt, use_shadow_register_set, keep_interrupts_masked and - use_debug_exception_return. See the documentation for more details - about these attributes. - - RS/6000 (POWER/PowerPC) - - * GCC now supports the Power ISA 2.06, which includes the VSX - instructions that add vector 64-bit floating point support, new - population count instructions, and conversions between floating - point and unsigned types. - * Support for the power7 processor is now available through the - -mcpu=power7 and -mtune=power7. - * GCC will now vectorize loops that contain simple math functions - like copysign when generating code for altivec or VSX targets. - * Support for the A2 processor is now available through the -mcpu=a2 - and -mtune=a2 options. - * Support for the 476 processor is now available through the - -mcpu={476,476fp} and -mtune={476,476fp} options. - * Support for the e500mc64 processor is now available through the - -mcpu=e500mc64 and -mtune=e500mc64 options. - * GCC can now be configured with options --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. - * Starting with GCC 4.5.4, vectors of type vector long long or vector - long are passed and returned in the same method as other vectors - with the VSX instruction set. Previously the GCC compiler did not - adhere to the ABI for 128-bit vectors with 64-bit integer base - types (PR 48857). This is also fixed in the GCC 4.6.1 release. - - RX - - Support has been added for the Renesas RX Processor (rx-elf) target. - -Operating Systems - - Windows (Cygwin and MinGW) - - * GCC now installs all the major language runtime libraries as DLLs - when configured with the --enable-shared option. - * GCC now makes use of the new support for aligned common variables - in versions of binutils >= 2.20 to fix bugs in the support for SSE - data types. - * Improvements to the libffi support library increase the reliability - of code generated by GCJ on all Windows platforms. Libgcj is - enabled by default for the first time. - * Libtool improvements simplify installation by placing the generated - DLLs in the correct binaries directory. - * Numerous other minor bugfixes and improvements, and substantial - enhancements to the Fortran language support library. - - > - -Other significant improvements - - Plugins - - * It is now possible to extend the compiler without having to modify - its source code. A new option -fplugin=file.so tells GCC to load - the shared object file.so and execute it as part of the compiler. - The internal documentation describes the details on how plugins can - interact with the compiler. - - Installation changes - - * The move to newer autotools changed default installation - directories and switches to control them: The --with-datarootdir, - --with-docdir, --with-pdfdir, and --with-htmldir switches are not - used any more. Instead, you can now use --datarootdir, --docdir, - --htmldir, and --pdfdir. The default installation directories have - changed as follows according to the GNU Coding Standards: - - datarootdir read-only architecture-independent data root [PREFIX/share] - localedir locale-specific message catalogs [DATAROOTDIR/locale] - docdir documentation root [DATAROOTDIR/doc/PACKAGE] - htmldir html documentation [DOCDIR] - dvidir dvi documentation [DOCDIR] - pdfdir pdf documentation [DOCDIR] - psdir ps documentation [DOCDIR] - The following variables have new default values: - - datadir read-only architecture-independent data [DATAROOTDIR] - infodir info documentation [DATAROOTDIR/info] - mandir man documentation [DATAROOTDIR/man] - -GCC 4.5.1 - - This is the [24]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.5.1 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - All languages - - * GCC's new link-time optimizer ([25]-flto) now also works on a few - non-ELF targets: - + Cygwin (*-cygwin*) - + MinGW (*-mingw*) - + Darwin on x86-64 (x86_64-apple-darwin*) - LTO is not enabled by default for these targets. To enable LTO, you - should configure with the --enable-lto option. - -GCC 4.5.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.5.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.5.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.5.3 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - On the PowerPC compiler, the Altivec builtin functions vec_ld and - vec_st have been modified to generate the Altivec memory instructions - LVX and STVX, even if the -mvsx option is used. In the initial GCC 4.5 - release, these builtin functions were changed to generate VSX memory - reference instructions instead of Altivec memory instructions, but - there are differences between the two instructions. If the VSX - instruction set is available, you can now use the new builtin functions - vec_vsx_ld and vec_vsx_st which always generates the VSX memory - instructions. - -GCC 4.5.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.5.4 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - - For questions related to the use of GCC, please consult these web - pages and the [29]GCC manuals. If that fails, the - [30]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [31]gcc@gcc.gnu.org. All of [32]our lists have public - archives. - - Copyright (C) [33]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [34]maintained by the GCC team. Last modified - 2012-11-02[35]. - -References - - 1. http://www.multiprecision.org/ - 2. http://gcc.gnu.org/install/prerequisites.html - 3. http://gcc.gnu.org/ml/gcc/2010-01/msg00510.html - 4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted - 5. http://gcc.gnu.org/gcc-4.5/changes.html#x86 - 6. http://www.multiprecision.org/ - 7. http://gcc.gnu.org/PR30789 - 8. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801 - 9. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802 - 10. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800 - 11. http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html - 12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html - 13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757 - 14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176 - 15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x - 16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html - 17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733 - 18. http://sourceware.org/gdb/wiki/STLSupport - 19. http://gcc.gnu.org/gcc-4.4/changes.html - 20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html - 21. http://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html - 22. http://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html - 23. http://gcc.gnu.org/wiki/OOP - 24. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1 - 25. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801 - 26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2 - 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3 - 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4 - 29. http://gcc.gnu.org/onlinedocs/ - 30. mailto:gcc-help@gcc.gnu.org - 31. mailto:gcc@gcc.gnu.org - 32. http://gcc.gnu.org/lists.html - 33. http://www.fsf.org/ - 34. http://gcc.gnu.org/about.html - 35. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.4/index.html - - GCC 4.4 Release Series - - March 13, 2012 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 4.4.7. - - This release is a bug-fix release, containing fixes for regressions in - GCC 4.4.6 relative to previous releases of GCC. - -Release History - - GCC 4.4.7 - March 13, 2012 ([2]changes) - - GCC 4.4.6 - April 16, 2011 ([3]changes) - - GCC 4.4.5 - October 1, 2010 ([4]changes) - - GCC 4.4.4 - April 29, 2010 ([5]changes) - - GCC 4.4.3 - January 21, 2010 ([6]changes) - - GCC 4.4.2 - October 15, 2009 ([7]changes) - - GCC 4.4.1 - July 22, 2009 ([8]changes) - - GCC 4.4.0 - April 21, 2009 ([9]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 [10]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 [11]amazing group of volunteers is - what makes GCC successful. - - For additional information about GCC please refer to the [12]GCC - project web site or contact the [13]GCC development mailing list. - - To obtain GCC please use [14]our mirror sites or [15]our SVN server. - - - 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. Comments on these - web pages and the development of GCC are welcome on our developer - list at [18]gcc@gcc.gnu.org. All of [19]our lists have public - archives. - - Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [21]maintained by the GCC team. Last modified - 2012-11-02[22]. - -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/changes.html - 8. http://gcc.gnu.org/gcc-4.4/changes.html - 9. http://gcc.gnu.org/gcc-4.4/changes.html - 10. http://gcc.gnu.org/gcc-4.4/buildstat.html - 11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 12. http://gcc.gnu.org/index.html - 13. mailto:gcc@gcc.gnu.org - 14. http://gcc.gnu.org/mirrors.html - 15. http://gcc.gnu.org/svn.html - 16. http://gcc.gnu.org/onlinedocs/ - 17. mailto:gcc-help@gcc.gnu.org - 18. mailto:gcc@gcc.gnu.org - 19. http://gcc.gnu.org/lists.html - 20. http://www.fsf.org/ - 21. http://gcc.gnu.org/about.html - 22. 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.7. - -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). - -GCC 4.4.5 - - This is the [17]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.4.5 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.6 - - This is the [18]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.4.6 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.7 - - This is the [19]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.4.7 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - - 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. Comments on these - web pages and the development of GCC are welcome on our developer - list at [22]gcc@gcc.gnu.org. All of [23]our lists have public - archives. - - Copyright (C) [24]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [25]maintained by the GCC team. Last modified - 2012-11-02[26]. - -References - - 1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.7 - 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. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5 - 18. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6 - 19. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7 - 20. http://gcc.gnu.org/onlinedocs/ - 21. mailto:gcc-help@gcc.gnu.org - 22. mailto:gcc@gcc.gnu.org - 23. http://gcc.gnu.org/lists.html - 24. http://www.fsf.org/ - 25. http://gcc.gnu.org/about.html - 26. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.3/index.html - - GCC 4.3 Release Series - - Jun 27, 2011 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 4.3.6. - - This release is a bug-fix release, containing fixes for regressions in - GCC 4.3.5 relative to previous releases of GCC. - -Release History - - GCC 4.3.6 - Jun 27, 2011 ([2]changes) - - GCC 4.3.5 - May 22, 2010 ([3]changes) - - GCC 4.3.4 - August 4, 2009 ([4]changes) - - GCC 4.3.3 - January 24, 2009 ([5]changes) - - GCC 4.3.2 - August 27, 2008 ([6]changes) - - GCC 4.3.1 - June 6, 2008 ([7]changes) - - GCC 4.3.0 - March 5, 2008 ([8]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 [9]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 [10]amazing group of volunteers is - what makes GCC successful. - - For additional information about GCC please refer to the [11]GCC - project web site or contact the [12]GCC development mailing list. - - To obtain GCC please use [13]our mirror sites or [14]our SVN server. - - - 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. Comments on these - web pages and the development of GCC are welcome on our developer - list at [17]gcc@gcc.gnu.org. All of [18]our lists have public - archives. - - Copyright (C) [19]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [20]maintained by the GCC team. Last modified - 2012-11-02[21]. - -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/changes.html - 8. http://gcc.gnu.org/gcc-4.3/changes.html - 9. http://gcc.gnu.org/gcc-4.3/buildstat.html - 10. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 11. http://gcc.gnu.org/index.html - 12. mailto:gcc@gcc.gnu.org - 13. http://gcc.gnu.org/mirrors.html - 14. http://gcc.gnu.org/svn.html - 15. http://gcc.gnu.org/onlinedocs/ - 16. mailto:gcc-help@gcc.gnu.org - 17. mailto:gcc@gcc.gnu.org - 18. http://gcc.gnu.org/lists.html - 19. http://www.fsf.org/ - 20. http://gcc.gnu.org/about.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.5. - -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 <tuple> and - <functional>. - * 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 <unordered_set> and - <unordered_map>. - * Formal deprecation of <ext/hash_set> and <ext/hash_map>, which are - now <backward/hash_set> and <backward/hash_map>. This code: - #include <ext/hash_set> - __gnu_cxx::hash_set<int> s; - - Can be transformed (in order of preference) to: - #include <tr1/unordered_set> - std::tr1::unordered_set<int> s; - - or - #include <backward/hash_set> - __gnu_cxx::hash_set<int> 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. - - SPARC - - * Support for the Sun UltraSPARC T2 (Niagara 2) processor has been - added. - - 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). - -GCC 4.3.5 - - This is the [29]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.3.5 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - -GCC 4.3.6 - - This is the [30]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.3.6 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - - For questions related to the use of GCC, please consult these web - pages and the [31]GCC manuals. If that fails, the - [32]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [33]gcc@gcc.gnu.org. All of [34]our lists have public - archives. - - Copyright (C) [35]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [36]maintained by the GCC team. Last modified - 2012-11-02[37]. - -References - - 1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5 - 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. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5 - 30. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6 - 31. http://gcc.gnu.org/onlinedocs/ - 32. mailto:gcc-help@gcc.gnu.org - 33. mailto:gcc@gcc.gnu.org - 34. http://gcc.gnu.org/lists.html - 35. http://www.fsf.org/ - 36. http://gcc.gnu.org/about.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. - - - For questions related to the use of GCC, please consult these web - pages and the [13]GCC manuals. If that fails, the - [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [15]gcc@gcc.gnu.org. All of [16]our lists have public - archives. - - Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [18]maintained by the GCC team. Last modified - 2012-11-02[19]. - -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. http://gcc.gnu.org/onlinedocs/ - 14. mailto:gcc-help@gcc.gnu.org - 15. mailto:gcc@gcc.gnu.org - 16. http://gcc.gnu.org/lists.html - 17. http://www.fsf.org/ - 18. http://gcc.gnu.org/about.html - 19. 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 <template <typename> class C> - void f(C<double>) {} - - template <typename T, typename U = int> - struct S {}; - - template void f(S<double>); - - is no longer accepted by G++. The reason this code is not accepted - is that S is a template with two parameters; therefore, it cannot - be bound to C which has only one parameter. - * The <?, >?, <?=, and >?= operators, deprecated in previous GCC - releases, have been removed. - * The command-line option -fconst-strings, deprecated in previous GCC - releases, has been removed. - * The configure variable enable-__cxa_atexit is now enabled by - default for more targets. Enabling this variable is necessary in - order for static destructors to be executed in the correct order, - but it depends upon the presence of a non-standard C library in the - target library in order to work. The variable is now enabled for - more targets which are known to have suitable C libraries. - * -Wextra will produce warnings for if statements with a semicolon as - the only body, to catch code like: - if (a); - return 1; - return 0; - - To suppress the warning in valid cases, use { } instead. - * The C++ frontend now also produces strict aliasing warnings when - -fstrict-aliasing -Wstrict-aliasing is in effect. - - Runtime Library (libstdc++) - - * Added support for TR1 <random>, <complex>, and C compatibility - headers. In addition, a lock-free version of shared_ptr was - contributed as part of Phillip Jordan's Google Summer of Code - project on lock-free containers. ([3]Implementation status of TR1) - * In association with the Summer of Code work on lock-free - containers, the interface for atomic builtins was adjusted, - creating simpler alternatives for non-threaded code paths. Also, - usage was consolidated and all elements were moved from namespace - std to namespace__gnu_cxx. Affected interfaces are the functions - __exchange_and_add, __atomic_add, and the objects __mutex, - __recursive_mutex, and __scoped_lock. - * Support for versioning weak symbol names via namespace association - was added. However, as this changes the names of exported symbols, - this is turned off by default in the current ABI. Intrepid users - can enable this feature by using - --enable-symvers=gnu-versioned-namespace during configuration. - * Revised, simplified, and expanded policy-based associative - containers, including data types for tree and trie forms - (basic_tree, tree, trie), lists (list_update), and both - collision-chaining and probing hash-based containers - (basic_hash_table, cc_hash_table, gp_hash_table). More details per - the [4]documentation. - * The implementation of the debug mode was modified, whereby the - debug namespaces were nested inside of namespace std and namespace - __gnu_cxx in order to resolve some long standing corner cases - involving name lookup. Debug functionality from the policy-based - data structures was consolidated and enabled with the single macro, - _GLIBCXX_DEBUG. See PR 26142 for more information. - * Added extensions for type traits: __conditional_type, - __numeric_traits, __add_unsigned, __removed_unsigned, __enable_if. - * Added a typelist implementation for compile-time meta-programming. - Elements for typelist construction and operation can be found - within namespace __gnu_cxx::typelist. - * Added a new allocator, __gnu_cxx::throw_allocator, for testing - exception-safety. - * Enabled library-wide visibility control, allowing -fvisibility to - be used. - * Consolidated all nested namespaces and the conversion of - __gnu_internal implementation-private details to anonymous - namespaces whenever possible. - * Implemented LWG resolutions DR 431 and DR 538. - - Fortran - - * Support for allocatable components has been added (TR 15581 and - Fortran 2003). - * Support for the Fortran 2003 streaming IO extension has been added. - * The GNU Fortran compiler now uses 4-byte record markers by default - for unformatted files to be compatible with g77 and most other - compilers. The implementation allows for records greater than 2 GB - and is compatible with several other compilers. Older versions of - gfortran used 8-byte record markers by default (on most systems). - In order to change the length of the record markers, e.g. to read - unformatted files created by older gfortran versions, the - [5]-frecord-marker=8 option can be used. - - Java (GCJ) - - * A new command-line option -static-libgcj has been added for targets - that use a linker compatible with GNU Binutils. As its name - implies, this causes libgcj to be linked statically. In some cases - this causes the resulting executable to start faster and use less - memory than if the shared version of libgcj were used. However - caution should be used as it can also cause essential parts of the - library to be omitted. Some of these issues are discussed in: - [6]http://gcc.gnu.org/wiki/Statically_linking_libgcj - * fastjar is no longer bundled with GCC. To build libgcj, you will - need either InfoZIP (both zip and unzip) or an external jar - program. In the former case, the GCC build will install a jar shell - script that is based on InfoZIP and provides the same functionality - as fastjar. - -New Targets and Target Specific Improvements - - IA-32/x86-64 - - * -mtune=generic can now be used to generate code running well on - common x86 chips. This includes AMD Athlon, AMD Opteron, Intel - Pentium-M, Intel Pentium 4 and Intel Core 2. - * -mtune=native and -march=native will produce code optimized for the - host architecture as detected using the cpuid instruction. - * Added a new command-line option -fstackrealign and and - __attribute__ ((force_align_arg_pointer)) to realign the stack at - runtime. This allows functions compiled with a vector-aligned stack - to be invoked from legacy objects that keep only word-alignment. - - SPARC - - * The default CPU setting has been changed from V7 to V9 in 32-bit - mode on Solaris 7 and above. This is already the case in 64-bit - mode. It can be overridden by specifying --with-cpu at configure - time. - * Back-end support of built-in functions for atomic memory access has - been implemented. - * Support for the Sun UltraSPARC T1 (Niagara) processor has been - added. - - M32C - - * Various bug fixes have made some functions (notably, functions - returning structures) incompatible with previous releases. - Recompiling all libraries is recommended. Note that code quality - has considerably improved since 4.1, making a recompile even more - beneficial. - - MIPS - - * Added support for the Broadcom SB-1A core. - - IA-64 - - * Added support for IA-64 data and control speculation. By default - speculation is enabled only during second scheduler pass. A number - of machine flags was introduced to control the usage of speculation - for both scheduler passes. - - HPPA - - * Added Java language support (libffi and libjava) for 32-bit HP-UX - 11 target. - -Obsolete Systems - -Documentation improvements - - PDF Documentation - - * A make pdf target has been added to the top-level makefile, - enabling automated production of PDF documentation files. - (Front-ends external to GCC should modify their Make-lang.in file - to add a lang.pdf: target.) - -Other significant improvements - - Build system improvements - - * All the components of the compiler are now bootstrapped by default. - This improves the resilience to bugs in the system compiler or - binary compatibility problems, as well as providing better testing - of GCC 4.2 itself. In addition, if you build the compiler from a - combined tree, the assembler, linker, etc. will also be - bootstrapped (i.e. built with themselves). - You can disable this behavior, and go back to the pre-GCC 4.2 set - up, by configuring GCC with --disable-bootstrap. - * The rules that configure follows to find target tools resemble more - closely the locations that the built compiler will search. In - addition, you can use the new configure option --with-target-tools - to specify where to find the target tools used during the build, - without affecting what the built compiler will use. - This can be especially useful when building packages of GCC. For - example, you may want to build GCC with GNU as or ld, even if the - resulting compiler to work with the native assembler and linker. To - do so, you can use --with-target-tools to point to the native - tools. - - Incompatible changes to the build system - - * Front-ends external to GCC should modify their Make-lang.in file to - replace double-colon rules (e.g. dvi::) with normal rules (like - lang.dvi:). Front-end makefile hooks do not use double-colon rules - anymore. - * Up to GCC 4.1, a popular way to specify the target tools used - during the build was to create directories named gas, binutils, - etc. in the build tree, and create links to the tools from there. - This does not work any more when the compiler is bootstrapped. The - new configure option --with-target-tools provides a better way to - achieve the same effect, and works for all native and cross - settings. - - - For questions related to the use of GCC, please consult these web - pages and the [7]GCC manuals. If that fails, the - [8]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [9]gcc@gcc.gnu.org. All of [10]our lists have public - archives. - - Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [12]maintained by the GCC team. Last modified - 2012-11-02[13]. - -References - - 1. http://gcc.gnu.org/projects/gomp/ - 2. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html - 3. http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.tr1 - 4. http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html - 5. http://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html - 6. http://gcc.gnu.org/wiki/Statically_linking_libgcj - 7. http://gcc.gnu.org/onlinedocs/ - 8. mailto:gcc-help@gcc.gnu.org - 9. mailto:gcc@gcc.gnu.org - 10. http://gcc.gnu.org/lists.html - 11. http://www.fsf.org/ - 12. http://gcc.gnu.org/about.html - 13. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.1/index.html - - GCC 4.1 Release Series - - February 13, 2007 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 4.1.2. - - This release is a bug-fix release, containing fixes for regressions in - GCC 4.1.1 relative to previous releases of GCC. - -Release History - - GCC 4.1.2 - February 13, 2007 ([2]changes) - - GCC 4.1.1 - May 24, 2006 ([3]changes) - - GCC 4.1.0 - February 28, 2006 ([4]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 [5]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 [6]amazing group of volunteers is - what makes GCC successful. - - For additional information about GCC please refer to the [7]GCC project - web site or contact the [8]GCC development mailing list. - - To obtain GCC please use [9]our mirror sites or [10]our SVN server. - - - For questions related to the use of GCC, please consult these web - pages and the [11]GCC manuals. If that fails, the - [12]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [13]gcc@gcc.gnu.org. All of [14]our lists have public - archives. - - Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [16]maintained by the GCC team. Last modified - 2012-11-02[17]. - -References - - 1. http://www.gnu.org/ - 2. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2 - 3. http://gcc.gnu.org/gcc-4.1/changes.html - 4. http://gcc.gnu.org/gcc-4.1/changes.html - 5. http://gcc.gnu.org/gcc-4.1/buildstat.html - 6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 7. http://gcc.gnu.org/index.html - 8. mailto:gcc@gcc.gnu.org - 9. http://gcc.gnu.org/mirrors.html - 10. http://gcc.gnu.org/svn.html - 11. http://gcc.gnu.org/onlinedocs/ - 12. mailto:gcc-help@gcc.gnu.org - 13. mailto:gcc@gcc.gnu.org - 14. http://gcc.gnu.org/lists.html - 15. http://www.fsf.org/ - 16. http://gcc.gnu.org/about.html - 17. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.1/changes.html - - GCC 4.1 Release Series - Changes, New Features, and Fixes - - The latest release in the 4.1 release series is [1]GCC 4.1.2. - -Caveats - -General Optimizer Improvements - - * GCC now has infrastructure for inter-procedural optimizations and - the following inter-procedural optimizations are implemented: - + Profile guided inlining. When doing profile feedback guided - optimization, GCC can now use the profile to make better - informed decisions on whether inlining of a function is - profitable or not. This means that GCC will no longer inline - functions at call sites that are not executed very often, and - that functions at hot call sites are more likely to be - inlined. - A new parameter min-inline-recursive-probability is also now - available to throttle recursive inlining of functions with - small average recursive depths. - + Discovery of pure and const functions, a form of side-effects - analysis. While older GCC releases could also discover such - special functions, the new IPA-based pass runs earlier so that - the results are available to more optimizers. The pass is also - simply more powerful than the old one. - + Analysis of references to static variables and type escape - analysis, also forms of side-effects analysis. The results of - these passes allow the compiler to be less conservative about - call-clobbered variables and references. This results in more - redundant loads being eliminated and in making static - variables candidates for register promotion. - + Improvement of RTL-based alias analysis. The results of type - escape analysis are fed to the RTL type-based alias analyzer, - allowing it to disambiguate more memory references. - + Interprocedural constant propagation and function versioning. - This pass looks for functions that are always called with the - same constant value for one or more of the function arguments, - and propagates those constants into those functions. - + GCC will now eliminate static variables whose usage was - optimized out. - + -fwhole-program --combine can now be used to make all - functions in program static allowing whole program - optimization. As an exception, the main function and all - functions marked with the new externally_visible attribute are - kept global so that programs can link with runtime libraries. - * GCC can now do a form of partial dead code elimination (PDCE) that - allows code motion of expressions to the paths where the result of - the expression is actually needed. This is not always a win, so the - pass has been limited to only consider profitable cases. Here is an - example: - int foo (int *, int *); - int - bar (int d) - { - int a, b, c; - b = d + 1; - c = d + 2; - a = b + c; - if (d) - { - foo (&b, &c); - a = b + c; - } - printf ("%d\n", a); - } - - The a = b + c can be sunk to right before the printf. Normal code - sinking will not do this, it will sink the first one above into the - else-branch of the conditional jump, which still gives you two - copies of the code. - * GCC now has a value range propagation pass. This allows the - compiler to eliminate bounds checks and branches. The results of - the pass can also be used to accurately compute branch - probabilities. - * The pass to convert PHI nodes to straight-line code (a form of - if-conversion for GIMPLE) has been improved significantly. The two - most significant improvements are an improved algorithm to - determine the order in which the PHI nodes are considered, and an - improvement that allow the pass to consider if-conversions of basic - blocks with more than two predecessors. - * Alias analysis improvements. GCC can now differentiate between - different fields of structures in Tree-SSA's virtual operands form. - This lets stores/loads from non-overlapping structure fields not - conflict. A new algorithm to compute points-to sets was contributed - that can allows GCC to see now that p->a and p->b, where p is a - pointer to a structure, can never point to the same field. - * Various enhancements to auto-vectorization: - + Incrementally preserve SSA form when vectorizing. - + Incrementally preserve loop-closed form when vectorizing. - + Improvements to peeling for alignment: generate better code - when the misalignment of an access is known at compile time, - or when different accesses are known to have the same - misalignment, even if the misalignment amount itself is - unknown. - + Consider dependence distance in the vectorizer. - + Externalize generic parts of data reference analysis to make - this analysis available to other passes. - + Vectorization of conditional code. - + Reduction support. - * GCC can now partition functions in sections of hot and cold code. - This can significantly improve performance due to better - instruction cache locality. This feature works best together with - profile feedback driven optimization. - * A new pass to avoid saving of unneeded arguments to the stack in - vararg functions if the compiler can prove that they will not be - needed. - * Transition of basic block profiling to tree level implementation - has been completed. The new implementation should be considerably - more reliable (hopefully avoiding profile mismatch errors when - using -fprofile-use or -fbranch-probabilities) and can be used to - drive higher level optimizations, such as inlining. - The -ftree-based-profiling command-line option was removed and - -fprofile-use now implies disabling old RTL level loop optimizer - (-fno-loop-optimize). Speculative prefetching optimization - (originally enabled by -fspeculative-prefetching) was removed. - -New Languages and Language specific improvements - - C and Objective-C - - * The old Bison-based C and Objective-C parser has been replaced by a - new, faster hand-written recursive-descent parser. - - Ada - - * The build infrastructure for the Ada runtime library and tools has - been changed to be better integrated with the rest of the build - infrastructure of GCC. This should make doing cross builds of Ada a - bit easier. - - C++ - - * ARM-style name-injection of friend declarations is no longer the - default. For example: - struct S { - friend void f(); - }; - - void g() { f(); } - will not be accepted; instead a declaration of f will need to be - present outside of the scope of S. The new -ffriend-injection - option will enable the old behavior. - * The (undocumented) extension which permitted templates with default - arguments to be bound to template template parameters with fewer - parameters has been deprecated, and will be removed in the next - major release of G++. For example: - template <template <typename> class C> - void f(C<double>) {} - - template <typename T, typename U = int> - struct S {}; - - template void f(S<double>); - - makes use of the deprecated extension. The reason this code is not - valid ISO C++ is that S is a template with two parameters; - therefore, it cannot be bound to C which has only one parameter. - - Runtime Library (libstdc++) - - * Optimization work: - + A new implementation of std::search_n is provided, better - performing in case of random access iterators. - + Added further efficient specializations of istream functions, - i.e., character array and string extractors. - + Other smaller improvements throughout. - * Policy-based associative containers, designed for high-performance, - flexibility and semantic safety are delivered in ext/pb_assoc. - * A versatile string class, __gnu_cxx::__versa_string, providing - facilities conforming to the standard requirements for - basic_string, is delivered in <ext/vstring.h>. In particular: - + Two base classes are provided: the default one avoids - reference counting and is optimized for short strings; the - alternate one, still uses it while improving in a few low - level areas (e.g., alignment). See vstring_fwd.h for some - useful typedefs. - + Various algorithms have been rewritten (e.g., replace), the - code streamlined and simple optimizations added. - + Option 3 of DR 431 is implemented for both available bases, - thus improving the support for stateful allocators. - * As usual, many bugs have been fixed (e.g., libstdc++/13583, - libstdc++/23953) and LWG resolutions put into effect for the first - time (e.g., DR 280, DR 464, N1780 recommendations for DR 233, TR1 - Issue 6.19). The implementation status of TR1 is now tracked in the - docs in tr1.html. - - Objective-C++ - - * A new language front end for Objective-C++ has been added. This - language allows users to mix the object oriented features of - Objective-C with those of C++. - - Java (GCJ) - - * Core library (libgcj) updates based on GNU Classpath 0.15 - 0.19 - features (plus some 0.20 bug-fixes) - + Networking - o The java.net.HttpURLConnection implementation no longer - buffers the entire response body in memory. This means - that response bodies larger than available memory can now - be handled. - + (N)IO - o NIO FileChannel.map implementation, fast bulk put - implementation for DirectByteBuffer (speeds up this - method 10x). - o FileChannel.lock() and FileChannel.force() implemented. - + XML - o gnu.xml fix for nodes created outside a namespace - context. - o Add support for output indenting and - cdata-section-elements output instruction in - xml.transform. - o xml.xpath corrections for cases where elements/attributes - might have been created in non-namespace-aware mode. - Corrections to handling of XSL variables and minor - conformance updates. - + AWT - o GNU JAWT implementation, the AWT Native Interface, which - allows direct access to native screen resources from - within a Canvas's paint method. GNU Classpath Examples - comes with a Demo, see libjava/classpath/examples/README. - o awt.datatransfer updated to 1.5 with support for - FlavorEvents. The gtk+ awt peers now allow copy/paste of - text, images, URIs/files and serialized objects with - other applications and tracking clipboard change events - with gtk+ 2.6 (for gtk+ 2.4 only text and serialized - objects are supported). A GNU Classpath Examples - datatransfer Demo was added to show the new - functionality. - o Split gtk+ awt peers event handling in two threads and - improve gdk lock handling (solves several awt lock ups). - o Speed up awt Image loading. - o Better gtk+ scrollbar peer implementation when using gtk+ - >= 2.6. - o Handle image loading errors correctly for gdkpixbuf and - MediaTracker. - o Better handle GDK lock. Properly prefix gtkpeer native - functions (cp_gtk). - o GdkGraphics2D has been updated to use Cairo 0.5.x or - higher. - o BufferedImage and GtkImage rewrites. All image drawing - operations should now work correctly (flipping requires - gtk+ >= 2.6) - o Future Graphics2D, image and text work is documented at: - [2]http://developer.classpath.org/mediation/ClasspathGrap - hicsImagesText - o When gtk+ 2.6 or higher is installed the default log - handler will produce stack traces whenever a WARNING, - CRITICAL or ERROR message is produced. - + Free Swing - o The RepaintManager has been reworked for more efficient - painting, especially for large GUIs. - o The layout manager OverlayLayout has been implemented, - the BoxLayout has been rewritten to make use of the - SizeRequirements utility class and caching for more - efficient layout. - o Improved accessibility support. - o Significant progress has been made in the implementation - of the javax.swing.plaf.metal package, with most UI - delegates in a working state now. Please test this with - your own applications and provide feedback that will help - us to improve this package. - o The GUI demo (gnu.classpath.examples.swing.Demo) has been - extended to highlight various features in our Free Swing - implementation. And it includes a look and feel switcher - for Metal (default), Ocean and GNU themes. - o The javax.swing.plaf.multi package is now implemented. - o Editing and several key actions for JTree and JTable were - implemented. - o Lots of icons and look and feel improvements for Free - Swing basic and metal themes were added. Try running the - GNU Classpath Swing Demo in examples - (gnu.classpath.examples.swing.Demo) with: - -Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFee - l or - -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFee - l - o Start of styled text capabilites for java.swing.text. - o DefaultMutableTreeNode pre-order, post-order, depth-first - and breadth-first traversal enumerations implemented. - o JInternalFrame colors and titlebar draw properly. - o JTree is working up to par (icons, selection and keyboard - traversal). - o JMenus were made more compatible in visual and - programmatic behavior. - o JTable changeSelection and multiple selections - implemented. - o JButton and JToggleButton change states work properly - now. - o JFileChooser fixes. - o revalidate() and repaint() fixes which make Free Swing - much more responsive. - o MetalIconFactory implemented. - o Free Swing Top-Level Compatibility. JFrame, JDialog, - JApplet, JInternalFrame, and JWindow are now 1.5 - compatible in the sense that you can call add() and - setLayout() directly on them, which will have the same - effect as calling getContentPane().add() and - getContentPane().setLayout(). - o The JTree interface has been completed. JTrees now - recognizes mouse clicks and selections work. - o BoxLayout works properly now. - o Fixed GrayFilter to actually work. - o Metal SplitPane implemented. - o Lots of Free Swing text and editor stuff work now. - + Free RMI and Corba - o Andrew Watson, Vice President and Technical Director of - the Object Management Group, has officially assigned us - 20 bit Vendor Minor Code Id: 0x47430 ("GC") that will - mark remote classpath-specific system exceptions. - Obtaining the VMCID means that GNU Classpath now is a - recogniseable type of node in a highly interoperable - CORBA world. - o GNU Classpath now includes the first working draft to - support the RMI over IIOP protocol. The current - implementation is capable of remote invocations, - transferring various Serializables and Externalizables - via RMI-IIOP protocol. It can flatten graphs and, at - least for the simple cases, is interoperable with 1.5 - JDKs. - o org.omg.PortableInterceptor and related functionality in - other packages is now implemented: - # The sever and client interceptors work as required - since 1.4. - # The IOR interceptor works as needed for 1.5. - o The org.omg.DynamicAny package is completed and passes - the prepared tests. - o The Portable Object Adapter should now support the output - of the recent IDL to java compilers. These compilers now - generate servants and not CORBA objects as before, making - the output depend on the existing POA implementation. - Completing POA means that such code can already be tried - to run on Classpath. Our POA is tested for the following - usager scenarios: - # POA converts servant to the CORBA object. - # Servant provides to the CORBA object. - # POA activates new CORBA object with the given Object - Id (byte array) that is later accessible for the - servant. - # During the first call, the ServantActivator provides - servant for this and all subsequent calls on the - current object. - # During each call, the ServantLocator provides - servant for this call only. - # ServantLocator or ServantActivator forwards call to - another server. - # POA has a single servant, responsible for all - objects. - # POA has a default servant, but some objects are - explicitly connected to they specific servants. - The POA is verified using tests from the former - cost.omg.org. - o The CORBA implementation is now a working prototype that - should support features up to 1.3 inclusive. We invite - groups writing CORBA dependent applications to try - Classpath implementation, reporting any possible bugs. - The CORBA prototype is interoperable with Sun's - implementation v 1.4, transferring object references, - primitive types, narrow and wide strings, arrays, - structures, trees, abstract interfaces and value types - (feature of CORBA 2.3) between these two platforms. - Remote exceptions are transferred and handled correctly. - The stringified object references (IORs) from various - sources are parsed as required. The transient (for - current session) and permanent (till jre restart) - redirections work. Both Little and Big Endian encoded - messages are accepted. The implementation is verified - using tests from the former cost.omg.org. The current - release includes working examples (see the examples - directory), demonstrating the client-server - communication, using either CORBA Request or IDL-based - stub (usually generated by a IDL to java compiler). These - examples also show how to use the Classpath CORBA naming - service. The IDL to java compiler is not yet written, but - as our library must be compatible, it naturally accepts - the output of other idlj implementations. - + Misc - o Updated TimeZone data against Olson tzdata2005l. - o Make zip and jar packages UTF-8 clean. - o "native" code builds and compiles (warning free) on - Darwin and Solaris. - o java.util.logging.FileHandler now rotates files. - o Start of a generic JDWP framework in gnu/classpath/jdwp. - This is unfinished, but feedback (at classpath@gnu.org) - from runtime hackers is greatly appreciated. Although - most of the work is currently being done around gcj/gij - we want this framework to be as VM neutral as possible. - Early design is described in: - [3]http://gcc.gnu.org/ml/java/2005-05/msg00260.html - o QT4 AWT peers, enable by giving configure - --enable-qt-peer. Included, but not ready for production - yet. They are explicitly disabled and not supported. But - if you want to help with the development of these new - features we are interested in feedback. You will have to - explicitly enable them to try them out (and they will - most likely contain bugs). - o Documentation fixes all over the place. See - [4]http://developer.classpath.org/doc/ - -New Targets and Target Specific Improvements - - IA-32/x86-64 - - * The x86-64 medium model (that allows building applications whose - data segment exceeds 4GB) was redesigned to match latest ABI draft. - New implementation split large datastructures into separate segment - improving performance of accesses to small datastructures and also - allows linking of small model libraries into medium model programs - as long as the libraries are not accessing the large datastructures - directly. Medium model is also supported in position independent - code now. - The ABI change results in partial incompatibility among medium - model objects. Linking medium model libraries (or objects) compiled - with new compiler into medium model program compiled with older - will likely result in exceeding ranges of relocations. - Binutils 2.16.91 or newer are required for compiling medium model - now. - - RS6000 (POWER/PowerPC) - - * The AltiVec vector primitives in <altivec.h> are now implemented in - a way that puts a smaller burden on the preprocessor, instead - processing the "overloading" in the front ends. This should benefit - compilation speed on AltiVec vector code. - * AltiVec initializers now are generated more efficiently. - * The popcountb instruction available on POWER5 now is generated. - * The floating point round to integer instructions available on - POWER5+ now is generated. - * Floating point divides can be synthesized using the floating point - reciprocal estimate instructions. - * Double precision floating point constants are initialized as single - precision values if they can be represented exactly. - - S/390, zSeries and System z9 - - * Support for the IBM System z9 109 processor has been added. When - using the -march=z9-109 option, the compiler will generate code - making use of instructions provided by the extended immediate - facility. - * Support for 128-bit IEEE floating point has been added. When using - the -mlong-double-128 option, the compiler will map the long double - data type to 128-bit IEEE floating point. Using this option - constitutes an ABI change, and requires glibc support. - * Various changes to improve performance of generated code have been - implemented, including: - + In functions that do not require a literal pool, register %r13 - (which is traditionally reserved as literal pool pointer), can - now be freely used for other purposes by the compiler. - + More precise tracking of register use allows the compiler to - generate more efficient function prolog and epilog code in - certain cases. - + The SEARCH STRING, COMPARE LOGICAL STRING, and MOVE STRING - instructions are now used to implement C string functions. - + The MOVE CHARACTER instruction with single byte overlap is now - used to implement the memset function with non-zero fill byte. - + The LOAD ZERO instructions are now used where appropriate. - + The INSERT CHARACTERS UNDER MASK, STORE CHARACTERS UNDER MASK, - and INSERT IMMEDIATE instructions are now used more frequently - to optimize bitfield operations. - + The BRANCH ON COUNT instruction is now used more frequently. - In particular, the fact that a loop contains a subroutine call - no longer prevents the compiler from using this instruction. - + The compiler is now aware that all shift and rotate - instructions implicitly truncate the shift count to six bits. - * Back-end support for the following generic features has been - implemented: - + The full set of [5]built-in functions for atomic memory - access. - + The -fstack-protector feature. - + The optimization pass avoiding unnecessary stores of incoming - argument registers in functions with variable argument list. - - SPARC - - * The default code model in 64-bit mode has been changed from - Medium/Anywhere to Medium/Middle on Solaris. - * TLS support is disabled by default on Solaris prior to release 10. - It can be enabled on TLS-capable Solaris 9 versions (4/04 release - and later) by specifying --enable-tls at configure time. - - MorphoSys - - * Support has been added for this new architecture. - -Obsolete Systems - -Documentation improvements - -Other significant improvements - - * GCC can now emit code for protecting applications from - stack-smashing attacks. The protection is realized by buffer - overflow detection and reordering of stack variables to avoid - pointer corruption. - * Some built-in functions have been fortified to protect them against - various buffer overflow (and format string) vulnerabilities. - Compared to the mudflap bounds checking feature, the safe builtins - have far smaller overhead. This means that programs built using - safe builtins should not experience any measurable slowdown. - -GCC 4.1.2 - - This is the [6]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.1.2 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - When generating code for a shared library, GCC now recognizes that - global functions may be replaced when the program runs. Therefore, it - is now more conservative in deducing information from the bodies of - functions. For example, in this example: - void f() {} - void g() { - try { f(); } - catch (...) { - cout << "Exception"; - } - } - - G++ would previously have optimized away the catch clause, since it - would have concluded that f cannot throw exceptions. Because users may - replace f with another function in the main body of the program, this - optimization is unsafe, and is no longer performed. If you wish G++ to - continue to optimize as before, you must add a throw() clause to the - declaration of f to make clear that it does not throw exceptions. - - - For questions related to the use of GCC, please consult these web - pages and the [7]GCC manuals. If that fails, the - [8]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [9]gcc@gcc.gnu.org. All of [10]our lists have public - archives. - - Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [12]maintained by the GCC team. Last modified - 2012-11-02[13]. - -References - - 1. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2 - 2. http://developer.classpath.org/mediation/ClasspathGraphicsImagesText - 3. http://gcc.gnu.org/ml/java/2005-05/msg00260.html - 4. http://developer.classpath.org/doc/ - 5. http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html - 6. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2 - 7. http://gcc.gnu.org/onlinedocs/ - 8. mailto:gcc-help@gcc.gnu.org - 9. mailto:gcc@gcc.gnu.org - 10. http://gcc.gnu.org/lists.html - 11. http://www.fsf.org/ - 12. http://gcc.gnu.org/about.html - 13. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.0/index.html - - GCC 4.0 Release Series - - January 31, 2007 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 4.0.4. - - This release is a bug-fix release, containing fixes for regressions in - GCC 4.0.3 relative to previous releases of GCC. - -Release History - - GCC 4.0.4 - January 31, 2007 ([2]changes) - - GCC 4.0.3 - March 10, 2006 ([3]changes) - - GCC 4.0.2 - September 28, 2005 ([4]changes) - - GCC 4.0.1 - July 7, 2005 ([5]changes) - - GCC 4.0.0 - April 20, 2005 ([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. - - - For questions related to the use of GCC, please consult these web - pages and the [13]GCC manuals. If that fails, the - [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [15]gcc@gcc.gnu.org. All of [16]our lists have public - archives. - - Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [18]maintained by the GCC team. Last modified - 2012-11-02[19]. - -References - - 1. http://www.gnu.org/ - 2. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4 - 3. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.3 - 4. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.2 - 5. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.1 - 6. http://gcc.gnu.org/gcc-4.0/changes.html - 7. http://gcc.gnu.org/gcc-4.0/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. http://gcc.gnu.org/onlinedocs/ - 14. mailto:gcc-help@gcc.gnu.org - 15. mailto:gcc@gcc.gnu.org - 16. http://gcc.gnu.org/lists.html - 17. http://www.fsf.org/ - 18. http://gcc.gnu.org/about.html - 19. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-4.0/changes.html - - GCC 4.0 Release Series - Changes, New Features, and Fixes - - The latest release in the 4.0 release series is [1]GCC 4.0.4. - -Caveats - - * GCC now generates location lists by default when compiling with - debug info and optimization. - + GDB 6.0 and older crashes when it sees location lists. GDB 6.1 - or later is needed to debug binaries containing location - lists. - + When you are trying to view a value of a variable in a part of - a function where it has no location (for example when the - variable is no longer used and thus its location was used for - something else) GDB will say that it is not available. - You can disable generating location lists by -fno-var-tracking. - * GCC no longer accepts the -fwritable-strings option. Use named - character arrays when you need a writable string. - * The options -freduce-all-givs and -fmove-all-movables have been - discontinued. They were used to circumvent a shortcoming in the - heuristics of the old loop optimization code with respect to common - Fortran constructs. The new (tree) loop optimizer works differently - and doesn't need those work-arounds. - * The graph-coloring register allocator, formerly enabled by the - option -fnew-ra, has been discontinued. - * -I- has been deprecated. -iquote is meant to replace the need for - this option. - * The MIPS -membedded-pic and -mrnames options have been removed. - * All MIPS targets now require the GNU assembler. In particular, IRIX - configurations can no longer use the MIPSpro assemblers, although - they do still support the MIPSpro linkers. - * The SPARC option -mflat has been removed. - * English-language diagnostic messages will now use Unicode quotation - marks in UTF-8 locales. (Non-English messages already used the - quotes appropriate for the language in previous releases.) If your - terminal does not support UTF-8 but you are using a UTF-8 locale - (such locales are the default on many GNU/Linux systems) then you - should set LC_CTYPE=C in the environment to disable that locale. - Programs that parse diagnostics and expect plain ASCII - English-language messages should set LC_ALL=C. See [2]Markus Kuhn's - explanation of Unicode quotation marks for more information. - * The specs file is no longer installed on most platforms. Most users - will be totally unaffected. However, if you are accustomed to - editing the specs file yourself, you will now have to use the - -dumpspecs option to generate the specs file, and then edit the - resulting file. - -General Optimizer Improvements - - * The [3]tree ssa branch has been merged. This merge has brought in a - completely new optimization framework based on a higher level - intermediate representation than the existing RTL representation. - Numerous new code transformations based on the new framework are - available in GCC 4.0, including: - + Scalar replacement of aggregates - + Constant propagation - + Value range propagation - + Partial redundancy elimination - + Load and store motion - + Strength reduction - + Dead store elimination - + Dead and unreachable code elimination - + [4]Autovectorization - + Loop interchange - + Tail recursion by accumulation - Many of these passes outperform their counterparts from previous - GCC releases. - * [5]Swing Modulo Scheduling (SMS). An RTL level instruction - scheduling optimization intended for loops that perform heavy - computations. - -New Languages and Language specific improvements - - C family - - * The sentinel attribute has been added to GCC. This function - attribute allows GCC to warn when variadic functions such as execl - are not NULL terminated. See the GCC manual for a complete - description of its behavior. - * Given __attribute__((alias("target"))) it is now an error if target - is not a symbol, defined in the same translation unit. This also - applies to aliases created by #pragma weak alias=target. This is - because it's meaningless to define an alias to an undefined symbol. - On Solaris, the native assembler would have caught this error, but - GNU as does not. - - C and Objective-C - - * The -Wstrict-aliasing=2 option has been added. This warning catches - all unsafe cases, but it may also give a warning for some cases - that are safe. - * The cast-as-lvalue, conditional-expression-as-lvalue and - compound-expression-as-lvalue extensions, which were deprecated in - 3.3.4 and 3.4, have been removed. - * The -fwritable-strings option, which was deprecated in 3.4, has - been removed. - * #pragma pack() semantics have been brought closer to those used by - other compilers. This also applies to C++. - * Taking the address of a variable with register storage is invalid - in C. GCC now issues an error instead of a warning. - * Arrays of incomplete element type are invalid in C. GCC now issues - an error for such arrays. Declarations such as extern struct s x[]; - (where struct s has not been defined) can be moved after the - definition of struct s. Function parameters declared as arrays of - incomplete type can instead be declared as pointers. - - C++ - - * When compiling without optimizations (-O0), the C++ frontend is - much faster than in any previous versions of GCC. Independent - testers have measured speed-ups up to 25% in real-world production - code, compared to the 3.4 family (which was already the fastest - version to date). Upgrading from older versions might show even - bigger improvements. - * ELF visibility attributes can now be applied to a class type, so - that it affects every member function of a class at once, without - having to specify each individually: -class __attribute__ ((visibility("hidden"))) Foo -{ - int foo1(); - void foo2(); -}; - The syntax is deliberately similar to the __declspec() system used - by Microsoft Windows based compilers, allowing cross-platform - projects to easily reuse their existing macro system for denoting - exports and imports. By explicitly marking internal classes never - used outside a binary as hidden, one can completely avoid PLT - indirection overheads during their usage by the compiler. You can - find out more about the advantages of this at - [6]http://www.akkadia.org/drepper/dsohowto.pdf - * The -fvisibility-inlines-hidden option has been added which marks - all inlineable functions as having hidden ELF visibility, thus - removing their symbol and typeinfo from the exported symbol table - of the output ELF binary. Using this option can reduce the exported - symbol count of template-heavy code by up to 40% with no code - change at all, thus notably improving link and load times for the - binary as well as a reduction in size of up to 10%. Also, check the - new [7]-fvisibility option. - * The compiler now uses the library interface specified by the [8]C++ - ABI for thread-safe initialization of function-scope static - variables. Most users should leave this alone, but embedded - programmers may want to disable this by specifying - -fno-threadsafe-statics for a small savings in code size. - * Taking the address of an explicit register variable is no longer - supported. Note that C++ allows taking the address of variables - with register storage so this will continue to compile with a - warning. For example, assuming that r0 is a machine register: -register int foo asm ("r0"); -register int bar; -&foo; // error, no longer accepted -&bar; // OK, with a warning - * G++ has an undocumented extension to virtual function covariancy - rules that allowed the overrider to return a type that was - implicitly convertable to the overridden function's return type. - For instance a function returning void * could be overridden by a - function returning T *. This is now deprecated and will be removed - in a future release. - * The G++ minimum and maximum operators (<? and >?) and their - compound forms (<?=) and >?=) have been deprecated and will be - removed in a future version. Code using these operators should be - modified to use std::min and std::max instead. - * Declaration of nested classes of class templates as friends are - supported: -template <typename T> struct A { - class B {}; -}; -class C { - template <typename T> friend class A<T>::B; -}; - This complements the feature member functions of class templates as - friends introduced in GCC 3.4.0. - * When declaring a friend class using an unqualified name, classes - outside the innermost non-class scope are not searched: -class A; -namespace N { - class B { - friend class A; // Refer to N::A which has not been declared yet - // because name outside namespace N are not searched - friend class ::A; // Refer to ::A - }; -} - Hiding the friend name until declaration is still not implemented. - * Friends of classes defined outside their namespace are correctly - handled: -namespace N { - class A; -} -class N::A { - friend class B; // Refer to N::B in GCC 4.0.0 - // but ::B in earlier versions of GCC -}; - - Runtime Library (libstdc++) - - * Optimization work: - + Added efficient specializations of istream functions for char - and wchar_t. - + Further performance tuning of strings, in particular wrt - single-char append and getline. - + iter_swap - and therefore most of the mutating algorithms - - now makes an unqualified call to swap when the value_type of - the two iterators is the same. - * A large subset of the features in Technical Report 1 (TR1 for - short) is experimentally delivered (i.e., no guarantees about the - implementation are provided. In particular it is not promised that - the library will remain link-compatible when code using TR1 is - used): - + General utilities such as reference_wrapper and shared_ptr. - + Function objects, i.e., result_of, mem_fn, bind, function. - + Support for metaprogramming. - + New containers such as tuple, array, unordered_set, - unordered_map, unordered_multiset, unordered_multimap. - * As usual, many bugs have been fixed and LWG resolutions implemented - for the first time (e.g., DR 409). - - Java - - * In order to prevent naming conflicts with other implementations of - these tools, some GCJ binaries have been renamed: - + rmic is now grmic, - + rmiregistry is now grmiregistry, and - + jar is now fastjar. - In particular, these names were problematic for the jpackage.org - packaging conventions which install symlinks in /usr/bin that point - to the preferred versions of these tools. - * The -findirect-dispatch argument to the compiler now works and - generates code following a new "binary compatibility" ABI. Code - compiled this way follows the binary compatibility rules of the - Java Language Specification. - * libgcj now has support for using GCJ as a JIT, using the - gnu.gcj.jit family of system properties. - * libgcj can now find a shared library corresponding to the bytecode - representation of a class. See the documentation for the new - gcj-dbtool program, and the new gnu.gcj.precompiled.db.path system - property. - * There have been many improvements to the class library. Here are - some highlights: - + Much more of AWT and Swing exist. - + Many new packages and classes were added, including - java.util.regex, java.net.URI, javax.crypto, - javax.crypto.interfaces, javax.crypto.spec, javax.net, - javax.net.ssl, javax.security.auth, - javax.security.auth.callback, javax.security.auth.login, - javax.security.auth.x500, javax.security.sasl, org.ietf.jgss, - javax.imageio, javax.imageio.event, javax.imageio.spi, - javax.print, javax.print.attribute, - javax.print.attribute.standard, javax.print.event, and - javax.xml - + Updated SAX and DOM, and imported GNU JAXP - - Fortran - - * A new [9]Fortran front end has replaced the aging GNU Fortran 77 - front end. The new front end supports Fortran 90 and Fortran 95. It - may not yet be as stable as the old Fortran front end. - - Ada - - * Ada (with tasking and Zero Cost Exceptions) is now available on - many more targets, including but not limited to: alpha-linux, - hppa-hpux, hppa-linux, powerpc-darwin, powerpc-linux, s390-linux, - s390x-linux, sparc-linux. - * Some of the new Ada 2005 features are now implemented like - Wide_Wide_Character and Ada.Containers. - * Many bugs have been fixed, tools and documentation improved. - * To compile Ada from the sources, install an older working Ada - compiler and then use --enable-languages=ada at configuration time, - since the Ada frontend is not currently activated by default. See - the [10]Installing GCC for details. - -New Targets and Target Specific Improvements - - H8/300 - - * The frame layout has changed. In the new layout, the prologue of a - function first saves registers and then allocate space for locals, - resulting in an 1% improvement on code size. - - IA-32/x86-64 (AMD64) - - * The acos, asin, drem, exp10, exp2, expm1, fmod, ilogb, log10, - log1p, log2, logb and tan mathematical builtins (and their float - and long double variants) are now implemented as inline x87 - intrinsics when using -ffast-math. - * The ceil, floor, nearbyint, rint and trunc mathematical builtins - (and their float and long double variants) are now implemented as - inline x87 intrinsics when using -ffast-math. - * The x87's fsincos instruction is now used automatically with - -ffast-math when calculating both the sin and cos of the same - argument. - * Instruction selection for multiplication and division by constants - has been improved. - - IA-64 - - * Floating point division, integer division and sqrt are now inlined, - resulting in significant performance improvements on some codes. - - MIPS - - * Division by zero checks now use conditional traps if the target - processor supports them. This decreases code size by one word per - division operation. The old behavior (branch and break) can be - obtained either at configure time by passing --with-divide=breaks - to configure or at runtime by passing -mdivide-breaks to GCC. - * Support for MIPS64 paired-single instructions has been added. It is - enabled by -mpaired-single and can be accessed using both the - target-independent vector extensions and new MIPS-specific built-in - functions. - * Support for the MIPS-3D ASE has been added. It is enabled by - -mips3d and provides new MIPS-3D-specific built-in functions. - * The -mexplicit-relocs option now supports static n64 code (as is - used, for example, in 64-bit linux kernels). -mexplicit-relocs - should now be feature-complete and is enabled by default when GCC - is configured to use a compatible assembler. - * Support for the NEC VR4130 series has been added. This support - includes the use of VR-specific instructions and a new VR4130 - scheduler. Full VR4130 support can be selected with -march=vr4130 - while code for any ISA can be tuned for the VR4130 using - -mtune=vr4130. There is also a new -mvr4130-align option that - produces better schedules at the cost of increased code size. - * Support for the Broadcom SB-1 has been extended. There is now an - SB-1 scheduler as well as support for the SB-1-specific - paired-single instructions. Full SB-1 support can be selected with - -march=sb1 while code for any ISA can be optimized for the SB-1 - using -mtune=sb1. - * The compiler can now work around errata in R4000, R4400, VR4120 and - VR4130 processors. These workarounds are enabled by -mfix-r4000, - -mfix-r4400, -mfix-vr4120 and -mfix-vr4130 respectively. The VR4120 - and VR4130 workarounds need binutils 2.16 or above. - * IRIX shared libraries are now installed into the standard library - directories: o32 libraries go into lib/, n32 libraries go into - lib32/ and n64 libraries go into lib64/. - * The compiler supports a new -msym32 option. It can be used to - optimize n64 code in which all symbols are known to have 32-bit - values. - - S/390 and zSeries - - * New command-line options help to generate code intended to run in - an environment where stack space is restricted, e.g. Linux kernel - code: - + -mwarn-framesize and -mwarn-dynamicstack trigger compile-time - warnings for single functions that require large or dynamic - stack frames. - + -mstack-size and -mstack-guard generate code that checks for - stack overflow at run time. - + -mpacked-stack generates code that reduces the stack frame - size of many functions by reusing unneeded parts of the stack - bias area. - * The -msoft-float option now ensures that generated code never - accesses floating point registers. - * The s390x-ibm-tpf target now fully supports C++, including - exceptions and threads. - * Various changes to improve performance of the generated code have - been implemented, including: - + GCC now uses sibling calls where possible. - + Condition code handling has been optimized, allowing GCC to - omit redundant comparisons in certain cases. - + The cost function guiding many optimizations has been refined - to more accurately represent the z900 and z990 processors. - + The ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL WITH BORROW - instructions are now used to avoid conditional branches in - certain cases. - + The back end now uses the LEGITIMIZE_RELOAD_ADDRESS feature to - optimize address arithmetic required to access large stack - frames. - + GCC now makes more efficient use of memory-to-memory type - instructions (MVC, CLC, ...). - + More precise tracking of special register use allows better - instruction scheduling, in particular of the function prologue - and epilogue sequences. - + The Java front end now generates inline code to implement - integer division, instead of calling library routines. - - SPARC - - * The options -mv8, -msparclite, -mcypress, -msupersparc, -mf930 and - -mf934 have been removed. They have been replaced with -mcpu=xxx. - * The internal model used to estimate the relative cost of each - instruction has been updated. It is expected to give better results - on recent UltraSPARC processors. - * Code generation for function prologues and epilogues has been - improved, resulting in better scheduling and allowing multiple exit - points in functions. - * Support for Sun's Visual Instruction Set (VIS) has been enhanced. - It is enabled by -mvis and provides new built-in functions for VIS - instructions on UltraSPARC processors. - * The option -mapp-regs has been turned on by default on Solaris too. - - NetWare - - * Novell NetWare (on ix86, no other hardware platform was ever really - supported by this OS) has been re-enabled and the ABI supported by - GCC has been brought into sync with that of MetroWerks CodeWarrior - (the ABI previously supported was that of some Unix systems, which - NetWare never tried to support). - -Obsolete Systems - - Support for a number of older systems has been declared obsolete in GCC - 4.0. 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: - * Intel i860 - * Ubicom IP2022 - * National Semiconductor NS32K - * Texas Instruments TMS320C[34]x - - Also, those for some individual systems have been obsoleted: - * SPARC family - + SPARClite-based systems (sparclite-*-coff, sparclite-*-elf, - sparc86x-*-elf) - + OpenBSD 32-bit (sparc-*-openbsd*) - -Documentation improvements - -Other significant improvements - - * Location lists are now generated by default when compiling with - debug info and optimization. Location lists provide more accurate - debug info about locations of variables and they allow debugging - code compiled with -fomit-frame-pointer. - * The -fvisibility option has been added which allows the default ELF - visibility of all symbols to be set per compilation and the new - #pragma GCC visibility preprocessor command allows the setting of - default ELF visibility for a region of code. Using - -fvisibility=hidden especially in combination with the new - -fvisibility-inlines-hidden can yield substantial improvements in - output binary quality including avoiding PLT indirection overheads, - reduction of the exported symbol count by up to 60% (with resultant - improvements to link and load times), better scope for the - optimizer to improve code and up to a 20% reduction in binary size. - Using these options correctly yields a binary with a similar symbol - count to a Windows DLL. - Perhaps more importantly, this new feature finally allows (with - careful planning) complete avoidance of symbol clashes when - manually loading shared objects with RTLD_GLOBAL, thus finally - solving problems many projects such as python were forced to use - RTLD_LOCAL for (with its resulting issues for C++ correctness). You - can find more information about using these options at - [11]http://gcc.gnu.org/wiki/Visibility. - __________________________________________________________________ - -GCC 4.0.1 - - This is the [12]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.0.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.0.2 - - This is the [13]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.0.2 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - Unfortunately, due to a release engineering failure, this release has a - regression on Solaris that will affect some C++ programs. We suggest - that Solaris users apply a [14]patch that corrects the problem. Users - who do not wish to apply the patch should explicitly link C++ programs - with the -pthreads option, even if they do not use threads. This - problem has been corrected in the current 4.0 branch sources and will - not be present in GCC 4.0.3. - -GCC 4.0.3 - - Starting with this release, the function getcontext is recognized by - the compiler as having the same semantics as the setjmp function. In - particular, the compiler will ensure that all registers are dead before - calling such a function and will emit a warning about the variables - that may be clobbered after the second return from the function. - -GCC 4.0.4 - - This is the [15]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 4.0.4 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - The 4.0.4 release is provided for those that require a high degree of - binary compatibility with previous 4.0.x releases. For most users, the - GCC team recommends that version 4.1.1 or later be used instead." - - - 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. Comments on these - web pages and the development of GCC are welcome on our developer - list at [18]gcc@gcc.gnu.org. All of [19]our lists have public - archives. - - Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [21]maintained by the GCC team. Last modified - 2012-11-02[22]. - -References - - 1. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4 - 2. http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html - 3. http://gcc.gnu.org/projects/tree-ssa/ - 4. http://gcc.gnu.org/projects/tree-ssa/vectorization.html - 5. http://gcc.gnu.org/news/sms.html - 6. http://www.akkadia.org/drepper/dsohowto.pdf - 7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility - 8. http://mentorembedded.github.com/cxx-abi/ - 9. http://gcc.gnu.org/fortran/ - 10. http://gcc.gnu.org/install/ - 11. http://gcc.gnu.org/wiki/Visibility - 12. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.1 - 13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.2 - 14. http://gcc.gnu.org/ml/gcc-cvs/2005-09/msg00984.html - 15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.4 - 16. http://gcc.gnu.org/onlinedocs/ - 17. mailto:gcc-help@gcc.gnu.org - 18. mailto:gcc@gcc.gnu.org - 19. http://gcc.gnu.org/lists.html - 20. http://www.fsf.org/ - 21. http://gcc.gnu.org/about.html - 22. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-3.4/index.html - - GCC 3.4 Release Series - - May 26, 2006 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 3.4.6. - - This release is a bug-fix release, containing fixes for regressions in - GCC 3.4.4 relative to previous releases of GCC. This is the last of the - 3.4.x series. - - The GCC 3.4 release series includes numerous [2]new features, - improvements, bug fixes, and other changes, thanks to an [3]amazing - group of volunteers. - -Release History - - GCC 3.4.6 - March 6, 2006 ([4]changes) - - GCC 3.4.5 - November 30, 2005 ([5]changes) - - GCC 3.4.4 - May 18, 2005 ([6]changes) - - GCC 3.4.3 - November 4, 2004 ([7]changes) - - GCC 3.4.2 - September 6, 2004 ([8]changes) - - GCC 3.4.1 - July 1, 2004 ([9]changes) - - GCC 3.4.0 - April 18, 2004 ([10]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 [11]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 [12]amazing group of volunteers is - what makes GCC successful. - - For additional information about GCC please refer to the [13]GCC - project web site or contact the [14]GCC development mailing list. - - To obtain GCC please use [15]our mirror sites, or [16]our SVN server. - - - For questions related to the use of GCC, please consult these web - pages and the [17]GCC manuals. If that fails, the - [18]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [19]gcc@gcc.gnu.org. All of [20]our lists have public - archives. - - Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [22]maintained by the GCC team. Last modified - 2012-11-02[23]. - -References - - 1. http://www.gnu.org/ - 2. http://gcc.gnu.org/gcc-3.4/changes.html - 3. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 4. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6 - 5. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.5 - 6. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.4 - 7. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.3 - 8. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.2 - 9. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.1 - 10. http://gcc.gnu.org/gcc-3.4/changes.html - 11. http://gcc.gnu.org/gcc-3.4/buildstat.html - 12. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 13. http://gcc.gnu.org/index.html - 14. mailto:gcc@gcc.gnu.org - 15. http://gcc.gnu.org/mirrors.html - 16. http://gcc.gnu.org/svn.html - 17. http://gcc.gnu.org/onlinedocs/ - 18. mailto:gcc-help@gcc.gnu.org - 19. mailto:gcc@gcc.gnu.org - 20. http://gcc.gnu.org/lists.html - 21. http://www.fsf.org/ - 22. http://gcc.gnu.org/about.html - 23. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-3.4/changes.html - - GCC 3.4 Release Series - Changes, New Features, and Fixes - - The final release in the 3.4 release series is [1]GCC 3.4.6. The series - is now closed. - - GCC 3.4 has [2]many improvements in the C++ frontend. Before reporting - a bug, please make sure it's really GCC, and not your code, that is - broken. - -Caveats - - * GNU Make is now required to build GCC. - * With -nostdinc the preprocessor used to ignore both standard - include paths and include paths contained in environment variables. - It was neither documented nor intended that environment variable - paths be ignored, so this has been corrected. - * GCC no longer accepts the options -fvolatile, -fvolatile-global and - -fvolatile-static. It is unlikely that they worked correctly in any - 3.x release. - * GCC no longer ships <varargs.h>. Use <stdarg.h> instead. - * Support for all the systems [3]obsoleted in GCC 3.3 has been - removed from GCC 3.4. See below for a [4]list of systems which are - obsoleted in this release. - * GCC now requires an ISO C90 (ANSI C89) C compiler to build. K&R C - compilers will not work. - * The implementation of the [5]MIPS ABIs has changed. As a result, - the code generated for certain MIPS targets will not be binary - compatible with earlier releases. - * In previous releases, the MIPS port had a fake "hilo" register with - the user-visible name accum. This register has been removed. - * The implementation of the [6]SPARC ABIs has changed. As a result, - the code generated will not be binary compatible with earlier - releases in certain cases. - * The configure option --enable-threads=pthreads has been removed; - use --enable-threads=posix instead, which should have the same - effect. - * Code size estimates used by inlining heuristics for C, Objective-C, - C++ and Java have been redesigned significantly. As a result the - parameters of -finline-insns, --param max-inline-insns-single and - --param max-inline-insns-auto need to be reconsidered. - * --param max-inline-slope and --param min-inline-insns have been - removed; they are not needed for the new bottom-up inlining - heuristics. - * The new unit-at-a-time compilation scheme has several compatibility - issues: - + The order in which functions, variables, and top-level asm - statements are emitted may have changed. Code relying on some - particular ordering needs to be updated. The majority of such - top-level asm statements can be replaced by section - attributes. - + Unreferenced static variables and functions are removed. This - may result in undefined references when an asm statement - refers to the variable/function directly. In that case either - the variable/function shall be listed in asm statement operand - or in the case of top-level asm statements the attribute used - shall be used to force function/variable to be always output - and considered as a possibly used by unknown code. - For variables the attribute is accepted only by GCC 3.4 and - newer, while for earlier versions it is sufficient to use - unused to silence warnings about the variables not being - referenced. To keep code portable across different GCC - versions, you can use appropriate preprocessor conditionals. - + Static functions now can use non-standard passing conventions - that may break asm statements calling functions directly. - Again the attribute used shall be used to prevent this - behavior. - As a temporary workaround, -fno-unit-at-a-time can be used, but - this scheme may not be supported by future releases of GCC. - * GCC 3.4 automatically places zero-initialized variables in the .bss - section on some operating systems. Versions of GNU Emacs up to (and - including) 21.3 will not work correctly when using this - optimization; you can use -fno-zero-initialized-in-bss to disable - it. - * If GCC 3.4 is configured with --enable-threads=posix (the default - on most targets that support pthreads) then _REENTRANT will be - defined unconditionally by some libstdc++ headers. C++ code which - relies on that macro to detect whether multi-threaded code is being - compiled might change in meaning, possibly resulting in linker - errors for single-threaded programs. Affected users of [7]Boost - should compile single-threaded code with -DBOOST_DISABLE_THREADS. - See Bugzilla for [8]more information. - -General Optimizer Improvements - - * Usability of the profile feedback and coverage testing has been - improved. - + Performance of profiled programs has been improved by faster - profile merging code. - + Better use of the profile feedback for optimization (loop - unrolling and loop peeling). - + File locking support allowing fork() calls and parallel runs - of profiled programs. - + Coverage file format has been redesigned. - + gcov coverage tool has been improved. - + make profiledbootstrap available to build a faster compiler. - Experiments made on i386 hardware showed an 11% speedup on -O0 - and a 7.5% speedup on -O2 compilation of a [9]large C++ - testcase. - + New value profiling pass enabled via -fprofile-values - + New value profile transformations pass enabled via -fvpt aims - to optimize some code sequences by exploiting knowledge about - value ranges or other properties of the operands. At the - moment a conversion of expensive divisions into cheaper - operations has been implemented. - + New -fprofile-generate and -fprofile-use command-line options - to simplify the use of profile feedback. - * A new unit-at-a-time compilation scheme for C, Objective-C, C++ and - Java which is enabled via -funit-at-a-time (and implied by -O2). In - this scheme a whole file is parsed first and optimized later. The - following basic inter-procedural optimizations are implemented: - + Removal of unreachable functions and variables - + Discovery of local functions (functions with static linkage - whose address is never taken) - + On i386, these local functions use register parameter passing - conventions. - + Reordering of functions in topological order of the call graph - to enable better propagation of optimizing hints (such as the - stack alignments needed by functions) in the back end. - + Call graph based out-of-order inlining heuristics which allows - to limit overall compilation unit growth (--param - inline-unit-growth). - Overall, the unit-at-a-time scheme produces a 1.3% improvement for - the SPECint2000 benchmark on the i386 architecture (AMD Athlon - CPU). - * More realistic code size estimates used by inlining for C, - Objective-C, C++ and Java. The growth of large functions can now be - limited via --param large-function-insns and --param - large-function-growth. - * A new cfg-level loop optimizer pass replaces the old loop unrolling - pass and adds two other loop transformations -- loop peeling and - loop unswitching -- and also uses the profile feedback to limit - code growth. (The three optimizations are enabled by - -funroll-loops, -fpeel-loops and -funswitch-loops flags, - respectively). - The old loop unroller still can be enabled by -fold-unroll-loops - and may produce better code in some cases, especially when the - webizer optimization pass is not run. - * A new web construction pass enabled via -fweb (and implied by -O3) - improves the quality of register allocation, CSE, first scheduling - pass and some other optimization passes by avoiding re-use of - pseudo registers with non-overlapping live ranges. The pass almost - always improves code quality but does make debugging difficult and - thus is not enabled by default by -O2 - The pass is especially effective as cleanup after code duplication - passes, such as the loop unroller or the tracer. - * Experimental implementations of superblock or trace scheduling in - the second scheduling pass can be enabled via - -fsched2-use-superblocks and -fsched2-use-traces, respectively. - -New Languages and Language specific improvements - - Ada - - * The Ada front end has been updated to include numerous bug fixes - and enhancements. These include: - + Improved project file support - + Additional set of warnings about potential wrong code - + Improved error messages - + Improved code generation - + Improved cross reference information - + Improved inlining - + Better run-time check elimination - + Better error recovery - + More efficient implementation of unbounded strings - + Added features in GNAT.Sockets, GNAT.OS_Lib, GNAT.Debug_Pools, - ... - + New GNAT.xxxx packages (e.g. GNAT.Strings, - GNAT.Exception_Action) - + New pragmas - + New -gnatS switch replacing gnatpsta - + Implementation of new Ada features (in particular limited - with, limited aggregates) - - C/Objective-C/C++ - - * Precompiled headers are now supported. Precompiled headers can - dramatically speed up compilation of some projects. There are some - known defects in the current precompiled header implementation that - will result in compiler crashes in relatively rare situations. - Therefore, precompiled headers should be considered a "technology - preview" in this release. Read the manual for details about how to - use precompiled headers. - * File handling in the preprocessor has been rewritten. GCC no longer - gets confused by symlinks and hardlinks, and now has a correct - implementation of #import and #pragma once. These two directives - have therefore been un-deprecated. - * The undocumented extension that allowed C programs to have a label - at the end of a compound statement, which has been deprecated since - GCC 3.0, has been removed. - * The cast-as-lvalue extension has been removed for C++ and - deprecated for C and Objective-C. In particular, code like this: - int i; - (char) i = 5; - - or this: - char *p; - ((int *) p)++; - - is no longer accepted for C++ and will not be accepted for C and - Objective-C in a future version. - * The conditional-expression-as-lvalue extension has been deprecated - for C and Objective-C. In particular, code like this: - int a, b, c; - (a ? b : c) = 2; - - will not be accepted for C and Objective-C in a future version. - * The compound-expression-as-lvalue extension has been deprecated for - C and Objective-C. In particular, code like this: - int a, b; - (a, b) = 2; - - will not be accepted for C and Objective-C in a future version. A - possible non-intrusive workaround is the following: - (*(a, &b)) = 2; - - * Several [10]built-in functions such as __builtin_popcount for - counting bits, finding the highest and lowest bit in a word, and - parity have been added. - * The -fwritable-strings option has been deprecated and will be - removed. - * Many C math library functions are now recognized as built-ins and - optimized. - * The C, C++, and Objective-C compilers can now handle source files - written in any character encoding supported by the host C library. - The default input character set is taken from the current locale, - and may be overridden with the -finput-charset command line option. - In the future we will add support for inline encoding markers. - - C++ - - * G++ is now much closer to full conformance to the ISO/ANSI C++ - standard. This means, among other things, that a lot of invalid - constructs which used to be accepted in previous versions will now - be rejected. It is very likely that existing C++ code will need to - be fixed. This document lists some of the most common issues. - * A hand-written recursive-descent C++ parser has replaced the - YACC-derived C++ parser from previous GCC releases. The new parser - contains much improved infrastructure needed for better parsing of - C++ source codes, handling of extensions, and clean separation - (where possible) between proper semantics analysis and parsing. The - new parser fixes many bugs that were found in the old parser. - * You must now use the typename and template keywords to disambiguate - dependent names, as required by the C++ standard. - struct K { - typedef int mytype_t; - }; - - template <class T1> struct A { - template <class T2> struct B { - void callme(void); - }; - - template <int N> void bar(void) - { - // Use 'typename' to tell the parser that T1::mytype_t names - // a type. This is needed because the name is dependent (in - // this case, on template parameter T1). - typename T1::mytype_t x; - x = 0; - } - }; - - template <class T> void template_func(void) - { - // Use 'template' to prefix member templates within - // dependent types (a has type A<T>, which depends on - // the template parameter T). - A<T> a; - a.template bar<0>(); - - // Use 'template' to tell the parser that B is a nested - // template class (dependent on template parameter T), and - // 'typename' because the whole A<T>::B<int> is - // the name of a type (again, dependent). - typename A<T>::template B<int> b; - b.callme(); - } - - void non_template_func(void) - { - // Outside of any template class or function, no names can be - // dependent, so the use of the keyword 'typename' and 'template' - // is not needed (and actually forbidden). - A<K> a; - a.bar<0>(); - A<K>::B<float> b; - b.callme(); - } - * In a template definition, unqualified names will no longer find - members of a dependent base (as specified by [temp.dep]/3 in the - C++ standard). For example, - template <typename T> struct B { - int m; - int n; - int f (); - int g (); - }; - int n; - int g (); - template <typename T> struct C : B<T> { - void h () - { - m = 0; // error - f (); // error - n = 0; // ::n is modified - g (); // ::g is called - } - }; - You must make the names dependent, e.g. by prefixing them with - this->. Here is the corrected definition of C<T>::h, - template <typename T> void C<T>::h () - { - this->m = 0; - this->f (); - this->n = 0 - this->g (); - } - As an alternative solution (unfortunately not backwards compatible - with GCC 3.3), you may use using declarations instead of this->: - template <typename T> struct C : B<T> { - using B<T>::m; - using B<T>::f; - using B<T>::n; - using B<T>::g; - void h () - { - m = 0; - f (); - n = 0; - g (); - } - }; - * In templates, all non-dependent names are now looked up and bound - at definition time (while parsing the code), instead of later when - the template is instantiated. For instance: - void foo(int); - - template <int> struct A { - static void bar(void){ - foo('a'); - } - }; - - void foo(char); - - int main() - { - A<0>::bar(); // Calls foo(int), used to call foo(char). - } - - * In an explicit instantiation of a class template, you must use - class or struct before the template-id: - template <int N> - class A {}; - - template A<0>; // error, not accepted anymore - template class A<0>; // OK - * The "named return value" and "implicit typename" extensions have - been removed. - * Default arguments in function types have been deprecated and will - be removed. - * ARM-style name-injection of friend declarations has been deprecated - and will be removed. For example: struct S { friend void f(); }; - void g() { f(); } will not be accepted by future versions of G++; - instead a declaration of "f" will need to be present outside of the - scope of "S". - * Covariant returns are implemented for all but varadic functions - that require an adjustment. - * When -pedantic is used, G++ now issues errors about spurious - semicolons. For example, - namespace N {}; // Invalid semicolon. - void f() {}; // Invalid semicolon. - * G++ no longer accepts attributes for a declarator after the - initializer associated with that declarator. For example, - X x(1) __attribute__((...)); - is no longer accepted. Instead, use: - X x __attribute__((...)) (1); - * Inside the scope of a template class, the name of the class itself - can be treated as either a class or a template. So GCC used to - accept the class name as argument of type template, and template - template parameter. However this is not C++ standard compliant. Now - the name is not treated as a valid template template argument - unless you qualify the name by its scope. For example, the code - below no longer compiles. - template <template <class> class TT> class X {}; - template <class T> class Y { - X<Y> x; // Invalid, Y is always a type template parameter. - }; - The valid code for the above example is - X< ::Y> x; // Valid. - (Notice the space between < and : to prevent GCC to interpret this - as a digraph for [.) - * Friend declarations that refer to template specializations are - rejected if the template has not already been declared. For - example, - template <typename T> - class C { - friend void f<> (C&); - }; - is rejected. You must first declare f as a template, - template <typename T> - void f(T); - * In case of friend declarations, every name used in the friend - declaration must be accessible at the point of that declaration. - Previous versions of G++ used to be less strict about this and - allowed friend declarations for private class members, for example. - See the ISO C++ Standard Committee's [11]defect report #209 for - details. - * Declaration of member functions of class templates as friends are - supported. For example, - template <typename T> struct A { - void f(); - }; - class C { - template <typename T> friend void A<T>::f(); - }; - * You must use template <> to introduce template specializations, as - required by the standard. For example, - template <typename T> - struct S; - - struct S<int> { }; - is rejected. You must write, - template <> struct S<int> {}; - * G++ used to accept code like this, - struct S { - int h(); - void f(int i = g()); - int g(int i = h()); - }; - This behavior is not mandated by the standard. Now G++ issues an - error about this code. To avoid the error, you must move the - declaration of g before the declaration of f. The default arguments - for g must be visible at the point where it is called. - * The C++ ABI Section 3.3.3 specifications for the array construction - routines __cxa_vec_new2 and __cxa_vec_new3 were changed to return - NULL when the allocator argument returns NULL. These changes are - incorporated into the libstdc++ runtime library. - * Using a name introduced by a typedef in a friend declaration or in - an explicit instantiation is now rejected, as specified by the ISO - C++ standard. - class A; - typedef A B; - class C { - friend class B; // error, no typedef name here - friend B; // error, friend always needs class/struct/enum - friend class A; // OK - }; - - template <int> class Q {}; - typedef Q<0> R; - template class R; // error, no typedef name here - template class Q<0>; // OK - * When allocating an array with a new expression, GCC used to allow - parentheses around the type name. This is actually ill-formed and - it is now rejected: - int* a = new (int)[10]; // error, not accepted anymore - int* a = new int[10]; // OK - * When binding an rvalue of class type to a reference, the copy - constructor of the class must be accessible. For instance, consider - the following code: - class A - { - public: - A(); - - private: - A(const A&); // private copy ctor - }; - - A makeA(void); - void foo(const A&); - - void bar(void) - { - foo(A()); // error, copy ctor is not accessible - foo(makeA()); // error, copy ctor is not accessible - - A a1; - foo(a1); // OK, a1 is a lvalue - } - This might be surprising at first sight, especially since most - popular compilers do not correctly implement this rule ([12]further - details). - * When forming a pointer to member or a pointer to member function, - access checks for class visibility (public, protected, private) are - now performed using the qualifying scope of the name itself. This - is better explained with an example: - class A - { - public: - void pub_func(); - protected: - void prot_func(); - private: - void priv_func(); - }; - - class B : public A - { - public: - void foo() - { - &A::pub_func; // OK, pub_func is accessible through A - &A::prot_func; // error, cannot access prot_func through A - &A::priv_func; // error, cannot access priv_func through A - - &B::pub_func; // OK, pub_func is accessible through B - &B::prot_func; // OK, can access prot_func through B (within B) - &B::priv_func; // error, cannot access priv_func through B - } - }; - - Runtime Library (libstdc++) - - * Optimization work: - + Streamlined streambuf, filebuf, separate synched with C - Standard I/O streambuf. - + All formatted I/O now uses cached locale information. - + STL optimizations (memory/speed for list, red-black trees as - used by sets and maps). - + More use of GCC builtins. - + String optimizations (avoid contention on - increment/decrement-and-test of the reference count in the - empty-string object, constructor from input_iterators - speedup). - * Static linkage size reductions. - * Large File Support (files larger than 2 GB on 32-bit systems). - * Wide character and variable encoding filebuf work (UTF-8, Unicode). - * Generic character traits. - * Also support wchar_t specializations on Mac OS 10.3.x, FreeBSD 5.x, - Solaris 2.7 and above, AIX 5.x, Irix 6.5. - * The allocator class is now standard-conformant, and two additional - extension allocators have been added, mt_alloc and - bitmap_allocator. - * PCH support: -include bits/stdc++.h (2x compile speedup). - * Rewrote __cxa_demangle with support for C++ style allocators. - * New debug modes for STL containers and iterators. - * Testsuite rewrite: five times as many tests, plus increasingly - sophisticated tests, including I/O, MT, multi-locale, wide and - narrow characters. - * Use current versions of GNU "autotools" for build/configuration. - - Objective-C - - * The Objective-C front end has been updated to include the numerous - bug fixes and enhancements previously available only in Apple's - version of GCC. These include: - + Structured exception (@try... @catch... @finally, @throw) and - synchronization (@synchronized) support. These are accessible - via the -fobjc-exceptions switch; as of this writing, they may - only be used in conjunction with -fnext-runtime on Mac OS X - 10.3 and later. See [13]Options Controlling Objective-C - Dialect for more information. - + An overhaul of @encode logic. The C99 _Bool and C++ bool type - may now be encoded as 'B'. In addition, the back-end/codegen - dependencies have been removed. - + An overhaul of message dispatch construction, ensuring that - the various receiver types (and casts thereof) are handled - properly, and that correct diagnostics are issued. - + Support for "Zero-Link" (-fzero-link) and "Fix-and-Continue" - (-freplace-objc-classes) debugging modes, currently available - on Mac OS X 10.3 and later. See [14]Options Controlling - Objective-C Dialect for more information. - + Access to optimized runtime entry points (-fno-nil-receivers ) - on the assumption that message receivers are never nil. This - is currently available on Mac OS X 10.3 and later. See - [15]Options Controlling Objective-C Dialect for more - information. - - Java - - * Compiling a .jar file will now cause non-.class entries to be - automatically compiled as resources. - * libgcj has been ported to Darwin. - * Jeff Sturm has adapted Jan Hubicka's call graph optimization code - to gcj. - * libgcj has a new gcjlib URL type; this lets URLClassLoader load - code from shared libraries. - * libgcj has been much more completely merged with [16]GNU Classpath. - * Class loading is now much more correct; in particular the caller's - class loader is now used when that is required. - * [17]Eclipse 2.x will run out of the box using gij. - * Parts of java.nio have been implemented. Direct and indirect - buffers work, as do fundamental file and socket operations. - * java.awt has been improved, though it is still not ready for - general use. - * The HTTP protocol handler now uses HTTP/1.1 and can handle the POST - method. - * The MinGW port has matured. Enhancements include socket timeout - support, thread interruption, improved Runtime.exec() handling and - support for accented characters in filenames. - - Fortran - - * Fortran improvements are listed in the [18]Fortran documentation. - -New Targets and Target Specific Improvements - - Alpha - - * Several [19]built-in functions have been added such as - __builtin_alpha_zap to allow utilizing the more obscure - instructions of the CPU. - * Parameter passing of complex arguments has changed to match the - [20]ABI. This change is incompatible with previous GCC versions, - but does fix compatibility with the Tru64 compiler and several - corner cases where GCC was incompatible with itself. - - ARM - - * Nicolas Pitre has contributed his hand-coded floating-point support - code for ARM. It is both significantly smaller and faster than the - existing C-based implementation, even when building applications - for Thumb. The arm-elf configuration has been converted to use the - new code. - * Support for the Intel's iWMMXt architecture, a second generation - XScale processor, has been added. Enabled at run time with the - -mcpu=iwmmxt command line switch. - * A new ARM target has been added: arm-wince-pe. This is similar to - the arm-pe target, but it defaults to using the APCS32 ABI. - * The existing ARM pipeline description has been converted to the use - the [21]DFA processor pipeline model. There is not much change in - code performance, but the description is now [22]easier to - understand. - * Support for the Cirrus EP9312 Maverick floating point co-processor - added. Enabled at run time with the -mcpu=ep9312 command line - switch. Note however that the multilibs to support this chip are - currently disabled in gcc/config/arm/t-arm-elf, so if you want to - enable their production you will have to uncomment the entries in - that file. - - H8/300 - - * Support for long long has been added. - * Support for saveall attribute has been added. - * Pavel Pisa contributed hand-written 32-bit-by-32-bit division code - for H8/300H and H8S, which is much faster than the previous - implementation. - * A lot of small performance improvements. - - IA-32/AMD64 (x86-64) - - * Tuning for K8 (AMD Opteron/Athlon64) core is available via - -march=k8 and -mcpu=k8. - * Scalar SSE code generation carefully avoids reformatting penalties, - hidden dependencies and minimizes the number of uops generated on - both Intel and AMD CPUs. - * Vector MMX and SSE operands are now passed in registers to improve - performance and match the argument passing convention used by the - Intel C++ Compiler. As a result it is not possible to call - functions accepting vector arguments compiled by older GCC version. - * Conditional jump elimination is now more aggressive on modern CPUs. - * The Athlon ports has been converted to use the DFA processor - pipeline description. - * Optimization of indirect tail calls is now possible in a similar - fashion as direct sibcall optimization. - * Further small performance improvements. - * -m128bit-long-double is now less buggy. - * __float128 support in 64-bit compilation. - * Support for data structures exceeding 2GB in 64-bit mode. - * -mcpu has been renamed to -mtune. - - IA-64 - - * Tuning code for the Itanium 2 processor has been added. The - generation of code tuned for Itanium 2 (option -mtune=itanium2) is - enabled by default now. To generate code tuned for Itanium 1 the - option -mtune=itanium1 should be used. - * [23]DFA processor pipeline descriptions for the IA-64 processors - have been added. This resulted in about 3% improvement on the - SPECInt2000 benchmark for Itanium 2. - * Instruction bundling for the IA-64 processors has been rewritten - using the DFA pipeline hazard recognizer. It resulted in about 60% - compiler speedup on the SPECInt2000 C programs. - - M32R - - * Support for the M32R/2 processor has been added by Renesas. - * Support for an M32R GNU/Linux target and PIC code generation has - been added by Renesas. - - M68000 - - * Bernardo Innocenti (Develer S.r.l.) has contributed the - m68k-uclinux target, based on former work done by Paul Dale - (SnapGear Inc.). Code generation for the ColdFire processors family - has been enhanced and extended to support the MCF 53xx and MCF 54xx - cores, integrating former work done by Peter Barada (Motorola). - - MIPS - - Processor-specific changes - - * Support for the RM7000 and RM9000 processors has been added. It can - be selected using the -march compiler option and should work with - any MIPS I (mips-*) or MIPS III (mips64-*) configuration. - * Support for revision 2 of the MIPS32 ISA has been added. It can be - selected with the command-line option -march=mips32r2. - * There is a new option, -mfix-sb1, to work around certain SB-1 - errata. - - Configuration - - * It is possible to customize GCC using the following configure-time - options: - + --with-arch, which specifies the default value of the -march - option. - + --with-tune, which specifies the default value of the -mtune - option. - + --with-abi, which specifies the default ABI. - + --with-float=soft, which tells GCC to use software floating - point by default. - + --with-float=hard, which tells GCC to use hardware floating - point by default. - * A 64-bit GNU/Linux port has been added. The associated - configurations are mips64-linux-gnu and mips64el-linux-gnu. - * The 32-bit GNU/Linux port now supports Java. - * The IRIX 6 configuration now supports the o32 ABI and will build - o32 multilibs by default. This support is compatible with both - binutils and the SGI tools, but note that several features, - including debugging information and DWARF2 exception handling, are - only available when using the GNU assembler. Use of the GNU - assembler and linker (version 2.15 or above) is strongly - recommended. - * The IRIX 6 configuration now supports 128-bit long doubles. - * There are two new RTEMS-specific configurations, mips-rtems and - mipsel-rtems. - * There are two new *-elf configurations, mipsisa32r2-elf and - mipsisa32r2el-elf. - - General - - * Several [24]ABI bugs have been fixed. Unfortunately, these changes - will break binary compatibility with earlier releases. - * GCC can now use explicit relocation operators when generating - -mabicalls code. This behavior is controlled by -mexplicit-relocs - and can have several performance benefits. For example: - + It allows for more optimization of GOT accesses, including - better scheduling and redundancy elimination. - + It allows sibling calls to be implemented as jumps. - + n32 and n64 leaf functions can use a call-clobbered global - pointer instead of $28. - + The code to set up $gp can be removed from functions that - don't need it. - * A new option, -mxgot, allows the GOT to be bigger than 64k. This - option is equivalent to the assembler's -xgot option and should be - used instead of -Wa,-xgot. - * Frame pointer elimination is now supported when generating 64-bit - MIPS16 code. - * Inline block moves have been optimized to take more account of - alignment information. - * Many internal changes have been made to the MIPS port, mostly aimed - at reducing the reliance on assembler macros. - - PowerPC - - * GCC 3.4 releases have a number of fixes for PowerPC and PowerPC64 - [25]ABI incompatibilities regarding the way parameters are passed - during functions calls. These changes may result in incompatibility - between code compiled with GCC 3.3 and GCC 3.4. - - PowerPC Darwin - - * Support for shared/dylib gcc libraries has been added. It is - enabled by default on powerpc-apple-darwin7.0.0 and up. - * Libgcj is enabled by default. On systems older than - powerpc-apple-darwin7.0.0 you need to install dlcompat. - * 128-bit IBM extended precision format support added for long - double. - - PowerPC64 GNU/Linux - - * By default, PowerPC64 GNU/Linux now uses natural alignment of - structure elements. The old four byte alignment for double, with - special rules for a struct starting with a double, can be chosen - with -malign-power. This change may result in incompatibility - between code compiled with GCC 3.3 and GCC 3.4. - * -mabi=altivec is now the default rather than -mabi=no-altivec. - * 128-bit IBM extended precision format support added for long - double. - - S/390 and zSeries - - * New command-line options allow to specify the intended execution - environment for generated code: - + -mesa/-mzarch allows to specify whether to generate code - running in ESA/390 mode or in z/Architecture mode (this is - applicable to 31-bit code only). - + -march allows to specify a minimum processor architecture - level (g5, g6, z900, or z990). - + -mtune allows to specify which processor to tune for. - * It is possible to customize GCC using the following configure-time - options: - + --with-mode, which specifies whether to default to assuming - ESA/390 or z/Architecture mode. - + --with-arch, which specifies the default value of the -march - option. - + --with-tune, which specifies the default value of the -mtune - option. - * Support for the z990 processor has been added, and can be selected - using -march=z990 or -mtune=z990. This includes instruction - scheduling tuned for the superscalar instruction pipeline of the - z990 processor as well as support for all new instructions provided - by the long-displacement facility. - * Support to generate 31-bit code optimized for zSeries processors - (running in ESA/390 or in z/Architecture mode) has been added. This - can be selected using -march=z900 and -mzarch respectively. - * Instruction scheduling for the z900 and z990 processors now uses - the DFA pipeline hazard recognizer. - * GCC no longer generates code to maintain a stack backchain, - previously used to generate stack backtraces for debugging - purposes. As replacement that does not incur runtime overhead, - DWARF-2 call frame information is provided by GCC; this is - supported by GDB 6.1. The old behavior can be restored using the - -mbackchain option. - * The stack frame size of functions may now exceed 2 GB in 64-bit - code. - * A port for the 64-bit IBM TPF operating system has been added; the - configuration is s390x-ibm-tpf. This configuration is supported as - cross-compilation target only. - * Various changes to improve the generated code have been - implemented, including: - + GCC now uses the MULTIPLY AND ADD and MULTIPLY AND SUBTRACT - instructions to significantly speed up many floating-point - applications. - + GCC now uses the ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL - WITH BORROW instructions to speed up long long arithmetic. - + GCC now uses the SEARCH STRING instruction to implement - strlen(). - + In many cases, function call overhead for 31-bit code has been - reduced by placing the literal pool after the function code - instead of after the function prolog. - + Register 14 is no longer reserved in 64-bit code. - + Handling of global register variables has been improved. - - SPARC - - * The option -mflat is deprecated. - * Support for large (> 2GB) frames has been added to the 64-bit port. - * Several [26]ABI bugs have been fixed. Unfortunately, these changes - will break binary compatibility with earlier releases. - * The default debugging format has been switched from STABS to - DWARF-2 for 32-bit code on Solaris 7 and later. DWARF-2 is already - the default debugging format for 64-bit code on Solaris. - - SuperH - - * Support for the SH2E processor has been added. Enabled at run time - with the -m2e command line switch, or at configure time by - specifying sh2e as the machine part of the target triple. - - V850 - - * Support for the Mitsubishi V850E1 processor has been added. This is - a variant of the V850E processor with some additional debugging - instructions. - - Xtensa - - * Several ABI bugs have been fixed. Unfortunately, these changes - break binary compatibility with earlier releases. - + For big-endian processors, the padding of aggregate return - values larger than a word has changed. If the size of an - aggregate return value is not a multiple of 32 bits, previous - versions of GCC inserted padding in the most-significant bytes - of the first return value register. Aggregates larger than a - word are now padded in the least-significant bytes of the last - return value register used. Aggregates smaller than a word are - still padded in the most-significant bytes. The return value - padding has not changed for little-endian processors. - + Function arguments with 16-byte alignment are now properly - aligned. - + The implementation of the va_list type has changed. A va_list - value created by va_start from a previous release cannot be - used with va_arg from this release, or vice versa. - * More processor configuration options for Xtensa processors are - supported: - + the ABS instruction is now optional; - + the ADDX* and SUBX* instructions are now optional; - + an experimental CONST16 instruction can be used to synthesize - constants instead of loading them from constant pools. - These and other Xtensa processor configuration options can no - longer be enabled or disabled by command-line options; the - processor configuration must be specified by the xtensa-config.h - header file when building GCC. Additionally, the - -mno-serialize-volatile option is no longer supported. - -Obsolete Systems - - Support for a number of older systems has been declared obsolete in GCC - 3.4. Unless there is activity to revive them, the next release of GCC - will have their sources permanently removed. - - All configurations of the following processor architectures have been - declared obsolete: - * Mitsubishi D30V, d30v-* - * AT&T DSP1600 and DSP1610, dsp16xx-* - * Intel 80960, i960 - - Also, some individual systems have been obsoleted: - * ARM Family - + Support for generating code for operation in APCS/26 mode - (-mapcs-26). - * IBM ESA/390 - + "Bigfoot" port, i370-*. (The other port, s390-*, is actively - maintained and supported.) - * Intel 386 family - + MOSS, i?86-moss-msdos and i?86-*-moss* - + NCR 3000 running System V r.4, i?86-ncr-sysv4* - + FreeBSD with a.out object format, i?86-*-freebsd*aout* and - i?86-*-freebsd2* - + GNU/Linux with a.out object format, i?86-linux*aout* - + GNU/Linux with libc5, a.k.a. glibc1, i?86-linux*libc1* - + Interix versions before Interix 3, i?86-*-interix - + Mach microkernel, i?86-mach* - + SCO UnixWare with UDK, i?86-*-udk* - + Generic System V releases 1, 2, and 3, i?86-*-sysv[123]* - + VSTa microkernel, i386-*-vsta - * Motorola M68000 family - + HPUX, m68k-hp-hpux* and m68000-hp-hpux* - + NetBSD with a.out object format (before NetBSD 1.4), - m68k-*-*-netbsd* except m68k-*-*-netbsdelf* - + Generic System V r.4, m68k-*-sysv4* - * VAX - + Generic VAX, vax-*-* (This is generic VAX only; we have not - obsoleted any VAX triples for specific operating systems.) - -Documentation improvements - -Other significant improvements - - * The build system has undergone several significant cleanups. - Subdirectories will only be configured if they are being built, and - all subdirectory configures are run from the make command. The top - level has been autoconfiscated. - * Building GCC no longer writes to its source directory. This should - help those wishing to share a read-only source directory over NFS - or build from a CD. The exceptions to this feature are if you - configure with either --enable-maintainer-mode or - --enable-generated-files-in-srcdir. - * The -W warning option has been renamed to -Wextra, which is more - easily understood. The older spelling will be retained for - backwards compatibility. - * Substantial improvements in compile time have been made, - particularly for non-optimizing compilations. - __________________________________________________________________ - -GCC 3.4.0 - - Bug Fixes - - A vast number of bugs have been fixed in 3.4.0, too many to publish a - complete list here. [27]Follow this link to query the Bugzilla database - for the list of over 900 bugs fixed in 3.4.0. This is the list of all - bugs marked as resolved and fixed in 3.4.0 that are not flagged as 3.4 - regressions. - __________________________________________________________________ - -GCC 3.4.1 - - Bug Fixes - - This section lists the problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.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). - - Bootstrap failures - - * [28]10129 Ada bootstrap fails on PPC-Darwin - invalid assembler - emitted - PIC related - * [29]14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf - * [30]14760 A bug in configure.in prevents using both - --program-suffix and --program-prefix - * [31]14671 [hppa64] bootstrap fails: ICE in - save_call_clobbered_regs, in caller_save.c - * [32]15093 [alpha][Java] make bootstrap fails to configure libffi on - Alpha - * [33]15178 Solaris 9/x86 fails linking after stage 3 - - Multi-platform internal compiler errors (ICEs) - - * [34]12753 (preprocessor) Memory corruption in preprocessor on bad - input - * [35]13985 ICE in gcc.c-torture/compile/930621-1.c - * [36]14810 (c++) tree check failures with invalid code involving - templates - * [37]14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in - cp/parser.c - * [38]15044 (c++) ICE on syntax error, template header - * [39]15057 (c++) Compiling of conditional value throw constructs - cause a segmentation violation - * [40]15064 (c++) typeid of template parameter gives ICE - * [41]15142 (c++) ICE when passing a string where a char* is expected - in a throw statement - * [42]15159 ICE in rtl_verify_flow_info_1 - * [43]15165 (c++) ICE in instantiate_template - * [44]15193 Unary minus using pointer to V4SF vector causes - -fforce-mem to exhaust all memory - * [45]15209 (c++) Runs out of memory with packed structs - * [46]15227 (c++) Trouble with invalid function definition - * [47]15285 (c++) instantiate_type ICE when forming pointer to - template function - * [48]15299 (c++) ICE in resolve_overloaded_unification - * [49]15329 (c++) ICE on constructor of member template - * [50]15550 ICE in extract_insn, in recog.c - * [51]15554 (c++) ICE in tsubst_copy, in cp/pt.c - * [52]15640 (c++) ICE on invalid code in arg_assoc, in - cp/name-lookup.c - * [53]15666 [unit-at-a-time] Gcc abort on valid code - * [54]15696 (c++) ICE with bad pointer-to-member code - * [55]15701 (c++) ICE with friends and template template parameter - * [56]15761 ICE in do_SUBST, in combine.c - * [57]15829 (c++) ICE on Botan-1.3.13 due to -funroll-loops - - Ada - - * [58]14538 All RTEMS targets broken for gnat - - C front end - - * [59]12391 missing warning about assigning to an incomplete type - * [60]14649 atan(1.0) should not be a constant expression - * [61]15004 [unit-at-a-time] no warning for unused paramater in - static function - * [62]15749 --pedantic-errors behaves differently from --pedantic - with C-compiler on GNU/Linux - - C++ compiler and library - - * [63]10646 non-const reference is incorrectly matched in a "const T" - partial specialization - * [64]12077 wcin.rdbuf()->in_avail() return value too high - * [65]13598 enc_filebuf doesn't work - * [66]14211 const_cast returns lvalue but should be rvalue - * [67]14220 num_put::do_put() undesired float/double behavior - * [68]14245 problem with user-defined allocators in std::basic_string - * [69]14340 libstdc++ Debug mode: failure to convert iterator to - const_iterator - * [70]14600 __gnu_cxx::stdio_sync_filebuf should expose internal - FILE* - * [71]14668 no warning anymore for reevaluation of declaration - * [72]14775 LFS (large file support) tests missing - * [73]14821 Duplicate namespace alias declaration should not conflict - * [74]14930 Friend declaration ignored - * [75]14932 cannot use offsetof to get offsets of array elements in - g++ 3.4.0 - * [76]14950 [non unit-at-a-time] always_inline does not mix with - templates and -O0 - * [77]14962 g++ ignores #pragma redefine_extname - * [78]14975 Segfault on low-level write error during imbue - * [79]15002 Linewise stream input is unusably slow (std::string slow) - * [80]15025 compiler accepts redeclaration of template as - non-template - * [81]15046 [arm] Math functions misdetected by cross configuration - * [82]15069 a bit test on a variable of enum type is miscompiled - * [83]15074 g++ -lsupc++ still links against libstdc++ - * [84]15083 spurious "statement has no effect" warning - * [85]15096 parse error with templates and pointer to const member - * [86]15287 combination of operator[] and operator .* fails in - templates - * [87]15317 __attribute__ unused in first parameter of constructor - gives error - * [88]15337 sizeof on incomplete type diagnostic - * [89]15361 bitset<>::_Find_next fails - * [90]15412 _GLIBCXX_ symbols symbols defined and used in different - namespaces - * [91]15427 valid code results in incomplete type error - * [92]15471 Incorrect member pointer offsets in anonymous - structs/unions - * [93]15503 nested template problem - * [94]15507 compiler hangs while laying out union - * [95]15542 operator & and template definitions - * [96]15565 SLES9: leading + sign for unsigned int with showpos - * [97]15625 friend defined inside a template fails to find static - function - * [98]15629 Function templates, overloads, and friend name injection - * [99]15742 'noreturn' attribute ignored in method of template - functions. - * [100]15775 Allocator::pointer consistently ignored - * [101]15821 Duplicate namespace alias within namespace rejected - * [102]15862 'enum yn' fails (confict with undeclared builtin) - * [103]15875 rejects pointer to member in template - * [104]15877 valid code using templates and anonymous enums is - rejected - * [105]15947 Puzzling error message for wrong destructor declaration - in template class - * [106]16020 cannot copy __gnu_debug::bitset - * [107]16154 input iterator concept too restrictive - * [108]16174 deducing top-level consts - - Java - - * [109]14315 Java compiler is not parallel make safe - - Fortran - - * [110]15151 [g77] incorrect logical i/o in 64-bit mode - - Objective-C - - * [111]7993 private variables cannot be shadowed in subclasses - - Optimization bugs - - * [112]15228 useless copies of floating point operands - * [113]15345 [non-unit-at-a-time] unreferenced nested inline - functions not optimized away - * [114]15945 Incorrect floating point optimization - * [115]15526 ftrapv aborts on 0 * (-1) - * [116]14690 Miscompiled POOMA tests - * [117]15112 GCC generates code to write to unchanging memory - - Preprocessor - - * [118]15067 Minor glitch in the source of cpp - - Main driver program bugs - - * [119]1963 collect2 interprets -oldstyle_liblookup as -o - ldstyle_liblookup - - x86-specific (Intel/AMD) - - * [120]15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND* - section} - - HPPA-specific - - * [121]14782 GCC produces an unaligned data access at -O2 - * [122]14828 FAIL: gcc.c-torture/execute/20030408-1.c execution, -O2 - * [123]15202 ICE in reload_cse_simplify_operands, in postreload.c - - IA64-specific - - * [124]14610 __float80 constants incorrectly emitted - * [125]14813 init_array sections are initialized in the wrong order - * [126]14857 GCC segfault on duplicated asm statement - * [127]15598 Gcc 3.4 ICE on valid code - * [128]15653 Gcc 3.4 ICE on valid code - - MIPS-specific - - * [129]15189 wrong filling of delay slot with -march=mips1 -G0 - -mno-split-addresses -mno-explicit-relocs - * [130]15331 Assembler error building gnatlib on IRIX 6.5 with GNU as - 2.14.91 - * [131]16144 Bogus reference to __divdf3 when -O1 - * [132]16176 Miscompilation of unaligned data in MIPS backend - - PowerPC-specific - - * [133]11591 ICE in gcc.dg/altivec-5.c - * [134]12028 powerpc-eabispe produces bad sCOND operation - * [135]14478 rs6000 geu/ltu patterns generate incorrect code - * [136]14567 long double and va_arg complex args - * [137]14715 Altivec stack layout may overlap gpr save with stack - temps - * [138]14902 (libstdc++) Stream checking functions fail when -pthread - option is used. - * [139]14924 Compiler ICE on valid code - * [140]14960 -maltivec affects vector return with -mabi=no-altivec - * [141]15106 vector varargs failure passing from altivec to - non-altivec code for -m32 - * [142]16026 ICE in function.c:4804, assign_parms, when -mpowerpc64 & - half-word operation - * [143]15191 -maltivec -mabi=no-altivec results in mis-aligned lvx - and stvx - * [144]15662 Segmentation fault when an exception is thrown - even if - try and catch are specified - - s390-specific - - * [145]15054 Bad code due to overlapping stack temporaries - - SPARC-specific - - * [146]15783 ICE with union assignment in 64-bit mode - * [147]15626 GCC 3.4 emits "ld: warning: relocation error: - R_SPARC_UA32" - - x86-64-specific - - * [148]14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64 - * [149]14723 Backported -march=nocona from mainline - * [150]15290 __float128 failed to pass to function properly - - Cygwin/Mingw32-specific - - * [151]15250 Option -mms-bitfields support on GCC 3.4 is not - conformant to MS layout - * [152]15551 -mtune=pentium4 -O2 with sjlj EH breaks stack probe - worker on windows32 targets - - Bugs specific to embedded processors - - * [153]8309 [m68k] -m5200 produces erroneous SImode set of short - varaible on stack - * [154]13250 [SH] Gcc code for rotation clobbers the register, but - gcc continues to use the register as if it was not clobbered - * [155]13803 [coldfire] movqi operand constraints too restrictivefor - TARGET_COLDFIRE - * [156]14093 [SH] ICE for code when using -mhitachi option in SH - * [157]14457 [m6811hc] ICE with simple c++ source - * [158]14542 [m6811hc] ICE on simple source - * [159]15100 [SH] cc1plus got hang-up on - libstdc++-v3/testsuite/abi_check.cc - * [160]15296 [CRIS] Delayed branch scheduling causing invalid code on - cris-* - * [161]15396 [SH] ICE with -O2 -fPIC - * [162]15782 [coldfire] m68k_output_mi_thunk emits wrong code for - ColdFire - - Testsuite problems (compiler not affected) - - * [163]11610 libstdc++ testcases 27_io/* don't work properly remotely - * [164]15488 (libstdc++) possibly insufficient file permissions for - executing test suite - * [165]15489 (libstdc++) testsuite_files determined incorrectly - - Documentation bugs - - * [166]13928 (libstdc++) no whatis info in some man pages generated - by doxygen - * [167]14150 Ada documentation out of date - * [168]14949 (c++) Need to document method visibility changes - * [169]15123 libstdc++-doc: Allocators.3 manpage is empty - __________________________________________________________________ - -GCC 3.4.2 - - Bug Fixes - - This section lists the problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.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). - - Bootstrap failures and issues - - * [170]16469 [mips-sgi-irix5.3] bootstrap fails in - libstdc++-v3/testsuite - * [171]16344 [hppa-linux-gnu] libstdc++'s PCH built by - profiledbootstrap does not work with the built compiler - * [172]16842 [Solaris/x86] mkheaders can not find mkheaders.conf - - Multi-platform internal compiler errors (ICEs) - - * [173]12608 (c++) ICE: expected class 't', have 'x' (error_mark) in - cp_parser_class_specifier, in cp/parser.c - * [174]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c - * [175]15461 (c++) ICE due to NRV and inlining - * [176]15890 (c++) ICE in c_expand_expr, in c-common.c - * [177]16180 ICE: segmentation fault in RTL optimization - * [178]16224 (c++) ICE in write_unscoped_name (template/namespace) - * [179]16408 ICE: in delete_insn, in cfgrtl.c - * [180]16529 (c++) ICE for: namespace-alias shall not be declared as - the name of any other entity - * [181]16698 (c++) ICE with exceptions and declaration of __cxa_throw - * [182]16706 (c++) ICE in finish_member_declaration, in - cp/semantics.c - * [183]16810 (c++) Legal C++ program with cast gives ICE in - build_ptrmemfunc - * [184]16851 (c++) ICE when throwing a comma expression - * [185]16870 (c++) Boost.Spirit causes ICE in tsubst, in cp/pt.c - * [186]16904 (c++) ICE in finish_class_member_access_expr, in - cp/typeck.c - * [187]16905 (c++) ICE (segfault) with exceptions - * [188]16964 (c++) ICE in cp_parser_class_specifier due to - redefinition - * [189]17068 (c++) ICE: tree check: expected class 'd', have 'x' - (identifier_node) in dependent_template_p, in cp/pt.c - - Preprocessor bugs - - * [190]16366 Preprocessor option -remap causes memory corruption - - Optimization - - * [191]15345 unreferenced nested inline functions not optimized away - * [192]16590 Incorrect execution when compiling with -O2 - * [193]16693 Bitwise AND is lost when used within a cast to an enum - of the same precision - * [194]17078 Jump into if(0) substatement fails - - Problems in generated debug information - - * [195]13956 incorrect stabs for nested local variables - - C front end bugs - - * [196]16684 GCC should not warn about redundant redeclarations of - built-ins - - C++ compiler and library - - * [197]12658 Thread safety problems in locale::global() and - locale::locale() - * [198]13092 g++ accepts invalid pointer-to-member conversion - * [199]15320 Excessive memory consumption - * [200]16246 Incorrect template argument deduction - * [201]16273 Memory exhausted when using nested classes and virtual - functions - * [202]16401 ostringstream in gcc 3.4.x very slow for big data - * [203]16411 undefined reference to - __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> - >::file() - * [204]16489 G++ incorrectly rejects use of a null constant integral - expression as a null constant pointer - * [205]16618 offsetof fails with constant member - * [206]16637 syntax error reported for valid input code - * [207]16717 __attribute__((constructor)) broken in C++ - * [208]16813 compiler error in DEBUG version of range insertion - std::map::insert - * [209]16853 pointer-to-member initialization from incompatible one - accepted - * [210]16889 ambiguity is not detected - * [211]16959 Segmentation fault in ios_base::sync_with_stdio - - Java compiler and library - - * [212]7587 direct threaded interpreter not thread-safe - * [213]16473 ServerSocket accept() leaks file descriptors - * [214]16478 Hash synchronization deadlock with finalizers - - Alpha-specific - - * [215]10695 ICE in dwarf2out_frame_debug_expr, in dwarf2out.c - * [216]16974 could not split insn (ice in final_scan_insn, in - final.c) - - x86-specific - - * [217]16298 ICE in output_operand - * [218]17113 ICE with SSE2 intrinsics - - x86-64 specific - - * [219]14697 libstdc++ couldn't find 32bit libgcc_s - - MIPS-specific - - * [220]15869 [mips64] No NOP after LW (with -mips1 -O0) - * [221]16325 [mips64] value profiling clobbers gp on mips - * [222]16357 [mipsisa64-elf] ICE copying 7 bytes between extern - char[]s - * [223]16380 [mips64] Use of uninitialised register after dbra - conversion - * [224]16407 [mips64] Unaligned access to local variables - * [225]16643 [mips64] verify_local_live_at_start ICE after - crossjumping & cfgcleanup - - ARM-specific - - * [226]15927 THUMB -O2: strength-reduced iteration variable ends up - off by 1 - * [227]15948 THUMB: ICE with non-commutative cbranch - * [228]17019 THUMB: bad switch statement in md code for - addsi3_cbranch_scratch - - IA64-specific - - * [229]16130 ICE on valid code: in bundling, in config/ia64/ia64.c - (-mtune=merced) - * [230]16142 ICE on valid code: in bundling, in config/ia64/ia64.c - (-mtune=itanium) - * [231]16278 Gcc failed to build Linux kernel with -mtune=merced - * [232]16414 ICE on valid code: typo in comparison of asm_noperands - result - * [233]16445 ICE on valid code: don't count ignored insns - * [234]16490 ICE (segfault) while compiling with -fprofile-use - * [235]16683 ia64 does not honor SUBTARGET_EXTRA_SPECS - - PowerPC-specific - - * [236]16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x - * [237]16239 ICE on ppc64 (mozilla 1.7 compile, -O1 -fno-exceptions - issue) - - SPARC-specific - - * [238]16199 ICE while compiling apache 2.0.49 - * [239]16416 -m64 doesn't imply -mcpu=v9 anymore - * [240]16430 ICE when returning non-C aggregates larger than 16 bytes - - Bugs specific to embedded processors - - * [241]16379 [m32r] can't output large model function call of memcpy - * [242]17093 [m32r] ICE with -msdata=use -O0 - * [243]17119 [m32r] ICE at switch case 0x8000 - - DJGPP-specific - - * [244]15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp - - Alpha Tru64-specific - - * [245]16210 libstdc++ gratuitously omits "long long" I/O - - Testsuite, documentation issues (compiler is not affected): - - * [246]15488 (libstdc++) possibly insufficient file permissions for - executing test suite - * [247]16250 ada/doctools runs makeinfo even in release tarball - __________________________________________________________________ - -GCC 3.4.3 - - This is the [248]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.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). - - Bootstrap failures - - * [249]17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1 - * [250]17850 [arm-elf] bootstrap failure - libstdc++ uses strtold - when undeclared - - Internal compiler errors (ICEs) affecting multiple platforms - - * [251]13948 (java) GCJ segmentation fault while compiling GL4Java - .class files - * [252]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c - * [253]16301 (c++) ICE when "strong" attribute is attached to a using - directive - * [254]16566 ICE with flexible arrays - * [255]17023 ICE with nested functions in parameter declaration - * [256]17027 ICE with noreturn function in loop at -O2 - * [257]17524 ICE in grokdeclarator, in cp/decl.c - * [258]17826 (c++) ICE in cp_tree_equal - - C and optimization bugs - - * [259]15526 -ftrapv aborts on 0 * (-1) - * [260]16999 #ident stopped working - * [261]17503 quadratic behaviour in invalid_mode_change_p - * [262]17581 Long long arithmetic fails inside a switch/case - statement when compiled with -O2 - * [263]18129 -fwritable-strings doesn't work - - C++ compiler and library bugs - - * [264]10975 incorrect initial ostringstream::tellp() - * [265]11722 Unbuffered filebuf::sgetn is slow - * [266]14534 Unrecognizing static function as a template parameter - when its return value is also templated - * [267]15172 Copy constructor optimization in aggregate - initialization - * [268]15786 Bad error message for frequently occuring error. - * [269]16162 Rejects valid member-template-definition - * [270]16612 empty basic_strings can't live in shared memory - * [271]16715 std::basic_iostream is instantiated when used, even - though instantiations are already contained in libstdc++ - * [272]16848 code in /ext/demangle.h appears broken - * [273]17132 GCC fails to eliminate function template specialization - when argument deduction fails - * [274]17259 One more _S_leaf incorrectly qualified with _RopeRep:: - in ropeimpl.h - * [275]17327 use of `enumeral_type' in template type unification - * [276]17393 "unused variable '._0'" warning with -Wall - * [277]17501 Confusion with member templates - * [278]17537 g++ not passing -lstdc++ to linker when all command line - arguments are libraries - * [279]17585 usage of unqualified name of static member from within - class not allowed - * [280]17821 Poor diagnostic for using "." instead of "->" - * [281]17829 wrong error: call of overloaded function is ambiguous - * [282]17851 Misleading diagnostic for invalid function declarations - with undeclared types - * [283]17976 Destructor is called twice - * [284]18020 rejects valid definition of enum value in template - * [285]18093 bogus conflict in namespace aliasing - * [286]18140 C++ parser bug when using >> in templates - - Fortran - - * [287]17541 data statements with double precision constants fail - - x86-specific - - * [288]17853 -O2 ICE for MMX testcase - - SPARC-specific - - * [289]17245 ICE compiling gsl-1.5 statistics/lag1.c - - Darwin-specific - - * [290]17167 FATAL:Symbol L_foo$stub already defined. - - AIX-specific - - * [291]17277 could not catch an exception when specified -maix64 - - Solaris-specific - - * [292]17505 <cmath> calls acosf(), ceilf(), and other functions - missing from system libraries - - HP/UX specific: - - * [293]17684 /usr/ccs/bin/ld: Can't create libgcc_s.sl - - ARM-specific - - * [294]17384 ICE with mode attribute on structures - - MIPS-specific - - * [295]17770 No NOP after LWL with -mips1 - - Other embedded target specific - - * [296]11476 [arc-elf] gcc ICE on newlib's vfprintf.c - * [297]14064 [avr-elf] -fdata-sections triggers ICE - * [298]14678 [m68hc11-elf] gcc ICE - * [299]15583 [powerpc-rtems] powerpc-rtems lacks __USE_INIT_FINI__ - * [300]15790 [i686-coff] Alignment error building gcc with i686-coff - target - * [301]15886 [SH] Miscompilation with -O2 -fPIC - * [302]16884 [avr-elf] [fweb related] bug while initializing - variables - - Bugs relating to debugger support - - * [303]13841 missing debug info for _Complex function arguments - * [304]15860 [big-endian targets] No DW_AT_location debug info is - emitted for formal arguments to a function that uses "register" - qualifiers - - Testsuite issues (compiler not affected) - - * [305]17465 Testsuite in libffi overrides LD_LIBRARY_PATH - * [306]17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH - * [307]18138 [mips-sgi-irix6.5] libgcc_s.so.1 not found by 64-bit - testsuite - - Documentation - - * [308]15498 typo in gcc manual: non-existing locale example en_UK, - should be en_GB - * [309]15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap: - document broken shell - * [310]16406 USE_LD_AS_NEEDED undocumented - __________________________________________________________________ - -GCC 3.4.4 - - This is the [311]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.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). - __________________________________________________________________ - -GCC 3.4.5 - - This is the [312]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.4.5 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - Bootstrap issues - - * [313]24688 sco_math fixincl breaks math.h - - C compiler bugs - - * [314]17188 struct Foo { } redefinition - * [315]20187 wrong code for ((unsigned char)(unsigned long - long)((a?a:1)&(a*b)))?0:1) - * [316]21873 infinite warning loop on bad array initializer - * [317]21899 enum definition accepts values to be overriden - * [318]22061 ICE in find_function_data, in function.c - * [319]22308 Failure to diagnose violation of constraint 6.516p2 - * [320]22458 ICE on missing brace - * [321]22589 ICE casting to long long - * [322]24101 Segfault with preprocessed source - - C++ compiler and library bugs - - * [323]10611 operations on vector mode not recognized in C++ - * [324]13377 unexpected behavior of namespace usage directive - * [325]16002 Strange error message with new parser - * [326]17413 local classes as template argument - * [327]17609 spurious error message after using keyword - * [328]17618 ICE in cp_convert_to_pointer, in cp/cvt.c - * [329]18124 ICE with invalid template template parameter - * [330]18155 typedef in template declaration not rejected - * [331]18177 ICE with const_cast for undeclared variable - * [332]18368 C++ error message regression - * [333]16378 ICE when returning a copy of a packed member - * [334]18466 int ::i; accepted - * [335]18512 ICE on invalid usage of template base class - * [336]18454 ICE when returning undefined type - * [337]18738 typename not allowed with non-dependent qualified name - * [338]18803 rejects access to operator() in template - * [339]19004 ICE in uses_template_parms, in cp/pt.c - * [340]19208 Spurious error about variably modified type - * [341]18253 bad error message / ICE for invalid template parameter - * [342]19608 ICE after friend function definition in local class - * [343]19884 ICE on explicit instantiation of a non-template - constructor - * [344]20153 ICE when C++ template function contains anonymous union - * [345]20563 Infinite loop in diagnostic (and ice after error - message) - * [346]20789 ICE with incomplete type in template - * [347]21336 Internal compiler error when using custom new operators - * [348]21768 ICE in error message due to violation of coding - conventions - * [349]21853 constness of pointer to data member ignored - * [350]21903 Default argument of template function causes a - compile-time error - * [351]21983 multiple diagnostics - * [352]21987 New testsuite failure - g++.dg/warn/conversion-function-1.C - * [353]22153 ICE on invalid template specialization - * [354]22172 Internal compiler error, seg fault. - * [355]21286 filebuf::xsgetn vs pipes - * [356]22233 ICE with wrong number of template parameters - * [357]22508 ICE after invalid operator new - * [358]22545 ICE with pointer to class member & user defined - conversion operator - * [359]23528 Wrong default allocator in ext/hash_map - * [360]23550 char_traits requirements/1.cc test bad math - * [361]23586 Bad diagnostic for invalid namespace-name - * [362]23624 ICE in invert_truthvalue, in fold-const.c - * [363]23639 Bad error message: not a member of '<declaration error>' - * [364]23797 ICE on typename outside template - * [365]23965 Bogus error message: no matching function for call to - 'foo(<type error>)' - * [366]24052 &#`label_decl' not supported by dump_expr#<expression - error> - * [367]24580 virtual base class cause exception not to be caught - - Problems in generated debug information - - * [368]24267 Bad DWARF for altivec vectors - - Optimizations issues - - * [369]17810 ICE in verify_local_live_at_start - * [370]17860 Wrong generated code for loop with varying bound - * [371]21709 ICE on compile-time complex NaN - * [372]21964 broken tail call at -O2 or more - * [373]22167 Strange optimization bug when using -Os - * [374]22619 Compilation failure for real_const_1.f and - real_const_2.f90 - * [375]23241 Invalid code generated for comparison of uchar to 255 - * [376]23478 Miscompilation due to reloading of a var that is also - used in EH pad - * [377]24470 segmentation fault in cc1plus when compiling with -O - * [378]24950 ICE in operand_subword_force - - Precompiled headers problems - - * [379]14400 Cannot compile qt-x11-free-3.3.0 - * [380]14940 PCH largefile test fails on various platforms - - Preprocessor bugs - - * [381]20239 ICE on empty preprocessed input - * [382]15220 "gcc -E -MM -MG" reports missing system headers in - source directory - - Testsuite issues - - * [383]19275 gcc.dg/20020919-1.c fails with -fpic/-fPIC on - i686-pc-linux-gnu - - Alpha specific - - * [384]21888 bootstrap failure with linker relaxation enabled - - ARM specific - - * [385]15342 [arm-linux]: ICE in verify_local_live_at_start - * [386]23985 Memory aliasing information incorrect in inlined memcpy - - ColdFile specific - - * [387]16719 Illegal move of byte into address register causes - compiler to ICE - - HPPA specific - - * [388]21723 ICE while building libgfortran - * [389]21841 -mhp-ld/-mgnu-ld documentation - - IA-64 specific - - * [390]23644 IA-64 hardware models and configuration options - documentation error - * [391]24718 Shared libgcc not used for linking by default - - M68000 specific - - * [392]18421 ICE in reload_cse_simplify_operands, in postreload.c - - MIPS specific - - * [393]20621 ICE in change_address_1, in emit-rtl.c - - PowerPC and PowerPC64 specific - - * [394]18583 error on valid code: const - __attribute__((altivec(vector__))) doesn't work in arrays - * [395]20191 ICE in reload_cse_simplify_operands - * [396]22083 AIX: TARGET_C99_FUNCTIONS is wrongly defined - * [397]23070 CALL_V4_CLEAR_FP_ARGS flag not properly set - * [398]23404 gij trashes args of functions with more than 8 fp args - * [399]23539 C & C++ compiler generating misaligned references - regardless of compiler flags - * [400]24102 floatdisf2_internal2 broken - * [401]24465 -mminimal-toc miscompilation of __thread vars - - Solaris specific - - * [402]19933 Problem with define of HUGE_VAL in math_c99 - * [403]21889 Native Solaris assembler cannot grok DTP-relative debug - symbols - - SPARC specific - - * [404]19300 PCH failures on sparc-linux - * [405]20301 Assembler labels have a leading "-" - * [406]20673 C PCH testsuite assembly comparison failure - - x86 and x86_64 specific - - * [407]18582 ICE with arrays of type V2DF - * [408]19340 Compilation SEGFAULTs with -O1 -fschedule-insns2 - -fsched2-use-traces - * [409]21716 ICE in reg-stack.c's swap_rtx_condition - * [410]24315 amd64 fails -fpeephole2 - __________________________________________________________________ - -GCC 3.4.6 - - This is the [411]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.4.6 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - - For questions related to the use of GCC, please consult these web - pages and the [412]GCC manuals. If that fails, the - [413]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [414]gcc@gcc.gnu.org. All of [415]our lists have public - archives. - - Copyright (C) [416]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [417]maintained by the GCC team. Last modified - 2012-11-02[418]. - -References - - 1. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6 - 2. http://gcc.gnu.org/gcc-3.4/changes.html#cplusplus - 3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems - 4. http://gcc.gnu.org/gcc-3.4/changes.html#obsolete_systems - 5. http://gcc.gnu.org/gcc-3.4/mips-abi.html - 6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html - 7. http://www.boost.org/ - 8. http://gcc.gnu.org/PR11953 - 9. http://gcc.gnu.org/PR8361 - 10. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins - 11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209 - 12. http://gcc.gnu.org/bugs/#cxx_rvalbind - 13. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html - 14. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html - 15. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html - 16. http://www.gnu.org/software/classpath/ - 17. http://www.eclipse.org/ - 18. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html - 19. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html - 20. http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51A_HTML/ARH9MBTE/DTMNPLTN.HTM#normal-argument-list-structure - 21. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html - 22. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Comparison-of-the-two-descriptions.html - 23. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html - 24. http://gcc.gnu.org/gcc-3.4/mips-abi.html - 25. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html - 26. http://gcc.gnu.org/gcc-3.4/sparc-abi.html - 27. http://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=%5C%5B3%5C.4.*%5BRr%5Degression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED - 28. http://gcc.gnu.org/PR10129 - 29. http://gcc.gnu.org/PR14576 - 30. http://gcc.gnu.org/PR14760 - 31. http://gcc.gnu.org/PR14671 - 32. http://gcc.gnu.org/PR15093 - 33. http://gcc.gnu.org/PR15178 - 34. http://gcc.gnu.org/PR12753 - 35. http://gcc.gnu.org/PR13985 - 36. http://gcc.gnu.org/PR14810 - 37. http://gcc.gnu.org/PR14883 - 38. http://gcc.gnu.org/PR15044 - 39. http://gcc.gnu.org/PR15057 - 40. http://gcc.gnu.org/PR15064 - 41. http://gcc.gnu.org/PR15142 - 42. http://gcc.gnu.org/PR15159 - 43. http://gcc.gnu.org/PR15165 - 44. http://gcc.gnu.org/PR15193 - 45. http://gcc.gnu.org/PR15209 - 46. http://gcc.gnu.org/PR15227 - 47. http://gcc.gnu.org/PR15285 - 48. http://gcc.gnu.org/PR15299 - 49. http://gcc.gnu.org/PR15329 - 50. http://gcc.gnu.org/PR15550 - 51. http://gcc.gnu.org/PR15554 - 52. http://gcc.gnu.org/PR15640 - 53. http://gcc.gnu.org/PR15666 - 54. http://gcc.gnu.org/PR15696 - 55. http://gcc.gnu.org/PR15701 - 56. http://gcc.gnu.org/PR15761 - 57. http://gcc.gnu.org/PR15829 - 58. http://gcc.gnu.org/PR14538 - 59. http://gcc.gnu.org/PR12391 - 60. http://gcc.gnu.org/PR14649 - 61. http://gcc.gnu.org/PR15004 - 62. http://gcc.gnu.org/PR15749 - 63. http://gcc.gnu.org/PR10646 - 64. http://gcc.gnu.org/PR12077 - 65. http://gcc.gnu.org/PR13598 - 66. http://gcc.gnu.org/PR14211 - 67. http://gcc.gnu.org/PR14220 - 68. http://gcc.gnu.org/PR14245 - 69. http://gcc.gnu.org/PR14340 - 70. http://gcc.gnu.org/PR14600 - 71. http://gcc.gnu.org/PR14668 - 72. http://gcc.gnu.org/PR14775 - 73. http://gcc.gnu.org/PR14821 - 74. http://gcc.gnu.org/PR14930 - 75. http://gcc.gnu.org/PR14932 - 76. http://gcc.gnu.org/PR14950 - 77. http://gcc.gnu.org/PR14962 - 78. http://gcc.gnu.org/PR14975 - 79. http://gcc.gnu.org/PR15002 - 80. http://gcc.gnu.org/PR15025 - 81. http://gcc.gnu.org/PR15046 - 82. http://gcc.gnu.org/PR15069 - 83. http://gcc.gnu.org/PR15074 - 84. http://gcc.gnu.org/PR15083 - 85. http://gcc.gnu.org/PR15096 - 86. http://gcc.gnu.org/PR15287 - 87. http://gcc.gnu.org/PR15317 - 88. http://gcc.gnu.org/PR15337 - 89. http://gcc.gnu.org/PR15361 - 90. http://gcc.gnu.org/PR15412 - 91. http://gcc.gnu.org/PR15427 - 92. http://gcc.gnu.org/PR15471 - 93. http://gcc.gnu.org/PR15503 - 94. http://gcc.gnu.org/PR15507 - 95. http://gcc.gnu.org/PR15542 - 96. http://gcc.gnu.org/PR15565 - 97. http://gcc.gnu.org/PR15625 - 98. http://gcc.gnu.org/PR15629 - 99. http://gcc.gnu.org/PR15742 - 100. http://gcc.gnu.org/PR15775 - 101. http://gcc.gnu.org/PR15821 - 102. http://gcc.gnu.org/PR15862 - 103. http://gcc.gnu.org/PR15875 - 104. http://gcc.gnu.org/PR15877 - 105. http://gcc.gnu.org/PR15947 - 106. http://gcc.gnu.org/PR16020 - 107. http://gcc.gnu.org/PR16154 - 108. http://gcc.gnu.org/PR16174 - 109. http://gcc.gnu.org/PR14315 - 110. http://gcc.gnu.org/PR15151 - 111. http://gcc.gnu.org/PR7993 - 112. http://gcc.gnu.org/PR15228 - 113. http://gcc.gnu.org/PR15345 - 114. http://gcc.gnu.org/PR15945 - 115. http://gcc.gnu.org/PR15526 - 116. http://gcc.gnu.org/PR14690 - 117. http://gcc.gnu.org/PR15112 - 118. http://gcc.gnu.org/PR15067 - 119. http://gcc.gnu.org/PR1963 - 120. http://gcc.gnu.org/PR15717 - 121. http://gcc.gnu.org/PR14782 - 122. http://gcc.gnu.org/PR14828 - 123. http://gcc.gnu.org/PR15202 - 124. http://gcc.gnu.org/PR14610 - 125. http://gcc.gnu.org/PR14813 - 126. http://gcc.gnu.org/PR14857 - 127. http://gcc.gnu.org/PR15598 - 128. http://gcc.gnu.org/PR15653 - 129. http://gcc.gnu.org/PR15189 - 130. http://gcc.gnu.org/PR15331 - 131. http://gcc.gnu.org/PR16144 - 132. http://gcc.gnu.org/PR16176 - 133. http://gcc.gnu.org/PR11591 - 134. http://gcc.gnu.org/PR12028 - 135. http://gcc.gnu.org/PR14478 - 136. http://gcc.gnu.org/PR14567 - 137. http://gcc.gnu.org/PR14715 - 138. http://gcc.gnu.org/PR14902 - 139. http://gcc.gnu.org/PR14924 - 140. http://gcc.gnu.org/PR14960 - 141. http://gcc.gnu.org/PR15106 - 142. http://gcc.gnu.org/PR16026 - 143. http://gcc.gnu.org/PR15191 - 144. http://gcc.gnu.org/PR15662 - 145. http://gcc.gnu.org/PR15054 - 146. http://gcc.gnu.org/PR15783 - 147. http://gcc.gnu.org/PR15626 - 148. http://gcc.gnu.org/PR14326 - 149. http://gcc.gnu.org/PR14723 - 150. http://gcc.gnu.org/PR15290 - 151. http://gcc.gnu.org/PR15250 - 152. http://gcc.gnu.org/PR15551 - 153. http://gcc.gnu.org/PR8309 - 154. http://gcc.gnu.org/PR13250 - 155. http://gcc.gnu.org/PR13803 - 156. http://gcc.gnu.org/PR14093 - 157. http://gcc.gnu.org/PR14457 - 158. http://gcc.gnu.org/PR14542 - 159. http://gcc.gnu.org/PR15100 - 160. http://gcc.gnu.org/PR15296 - 161. http://gcc.gnu.org/PR15396 - 162. http://gcc.gnu.org/PR15782 - 163. http://gcc.gnu.org/PR11610 - 164. http://gcc.gnu.org/PR15488 - 165. http://gcc.gnu.org/PR15489 - 166. http://gcc.gnu.org/PR13928 - 167. http://gcc.gnu.org/PR14150 - 168. http://gcc.gnu.org/PR14949 - 169. http://gcc.gnu.org/PR15123 - 170. http://gcc.gnu.org/PR16469 - 171. http://gcc.gnu.org/PR16344 - 172. http://gcc.gnu.org/PR16842 - 173. http://gcc.gnu.org/PR12608 - 174. http://gcc.gnu.org/PR14492 - 175. http://gcc.gnu.org/PR15461 - 176. http://gcc.gnu.org/PR15890 - 177. http://gcc.gnu.org/PR16180 - 178. http://gcc.gnu.org/PR16224 - 179. http://gcc.gnu.org/PR16408 - 180. http://gcc.gnu.org/PR16529 - 181. http://gcc.gnu.org/PR16698 - 182. http://gcc.gnu.org/PR16706 - 183. http://gcc.gnu.org/PR16810 - 184. http://gcc.gnu.org/PR16851 - 185. http://gcc.gnu.org/PR16870 - 186. http://gcc.gnu.org/PR16904 - 187. http://gcc.gnu.org/PR16905 - 188. http://gcc.gnu.org/PR16964 - 189. http://gcc.gnu.org/PR17068 - 190. http://gcc.gnu.org/PR16366 - 191. http://gcc.gnu.org/PR15345 - 192. http://gcc.gnu.org/PR16590 - 193. http://gcc.gnu.org/PR16693 - 194. http://gcc.gnu.org/PR17078 - 195. http://gcc.gnu.org/PR13956 - 196. http://gcc.gnu.org/PR16684 - 197. http://gcc.gnu.org/PR12658 - 198. http://gcc.gnu.org/PR13092 - 199. http://gcc.gnu.org/PR15320 - 200. http://gcc.gnu.org/PR16246 - 201. http://gcc.gnu.org/PR16273 - 202. http://gcc.gnu.org/PR16401 - 203. http://gcc.gnu.org/PR16411 - 204. http://gcc.gnu.org/PR16489 - 205. http://gcc.gnu.org/PR16618 - 206. http://gcc.gnu.org/PR16637 - 207. http://gcc.gnu.org/PR16717 - 208. http://gcc.gnu.org/PR16813 - 209. http://gcc.gnu.org/PR16853 - 210. http://gcc.gnu.org/PR16889 - 211. http://gcc.gnu.org/PR16959 - 212. http://gcc.gnu.org/PR7587 - 213. http://gcc.gnu.org/PR16473 - 214. http://gcc.gnu.org/PR16478 - 215. http://gcc.gnu.org/PR10695 - 216. http://gcc.gnu.org/PR16974 - 217. http://gcc.gnu.org/PR16298 - 218. http://gcc.gnu.org/PR17113 - 219. http://gcc.gnu.org/PR14697 - 220. http://gcc.gnu.org/PR15869 - 221. http://gcc.gnu.org/PR16325 - 222. http://gcc.gnu.org/PR16357 - 223. http://gcc.gnu.org/PR16380 - 224. http://gcc.gnu.org/PR16407 - 225. http://gcc.gnu.org/PR16643 - 226. http://gcc.gnu.org/PR15927 - 227. http://gcc.gnu.org/PR15948 - 228. http://gcc.gnu.org/PR17019 - 229. http://gcc.gnu.org/PR16130 - 230. http://gcc.gnu.org/PR16142 - 231. http://gcc.gnu.org/PR16278 - 232. http://gcc.gnu.org/PR16414 - 233. http://gcc.gnu.org/PR16445 - 234. http://gcc.gnu.org/PR16490 - 235. http://gcc.gnu.org/PR16683 - 236. http://gcc.gnu.org/PR16195 - 237. http://gcc.gnu.org/PR16239 - 238. http://gcc.gnu.org/PR16199 - 239. http://gcc.gnu.org/PR16416 - 240. http://gcc.gnu.org/PR16430 - 241. http://gcc.gnu.org/PR16379 - 242. http://gcc.gnu.org/PR17093 - 243. http://gcc.gnu.org/PR17119 - 244. http://gcc.gnu.org/PR15928 - 245. http://gcc.gnu.org/PR16210 - 246. http://gcc.gnu.org/PR15488 - 247. http://gcc.gnu.org/PR16250 - 248. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.3 - 249. http://gcc.gnu.org/PR17369 - 250. http://gcc.gnu.org/PR17850 - 251. http://gcc.gnu.org/PR13948 - 252. http://gcc.gnu.org/PR14492 - 253. http://gcc.gnu.org/PR16301 - 254. http://gcc.gnu.org/PR16566 - 255. http://gcc.gnu.org/PR17023 - 256. http://gcc.gnu.org/PR17027 - 257. http://gcc.gnu.org/PR17524 - 258. http://gcc.gnu.org/PR17826 - 259. http://gcc.gnu.org/PR15526 - 260. http://gcc.gnu.org/PR16999 - 261. http://gcc.gnu.org/PR17503 - 262. http://gcc.gnu.org/PR17581 - 263. http://gcc.gnu.org/PR18129 - 264. http://gcc.gnu.org/PR10975 - 265. http://gcc.gnu.org/PR11722 - 266. http://gcc.gnu.org/PR14534 - 267. http://gcc.gnu.org/PR15172 - 268. http://gcc.gnu.org/PR15786 - 269. http://gcc.gnu.org/PR16162 - 270. http://gcc.gnu.org/PR16612 - 271. http://gcc.gnu.org/PR16715 - 272. http://gcc.gnu.org/PR16848 - 273. http://gcc.gnu.org/PR17132 - 274. http://gcc.gnu.org/PR17259 - 275. http://gcc.gnu.org/PR17327 - 276. http://gcc.gnu.org/PR17393 - 277. http://gcc.gnu.org/PR17501 - 278. http://gcc.gnu.org/PR17537 - 279. http://gcc.gnu.org/PR17585 - 280. http://gcc.gnu.org/PR17821 - 281. http://gcc.gnu.org/PR17829 - 282. http://gcc.gnu.org/PR17851 - 283. http://gcc.gnu.org/PR17976 - 284. http://gcc.gnu.org/PR18020 - 285. http://gcc.gnu.org/PR18093 - 286. http://gcc.gnu.org/PR18140 - 287. http://gcc.gnu.org/PR17541 - 288. http://gcc.gnu.org/PR17853 - 289. http://gcc.gnu.org/PR17245 - 290. http://gcc.gnu.org/PR17167 - 291. http://gcc.gnu.org/PR17277 - 292. http://gcc.gnu.org/PR17505 - 293. http://gcc.gnu.org/PR17684 - 294. http://gcc.gnu.org/PR17384 - 295. http://gcc.gnu.org/PR17770 - 296. http://gcc.gnu.org/PR11476 - 297. http://gcc.gnu.org/PR14064 - 298. http://gcc.gnu.org/PR14678 - 299. http://gcc.gnu.org/PR15583 - 300. http://gcc.gnu.org/PR15790 - 301. http://gcc.gnu.org/PR15886 - 302. http://gcc.gnu.org/PR16884 - 303. http://gcc.gnu.org/PR13841 - 304. http://gcc.gnu.org/PR15860 - 305. http://gcc.gnu.org/PR17465 - 306. http://gcc.gnu.org/PR17469 - 307. http://gcc.gnu.org/PR18138 - 308. http://gcc.gnu.org/PR15498 - 309. http://gcc.gnu.org/PR15747 - 310. http://gcc.gnu.org/PR16406 - 311. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.4 - 312. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.5 - 313. http://gcc.gnu.org/PR24688 - 314. http://gcc.gnu.org/PR17188 - 315. http://gcc.gnu.org/PR20187 - 316. http://gcc.gnu.org/PR21873 - 317. http://gcc.gnu.org/PR21899 - 318. http://gcc.gnu.org/PR22061 - 319. http://gcc.gnu.org/PR22208 - 320. http://gcc.gnu.org/PR22458 - 321. http://gcc.gnu.org/PR22589 - 322. http://gcc.gnu.org/PR24101 - 323. http://gcc.gnu.org/PR10611 - 324. http://gcc.gnu.org/PR13377 - 325. http://gcc.gnu.org/PR16002 - 326. http://gcc.gnu.org/PR17413 - 327. http://gcc.gnu.org/PR17609 - 328. http://gcc.gnu.org/PR17618 - 329. http://gcc.gnu.org/PR18124 - 330. http://gcc.gnu.org/PR18155 - 331. http://gcc.gnu.org/PR18177 - 332. http://gcc.gnu.org/PR18368 - 333. http://gcc.gnu.org/PR18378 - 334. http://gcc.gnu.org/PR18466 - 335. http://gcc.gnu.org/PR18512 - 336. http://gcc.gnu.org/PR18545 - 337. http://gcc.gnu.org/PR18738 - 338. http://gcc.gnu.org/PR18803 - 339. http://gcc.gnu.org/PR19004 - 340. http://gcc.gnu.org/PR19208 - 341. http://gcc.gnu.org/PR19253 - 342. http://gcc.gnu.org/PR19608 - 343. http://gcc.gnu.org/PR19884 - 344. http://gcc.gnu.org/PR20153 - 345. http://gcc.gnu.org/PR20563 - 346. http://gcc.gnu.org/PR20789 - 347. http://gcc.gnu.org/PR21336 - 348. http://gcc.gnu.org/PR21768 - 349. http://gcc.gnu.org/PR21853 - 350. http://gcc.gnu.org/PR21903 - 351. http://gcc.gnu.org/PR21983 - 352. http://gcc.gnu.org/PR21987 - 353. http://gcc.gnu.org/PR22153 - 354. http://gcc.gnu.org/PR22172 - 355. http://gcc.gnu.org/PR21286 - 356. http://gcc.gnu.org/PR22233 - 357. http://gcc.gnu.org/PR22508 - 358. http://gcc.gnu.org/PR22545 - 359. http://gcc.gnu.org/PR23528 - 360. http://gcc.gnu.org/PR23550 - 361. http://gcc.gnu.org/PR23586 - 362. http://gcc.gnu.org/PR23624 - 363. http://gcc.gnu.org/PR23639 - 364. http://gcc.gnu.org/PR23797 - 365. http://gcc.gnu.org/PR23965 - 366. http://gcc.gnu.org/PR24052 - 367. http://gcc.gnu.org/PR24580 - 368. http://gcc.gnu.org/PR24267 - 369. http://gcc.gnu.org/PR17810 - 370. http://gcc.gnu.org/PR17860 - 371. http://gcc/gnu.org/PR21709 - 372. http://gcc.gnu.org/PR21964 - 373. http://gcc.gnu.org/PR22167 - 374. http://gcc.gnu.org/PR22619 - 375. http://gcc.gnu.org/PR23241 - 376. http://gcc.gnu.org/PR23478 - 377. http://gcc.gnu.org/PR24470 - 378. http://gcc.gnu.org/PR24950 - 379. http://gcc.gnu.org/PR14400 - 380. http://gcc.gnu.org/PR14940 - 381. http://gcc.gnu.org/PR20239 - 382. http://gcc.gnu.org/PR15220 - 383. http://gcc.gnu.org/PR19275 - 384. http://gcc.gnu.org/PR21888 - 385. http://gcc.gnu.org/PR15342 - 386. http://gcc.gnu.org/PR23985 - 387. http://gcc.gnu.org/PR16719 - 388. http://gcc.gnu.org/PR21723 - 389. http://gcc.gnu.org/PR21841 - 390. http://gcc.gnu.org/PR23644 - 391. http://gcc.gnu.org/PR24718 - 392. http://gcc.gnu.org/PR18421 - 393. http://gcc.gnu.org/PR20621 - 394. http://gcc.gnu.org/PR18583 - 395. http://gcc.gnu.org/PR20191 - 396. http://gcc.gnu.org/PR22083 - 397. http://gcc.gnu.org/PR23070 - 398. http://gcc.gnu.org/PR23404 - 399. http://gcc.gnu.org/PR23539 - 400. http://gcc.gnu.org/PR24102 - 401. http://gcc.gnu.org/PR24465 - 402. http://gcc.gnu.org/PR19933 - 403. http://gcc.gnu.org/PR21889 - 404. http://gcc.gnu.org/PR19300 - 405. http://gcc.gnu.org/PR20301 - 406. http://gcc.gnu.org/PR20673 - 407. http://gcc.gnu.org/PR18582 - 408. http://gcc.gnu.org/PR19340 - 409. http://gcc.gnu.org/PR21716 - 410. http://gcc.gnu.org/PR24315 - 411. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6 - 412. http://gcc.gnu.org/onlinedocs/ - 413. mailto:gcc-help@gcc.gnu.org - 414. mailto:gcc@gcc.gnu.org - 415. http://gcc.gnu.org/lists.html - 416. http://www.fsf.org/ - 417. http://gcc.gnu.org/about.html - 418. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-3.3/index.html - - GCC 3.3 Release Series - - May 03, 2005 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 3.3.6. - - This release is a bug-fix release, containing fixes for regressions in - GCC 3.3.5 relative to previous releases of GCC. - - This release is the last of the series 3.3.x. - - The GCC 3.3 release series includes numerous [2]new features, - improvements, bug fixes, and other changes, thanks to an [3]amazing - group of volunteers. - -Release History - - GCC 3.3.6 - May 3, 2005 ([4]changes) - - GCC 3.3.5 - September 30, 2004 ([5]changes) - - GCC 3.3.4 - May 31, 2004 ([6]changes) - - GCC 3.3.3 - February 14, 2004 ([7]changes) - - GCC 3.3.2 - October 16, 2003 ([8]changes) - - GCC 3.3.1 - August 8, 2003 ([9]changes) - - GCC 3.3 - May 14, 2003 ([10]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 [11]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 [12]amazing group of volunteers is - what makes GCC successful. - - For additional information about GCC please refer to the [13]GCC - project web site or contact the [14]GCC development mailing list. - - To obtain GCC please use [15]our mirror sites, or our CVS server. - - - 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. Comments on these - web pages and the development of GCC are welcome on our developer - list at [18]gcc@gcc.gnu.org. All of [19]our lists have public - archives. - - Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [21]maintained by the GCC team. Last modified - 2012-11-02[22]. - -References - - 1. http://www.gnu.org/ - 2. http://gcc.gnu.org/gcc-3.3/changes.html - 3. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 4. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6 - 5. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.5 - 6. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.4 - 7. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.3 - 8. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.2 - 9. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.1 - 10. http://gcc.gnu.org/gcc-3.3/changes.html - 11. http://gcc.gnu.org/gcc-3.3/buildstat.html - 12. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 13. http://gcc.gnu.org/index.html - 14. mailto:gcc@gcc.gnu.org - 15. http://gcc.gnu.org/mirrors.html - 16. http://gcc.gnu.org/onlinedocs/ - 17. mailto:gcc-help@gcc.gnu.org - 18. mailto:gcc@gcc.gnu.org - 19. http://gcc.gnu.org/lists.html - 20. http://www.fsf.org/ - 21. http://gcc.gnu.org/about.html - 22. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-3.3/changes.html - - GCC 3.3 Release Series - Changes, New Features, and Fixes - - The latest release in the 3.3 release series is [1]GCC 3.3.6. - -Caveats - - * The preprocessor no longer accepts multi-line string literals. They - were deprecated in 3.0, 3.1, and 3.2. - * The preprocessor no longer supports the -A- switch when appearing - alone. -A- followed by an assertion is still supported. - * Support for all the systems [2]obsoleted in GCC 3.1 has been - removed from GCC 3.3. See below for a [3]list of systems which are - obsoleted in this release. - * Checking for null format arguments has been decoupled from the rest - of the format checking mechanism. Programs which use the format - attribute may regain this functionality by using the new [4]nonnull - function attribute. Note that all functions for which GCC has a - built-in format attribute, an appropriate built-in nonnull - attribute is also applied. - * The DWARF (version 1) debugging format has been deprecated and will - be removed in a future version of GCC. Version 2 of the DWARF - debugging format will continue to be supported for the foreseeable - future. - * The C and Objective-C compilers no longer accept the "Naming Types" - extension (typedef foo = bar); it was already unavailable in C++. - Code which uses it will need to be changed to use the "typeof" - extension instead: typedef typeof(bar) foo. (We have removed this - extension without a period of deprecation because it has caused the - compiler to crash since version 3.0 and no one noticed until very - recently. Thus we conclude it is not in widespread use.) - * The -traditional C compiler option has been removed. It was - deprecated in 3.1 and 3.2. (Traditional preprocessing remains - available.) The <varargs.h> header, used for writing variadic - functions in traditional C, still exists but will produce an error - message if used. - * GCC 3.3.1 automatically places zero-initialized variables in the - .bss section on some operating systems. Versions of GNU Emacs up to - (and including) 21.3 will not work correctly when using this - optimization; you can use -fno-zero-initialized-in-bss to disable - it. - -General Optimizer Improvements - - * A new scheme for accurately describing processor pipelines, the - [5]DFA scheduler, has been added. - * Pavel Nejedly, Charles University Prague, has contributed new file - format used by the edge coverage profiler (-fprofile-arcs). - The new format is robust and diagnoses common mistakes where - profiles from different versions (or compilations) of the program - are combined resulting in nonsensical profiles and slow code to - produced with profile feedback. Additionally this format allows - extra data to be gathered. Currently, overall statistics are - produced helping optimizers to identify hot spots of a program - globally replacing the old intra-procedural scheme and resulting in - better code. Note that the gcov tool from older GCC versions will - not be able to parse the profiles generated by GCC 3.3 and vice - versa. - * Jan Hubicka, SuSE Labs, has contributed a new superblock formation - pass enabled using -ftracer. This pass simplifies the control flow - of functions allowing other optimizations to do better job. - He also contributed the function reordering pass - (-freorder-functions) to optimize function placement using profile - feedback. - -New Languages and Language specific improvements - - C/ObjC/C++ - - * The preprocessor now accepts directives within macro arguments. It - processes them just as if they had not been within macro arguments. - * The separate ISO and traditional preprocessors have been completely - removed. The front end handles either type of preprocessed output - if necessary. - * In C99 mode preprocessor arithmetic is done in the precision of the - target's intmax_t, as required by that standard. - * The preprocessor can now copy comments inside macros to the output - file when the macro is expanded. This feature, enabled using the - -CC option, is intended for use by applications which place - metadata or directives inside comments, such as lint. - * The method of constructing the list of directories to be searched - for header files has been revised. If a directory named by a -I - option is a standard system include directory, the option is - ignored to ensure that the default search order for system - directories and the special treatment of system header files are - not defeated. - * A few more [6]ISO C99 features now work correctly. - * A new function attribute, nonnull, has been added which allows - pointer arguments to functions to be specified as requiring a - non-null value. The compiler currently uses this information to - issue a warning when it detects a null value passed in such an - argument slot. - * A new type attribute, may_alias, has been added. Accesses to - objects with types with this attribute are not subjected to - type-based alias analysis, but are instead assumed to be able to - alias any other type of objects, just like the char type. - - C++ - - * Type based alias analysis has been implemented for C++ aggregate - types. - - Objective-C - - * Generate an error if Objective-C objects are passed by value in - function and method calls. - * When -Wselector is used, check the whole list of selectors at the - end of compilation, and emit a warning if a @selector() is not - known. - * Define __NEXT_RUNTIME__ when compiling for the NeXT runtime. - * No longer need to include objc/objc-class.h to compile self calls - in class methods (NeXT runtime only). - * New -Wundeclared-selector option. - * Removed selector bloating which was causing object files to be 10% - bigger on average (GNU runtime only). - * Using at run time @protocol() objects has been fixed in certain - situations (GNU runtime only). - * Type checking has been fixed and improved in many situations - involving protocols. - - Java - - * The java.sql and javax.sql packages now implement the JDBC 3.0 (JDK - 1.4) API. - * The JDK 1.4 assert facility has been implemented. - * The bytecode interpreter is now direct threaded and thus faster. - - Fortran - - * Fortran improvements are listed in [7]the Fortran documentation. - - Ada - - * Ada tasking now works with glibc 2.3.x threading libraries. - -New Targets and Target Specific Improvements - - * The following changes have been made to the HP-PA port: - + The port now defaults to scheduling for the PA8000 series of - processors. - + Scheduling support for the PA7300 processor has been added. - + The 32-bit port now supports weak symbols under HP-UX 11. - + The handling of initializers and finalizers has been improved - under HP-UX 11. The 64-bit port no longer uses collect2. - + Dwarf2 EH support has been added to the 32-bit GNU/Linux port. - + ABI fixes to correct the passing of small structures by value. - * The SPARC, HP-PA, SH4, and x86/pentium ports have been converted to - use the DFA processor pipeline description. - * The following NetBSD configurations for the SuperH processor family - have been added: - + SH3, big-endian, sh-*-netbsdelf* - + SH3, little-endian, shle-*-netbsdelf* - + SH5, SHmedia, big-endian, 32-bit default, sh5-*-netbsd* - + SH5, SHmedia, little-endian, 32-bit default, sh5le-*-netbsd* - + SH5, SHmedia, big-endian, 64-bit default, sh64-*-netbsd* - + SH5, SHmedia, little-endian, 64-bit default, sh64le-*-netbsd* - * The following changes have been made to the IA-32/x86-64 port: - + SSE2 and 3dNOW! intrinsics are now supported. - + Support for thread local storage has been added to the IA-32 - and x86-64 ports. - + The x86-64 port has been significantly improved. - * The following changes have been made to the MIPS port: - + All configurations now accept the -mabi switch. Note that you - will need appropriate multilibs for this option to work - properly. - + ELF configurations will always pass an ABI flag to the - assembler, except when the MIPS EABI is selected. - + -mabi=64 no longer selects MIPS IV code. - + The -mcpu option, which was deprecated in 3.1 and 3.2, has - been removed from this release. - + -march now changes the core ISA level. In previous releases, - it would change the use of processor-specific extensions, but - would leave the core ISA unchanged. For example, mips64-elf - -march=r8000 will now generate MIPS IV code. - + Under most configurations, -mipsN now acts as a synonym for - -march. - + There are some new preprocessor macros to describe the -march - and -mtune settings. See the documentation of those options - for details. - + Support for the NEC VR-Series processors has been added. This - includes the 54xx, 5500, and 41xx series. - + Support for the Sandcraft sr71k processor has been added. - * The following changes have been made to the S/390 port: - + Support to build the Java runtime libraries has been added. - Java is now enabled by default on s390-*-linux* and - s390x-*-linux* targets. - + Multilib support for the s390x-*-linux* target has been added; - this allows to build 31-bit binaries using the -m31 option. - + Support for thread local storage has been added. - + Inline assembler code may now use the 'Q' constraint to - specify memory operands without index register. - + Various platform-specific performance improvements have been - implemented; in particular, the compiler now uses the BRANCH - ON COUNT family of instructions and makes more frequent use of - the TEST UNDER MASK family of instructions. - * The following changes have been made to the PowerPC port: - + Support for IBM Power4 processor added. - + Support for Motorola e500 SPE added. - + Support for AIX 5.2 added. - + Function and Data sections now supported on AIX. - + Sibcall optimizations added. - * The support for H8 Tiny is added to the H8/300 port with -mn. - -Obsolete Systems - - Support for a number of older systems has been declared obsolete in GCC - 3.3. Unless there is activity to revive them, the next release of GCC - will have their sources permanently removed. - - All configurations of the following processor architectures have been - declared obsolete: - * Matsushita MN10200, mn10200-*-* - * Motorola 88000, m88k-*-* - * IBM ROMP, romp-*-* - - Also, some individual systems have been obsoleted: - * Alpha - + Interix, alpha*-*-interix* - + Linux libc1, alpha*-*-linux*libc1* - + Linux ECOFF, alpha*-*-linux*ecoff* - * ARM - + Generic a.out, arm*-*-aout* - + Conix, arm*-*-conix* - + "Old ABI," arm*-*-oabi - + StrongARM/COFF, strongarm-*-coff* - * HPPA (PA-RISC) - + Generic OSF, hppa1.0-*-osf* - + Generic BSD, hppa1.0-*-bsd* - + HP/UX versions 7, 8, and 9, hppa1.[01]-*-hpux[789]* - + HiUX, hppa*-*-hiux* - + Mach Lites, hppa*-*-lites* - * Intel 386 family - + Windows NT 3.x, i?86-*-win32 - * MC68000 family - + HP systems, m68000-hp-bsd* and m68k-hp-bsd* - + Sun systems, m68000-sun-sunos*, m68k-sun-sunos*, and - m68k-sun-mach* - + AT&T systems, m68000-att-sysv* - + Atari systems, m68k-atari-sysv* - + Motorola systems, m68k-motorola-sysv* - + NCR systems, m68k-ncr-sysv* - + Plexus systems, m68k-plexus-sysv* - + Commodore systems, m68k-cbm-sysv* - + Citicorp TTI, m68k-tti-* - + Unos, m68k-crds-unos* - + Concurrent RTU, m68k-ccur-rtu* - + Linux a.out, m68k-*-linux*aout* - + Linux libc1, m68k-*-linux*libc1* - + pSOS, m68k-*-psos* - * MIPS - + Generic ECOFF, mips*-*-ecoff* - + SINIX, mips-sni-sysv4 - + Orion RTEMS, mips64orion-*-rtems* - * National Semiconductor 32000 - + OpenBSD, ns32k-*-openbsd* - * POWER (aka RS/6000) and PowerPC - + AIX versions 1, 2, and 3, rs6000-ibm-aix[123]* - + Bull BOSX, rs6000-bull-bosx - + Generic Mach, rs6000-*-mach* - + Generic SysV, powerpc*-*-sysv* - + Linux libc1, powerpc*-*-linux*libc1* - * Sun SPARC - + Generic a.out, sparc-*-aout*, sparclet-*-aout*, - sparclite-*-aout*, and sparc86x-*-aout* - + NetBSD a.out, sparc-*-netbsd*aout* - + Generic BSD, sparc-*-bsd* - + ChorusOS, sparc-*-chorusos* - + Linux a.out, sparc-*-linux*aout* - + Linux libc1, sparc-*-linux*libc1* - + LynxOS, sparc-*-lynxos* - + Solaris on HAL hardware, sparc-hal-solaris2* - + SunOS versions 3 and 4, sparc-*-sunos[34]* - * NEC V850 - + RTEMS, v850-*-rtems* - * VAX - + VMS, vax-*-vms* - -Documentation improvements - -Other significant improvements - - * Almost all front-end dependencies in the compiler have been - separated out into a set of language hooks. This should make adding - a new front end clearer and easier. - * One effect of removing the separate preprocessor is a small - increase in the robustness of the compiler in general, and the - maintainability of target descriptions. Previously target-specific - built-in macros and others, such as __FAST_MATH__, had to be - handled with so-called specs that were hard to maintain. Often they - would fail to behave properly when conflicting options were - supplied on the command line, and define macros in the user's - namespace even when strict ISO compliance was requested. - Integrating the preprocessor has cleanly solved these issues. - * The Makefile suite now supports redirection of make install by - means of the variable DESTDIR. - __________________________________________________________________ - -GCC 3.3 - - Detailed release notes for the GCC 3.3 release follow. - - Bug Fixes - - bootstrap failures - - * [8]10140 cross compiler build failures: missing __mempcpy (DUP: - [9]10198,[10]10338) - - Internal compiler errors (multi-platform) - - * [11]3581 large string causes segmentation fault in cc1 - * [12]4382 __builtin_{set,long}jmp with -O3 can crash the compiler - * [13]5533 (c++) ICE when processing std::accumulate(begin, end, - init, invalid_op) - * [14]6387 -fpic -gdwarf-2 -g1 combination gives ICE in dwarf2out - * [15]6412 (c++) ICE in retrieve_specialization - * [16]6620 (c++) partial template specialization causes an ICE - (segmentation fault) - * [17]6663 (c++) ICE with attribute aligned - * [18]7068 ICE with incomplete types - * [19]7083 (c++) ICE using -gstabs with dodgy class derivation - * [20]7647 (c++) ICE when data member has the name of the enclosing - class - * [21]7675 ICE in fixup_var_refs_1 - * [22]7718 'complex' template instantiation causes ICE - * [23]8116 (c++) ICE in member template function - * [24]8358 (ada) Ada compiler accesses freed memory, crashes - * [25]8511 (c++) ICE: (hopefully) reproducible cc1plus segmentation - fault - * [26]8564 (c++) ICE in find_function_data, in function.c - * [27]8660 (c++) template overloading ICE in tsubst_expr, in cp/pt.c - * [28]8766 (c++) ICE after failed initialization of static template - variable - * [29]8803 ICE in instantiate_virtual_regs_1, in function.c - * [30]8846 (c++) ICE after diagnostic if fr_FR@euro locale is set - * [31]8906 (c++) ICE (Segmentation fault) when parsing nested-class - definition - * [32]9216 (c++) ICE on missing template parameter - * [33]9261 (c++) ICE in arg_assoc, in cp/decl2.c - * [34]9263 (fortran) ICE caused by invalid PARAMETER in implied DO - loop - * [35]9429 (c++) ICE in template instantiation with a pointered new - operator - * [36]9516 Internal error when using a big array - * [37]9600 (c++) ICE with typedefs in template class - * [38]9629 (c++) virtual inheritance segfault - * [39]9672 (c++) ICE: Error reporting routines re-entered - * [40]9749 (c++) ICE in write_expression on invalid function - prototype - * [41]9794 (fortran) ICE: floating point exception during constant - folding - * [42]9829 (c++) Missing colon in nested namespace usage causes ICE - * [43]9916 (c++) ICE with noreturn function in ?: statement - * [44]9936 ICE with local function and variable-length 2d array - * [45]10262 (c++) cc1plus crashes with large generated code - * [46]10278 (c++) ICE in parser for invalid code - * [47]10446 (c++) ICE on definition of nonexistent member function of - nested class in a class template - * [48]10451 (c++) ICE in grokdeclarator on spurious mutable - declaration - * [49]10506 (c++) ICE in build_new at cp/init.c with - -fkeep-inline-functions and multiple inheritance - * [50]10549 (c++) ICE in store_bit_field on bitfields that exceed the - precision of the declared type - - Optimization bugs - - * [51]2001 Inordinately long compile times in reload CSE regs - * [52]2391 Exponential compilation time explosion in combine - * [53]2960 Duplicate loop conditions even with -Os - * [54]4046 redundant conditional branch - * [55]6405 Loop-unrolling related performance regressions - * [56]6798 very long compile time with large case-statement - * [57]6871 const objects shouldn't be moved to .bss - * [58]6909 problem w/ -Os on modified loop-2c.c test case - * [59]7189 gcc -O2 -Wall does not print ``control reaches end of - non-void function'' warning - * [60]7642 optimization problem with signbit() - * [61]8634 incorrect code for inlining of memcpy under -O2 - * [62]8750 Cygwin prolog generation erroneously emitting __alloca as - regular function call - - C front end - - * [63]2161 long if-else cascade overflows parser stack - * [64]4319 short accepted on typedef'd char - * [65]8602 incorrect line numbers in warning messages when using - inline functions - * [66]9177 -fdump-translation-unit: C front end deletes function_decl - AST nodes and breaks debugging dumps - * [67]9853 miscompilation of non-constant structure initializer - - c++ compiler and library - - * [68]45 legal template specialization code is rejected (DUP: - [69]3784) - * [70]764 lookup failure: friend operator and dereferencing a pointer - and templates (DUP: [71]5116) - * [72]2862 gcc accepts invalid explicit instantiation syntax (DUP: - 2863) - * [73]3663 G++ doesn't check access control during template - instantiation - * [74]3797 gcc fails to emit explicit specialization of a template - member - * [75]3948 Two destructors are called when no copy destructor is - defined (ABI change) - * [76]4137 Conversion operator within template is not accepted - * [77]4361 bogus ambiguity taking the address of a member template - * [78]4802 g++ accepts illegal template code (access to private - member; DUP: [79]5837) - * [80]4803 inline function is used but never defined, and g++ does - not object - * [81]5094 Partial specialization cannot be friend? - * [82]5730 complex<double>::norm() -- huge slowdown from egcs-2.91.66 - * [83]6713 Regression wrt 3.0.4: g++ -O2 leads to seg fault at run - time - * [84]7015 certain __asm__ constructs rejected - * [85]7086 compile time regression (quadratic behavior in - fixup_var_refs) - * [86]7099 G++ doesn't set the noreturn attribute on std::exit and - std::abort - * [87]7247 copy constructor missing when inlining enabled (invalid - optimization?) - * [88]7441 string array initialization compilation time regression - from seconds to minutes - * [89]7768 __PRETTY_FUNCTION__ for template destructor is wrong - * [90]7804 bad printing of floating point constant in warning message - * [91]8099 Friend classes and template specializations - * [92]8117 member function pointers and multiple inheritance - * [93]8205 using declaration and multiple inheritance - * [94]8645 unnecessary non-zero checks in stl_tree.h - * [95]8724 explicit destructor call for incomplete class allowed - * [96]8805 compile time regression with many member variables - * [97]8691 -O3 and -fno-implicit-templates are incompatible - * [98]8700 unhelpful error message for binding temp to reference - * [99]8724 explicit destructor call for incomplete class allowed - * [100]8949 numeric_limits<>::denorm_min() and is_iec559 problems - * [101]9016 Failure to consistently constant fold "constant" C++ - objects - * [102]9053 g++ confused about ambiguity of overloaded function - templates - * [103]9152 undefined virtual thunks - * [104]9182 basic_filebuf<> does not report errors in codecvt<>::out - * [105]9297 data corruption due to codegen bug (when copying.) - * [106]9318 i/ostream::operator>>/<<(streambuf*) broken - * [107]9320 Incorrect usage of traits_type::int_type in stdio_filebuf - * [108]9400 bogus -Wshadow warning: shadowed declaration of this in - local classes - * [109]9424 i/ostream::operator>>/<<(streambuf*) drops characters - * [110]9425 filebuf::pbackfail broken (DUP: [111]9439) - * [112]9474 GCC freezes in compiling a weird code mixing <iostream> - and <iostream.h> - * [113]9548 Incorrect results from setf(ios::fixed) and precision(-1) - [114][DR 231] - * [115]9555 ostream inserters fail to set badbit on exception - * [116]9561 ostream inserters rethrow exception of wrong type - * [117]9563 ostream::sentry returns true after a failed preparation - * [118]9582 one-definition rule violation in std::allocator - * [119]9622 __PRETTY_FUNCTION__ incorrect in template destructors - * [120]9683 bug in initialization chains for static const variables - from template classes - * [121]9791 -Woverloaded-virtual reports hiding of destructor - * [122]9817 collate::compare doesn't handle nul characters - * [123]9825 filebuf::sputbackc breaks sbumpc - * [124]9826 operator>>(basic_istream, basic_string) fails to compile - with custom traits - * [125]9924 Multiple using statements for builtin functions not - allowed - * [126]9946 destructor is not called for temporary object - * [127]9964 filebuf::close() sometimes fails to close file - * [128]9988 filebuf::overflow writes EOF to file - * [129]10033 optimization breaks polymorphic references w/ typeid - operator - * [130]10097 filebuf::underflow drops characters - * [131]10132 filebuf destructor can throw exceptions - * [132]10180 gcc fails to warn about non-inlined function - * [133]10199 method parametrized by template does not work everywhere - * [134]10300 use of array-new (nothrow) in segfaults on NULL return - * [135]10427 Stack corruption with variable-length automatic arrays - and virtual destructors - * [136]10503 Compilation never stops in fixed_type_or_null - - Objective-C - - * [137]5956 selectors aren't matched properly when added to the - selector table - - Fortran compiler and library - - * [138]1832 list directed i/o overflow hangs, -fbounds-check doesn't - detect - * [139]3924 g77 generates code that is rejected by GAS if COFF debug - info requested - * [140]5634 doc: explain that configure --prefix=~/... does not work - * [141]6367 multiple repeat counts confuse namelist read into array - * [142]6491 Logical operations error on logicals when using - -fugly-logint - * [143]6742 Generation of C++ Prototype for FORTRAN and extern "C" - * [144]7113 Failure of g77.f-torture/execute/f90-intrinsic-bit.f -Os - on irix6.5 - * [145]7236 OPEN(...,RECL=nnn,...) without ACCESS='DIRECT' should - assume a direct access file - * [146]7278 g77 "bug"; the executable misbehaves (with -O2 - -fno-automatic) - * [147]7384 DATE_AND_TIME milliseconds field inactive on Windows - * [148]7388 Incorrect output with 0-based array of characters - * [149]8587 Double complex zero ** double precision number -> NaN - instead of zero - * [150]9038 -ffixed-line-length-none -x f77-cpp-input gives: Warning: - unknown register name line-length-none - * [151]10197 Direct access files not unformatted by default - - Java compiler and library - - * [152]6005 gcj fails to build rhug on alpha - * [153]6389 System.getProperty("") should always throw an - IllegalArgumentException - * [154]6576 java.util.ResourceBundle.getResource ignores locale - * [155]6652 new java.io.File("").getCanonicalFile() throws exception - * [156]7060 getMethod() doesn't search super interface - * [157]7073 bytecode interpreter gives wrong answer for interface - getSuperclass() - * [158]7180 possible bug in - javax.naming.spi.NamingManager.getPlusPath() - * [159]7416 java.security startup refs "GNU libgcj.security" - * [160]7570 Runtime.exec with null envp: child doesn't inherit parent - env (DUP: [161]7578) - * [162]7611 Internal error while compiling libjava with -O - * [163]7709 NullPointerException in _Jv_ResolvePoolEntry - * [164]7766 ZipInputStream.available returns 0 immediately after - construction - * [165]7785 Calendar.getTimeInMillis/setTimeInMillis should be public - * [166]7786 TimeZone.getDSTSavings() from JDK1.4 not implemented - * [167]8142 '$' in class names vs. dlopen 'dynamic string tokens' - * [168]8234 ZipInputStream chokes when InputStream.read() returns - small chunks - * [169]8415 reflection bug: exception info for Method - * [170]8481 java.Random.nextInt(int) may return negative - * [171]8593 Error reading GZIPped files with BufferedReader - * [172]8759 java.beans.Introspector has no flushCaches() or - flushFromCaches() methods - * [173]8997 spin() calls Thread.sleep - * [174]9253 on win32, java.io.File.listFiles("C:\\") returns pwd - instead of the root content of C: - * [175]9254 java::lang::Object::wait(), threads-win32.cc returns - wrong return codes - * [176]9271 Severe bias in java.security.SecureRandom - - Ada compiler and library - - * [177]6767 make gnatlib-shared fails on -laddr2line - * [178]9911 gnatmake fails to link when GCC configured with - --with-sjlj-exceptions=yes - * [179]10020 Can't bootstrap gcc on AIX with Ada enabled - * [180]10546 Ada tasking not working on Red Hat 9 - - preprocessor - - * [181]7029 preprocessor should ignore #warning with -M - - ARM-specific - - * [182]2903 [arm] Optimization bug with long long arithmetic - * [183]7873 arm-linux-gcc fails when assigning address to a bit field - - FreeBSD-specific - - * [184]7680 float functions undefined in math.h/cmath with #define - _XOPEN_SOURCE - - HP-UX or HP-PA-specific - - * [185]8705 [HP-PA] ICE in emit_move_insn_1, in expr.c - * [186]9986 [HP-UX] Incorrect transformation of fputs_unlocked to - fputc_unlocked - * [187]10056 [HP-PA] ICE at -O2 when building c++ code from doxygen - - m68hc11-specific - - * [188]6744 Bad assembler code generated: reference to pseudo - register z - * [189]7361 Internal compiler error in reload_cse_simplify_operands, - in reload1.c - - MIPS-specific - - * [190]9496 [mips-linux] bug in optimizer? - - PowerPC-specific - - * [191]7067 -Os with -mcpu=powerpc optimizes for speed (?) instead of - space - * [192]8480 reload ICEs for LAPACK code on powerpc64-linux - * [193]8784 [AIX] Internal compiler error in simplify_gen_subreg - * [194]10315 [powerpc] ICE: in extract_insn, in recog.c - - SPARC-specific - - * [195]10267 (documentation) Wrong build instructions for - *-*-solaris2* - - x86-specific (Intel/AMD) - - * [196]7916 ICE in instantiate_virtual_register_1 - * [197]7926 (c++) i486 instructions in header files make c++ programs - crash on i386 - * [198]8555 ICE in gen_split_1231 - * [199]8994 ICE with -O -march=pentium4 - * [200]9426 ICE with -fssa -funroll-loops -fprofile-arcs - * [201]9806 ICE in inline assembly with -fPIC flag - * [202]10077 gcc -msse2 generates movd to move dwords between xmm - regs - * [203]10233 64-bit comparison only comparing bottom 32-bits - * [204]10286 type-punning doesn't work with __m64 and -O - * [205]10308 [x86] ICE with -O -fgcse or -O2 - __________________________________________________________________ - -GCC 3.3.1 - - Bug Fixes - - This section lists the problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.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). - - Bootstrap failures - - * [206]11272 [Solaris] make bootstrap fails while building libstdc++ - - Internal compiler errors (multi-platform) - - * [207]5754 ICE on invalid nested template class - * [208]6597 ICE in set_mem_alias_set compiling Qt with -O2 on ia64 - and --enable-checking - * [209]6949 (c++) ICE in tsubst_decl, in cp/pt.c - * [210]7053 (c++) ICE when declaring a function already defined as a - friend method of a template class - * [211]8164 (c++) ICE when using different const expressions as - template parameter - * [212]8384 (c++) ICE in is_base_type, in dwarf2out.c - * [213]9559 (c++) ICE with invalid initialization of a static const - * [214]9649 (c++) ICE in finish_member_declaration, in cp/semantics.c - when redeclaring a static member variable - * [215]9864 (fortran) ICE in add_abstract_origin_attribute, in - dwarfout.c with -g -O -finline-functions - * [216]10432 (c++) ICE in poplevel, in cp/decl.c - * [217]10475 ICE in subreg_highpart_offset for code with long long - * [218]10635 (c++) ICE when dereferencing an incomplete type casted - from a void pointer - * [219]10661 (c++) ICE in instantiate_decl, in cp/pt.c while - instantiating static member variables - * [220]10700 ICE in copy_to_mode_reg on 64-bit targets - * [221]10712 (c++) ICE in constructor_name_full, in cp/decl2.c - * [222]10796 (c++) ICE when defining an enum with two values: -1 and - MAX_INT_64BIT - * [223]10890 ICE in merge_assigned_reloads building Linux 2.4.2x - sched.c - * [224]10939 (c++) ICE with template code - * [225]10956 (c++) ICE when specializing a template member function - of a template class, in tsubst, in cp/pt.c - * [226]11041 (c++) ICE: const myclass &x = *x; (when operator*() - defined) - * [227]11059 (c++) ICE with empty union - * [228]11083 (c++) ICE in commit_one_edge_insertion, in cfgrtl.c with - -O2 -fnon-call-exceptions - * [229]11105 (c++) ICE in mangle_conv_op_name_for_type - * [230]11149 (c++) ICE on error when instantiation with call function - of a base type - * [231]11228 (c++) ICE on new-expression using array operator new and - default-initialization - * [232]11282 (c++) Infinite memory usage after syntax error - * [233]11301 (fortran) ICE with -fno-globals - * [234]11308 (c++) ICE when using an enum type name as if it were a - class or namespace - * [235]11473 (c++) ICE with -gstabs when empty struct inherits from - an empty struct - * [236]11503 (c++) ICE when instantiating template with ADDR_EXPR - * [237]11513 (c++) ICE in push_template_decl_real, in cp/pt.c: - template member functions - - Optimization bugs - - * [238]11198 -O2 -frename-registers generates wrong code (aliasing - problem) - * [239]11304 Wrong code production with -fomit-frame-pointer - * [240]11381 volatile memory access optimized away - * [241]11536 [strength-reduce] -O2 optimization produces wrong code - * [242]11557 constant folding bug generates wrong code - - C front end - - * [243]5897 No warning for statement after return - * [244]11279 DWARF-2 output mishandles large enums - - Preprocessor bugs - - * [245]11022 no warning for non-compatible macro redefinition - - C++ compiler and library - - * [246]2330 static_cast<>() to a private base is allowed - * [247]5388 Incorrect message "operands to ?: have different types" - * [248]5390 Libiberty fails to demangle multi-digit template - parameters - * [249]7877 Incorrect parameter passing to specializations of member - function templates - * [250]9393 Anonymous namespaces and compiling the same file twice - * [251]10032 -pedantic converts some errors to warnings - * [252]10468 const typeof(x) is non-const, but only in templates - * [253]10527 confused error message with "new int()" parameter - initializer - * [254]10679 parameter MIN_INLINE_INSNS is not honored - * [255]10682 gcc chokes on a typedef for an enum inside a class - template - * [256]10689 pow(std::complex(0),1/3) returns (nan, nan) instead of - 0. - * [257]10845 template member function (with nested template as - parameter) cannot be called anymore if another unrelated template - member function is defined - * [258]10849 Cannot define an out-of-class specialization of a - private nested template class - * [259]10888 Suppress -Winline warnings for system headers - * [260]10929 -Winline warns about functions for which no definition - is visible - * [261]10931 valid conversion static_cast<const unsigned - int&>(lvalue-of-type-int) is rejected - * [262]10940 Bad code with explicit specialization - * [263]10968 If member function implicitly instantiated, explicit - instantiation of class fails to instantiate it - * [264]10990 Cannot convert with dynamic_cast<> to a private base - class from within a member function - * [265]11039 Bad interaction between implicit typename deprecation - and friendship - * [266]11062 (libstdc++) avoid __attribute__ ((unused)); say - "__unused__" instead - * [267]11095 C++ iostream manipulator causes segfault when called - with negative argument - * [268]11098 g++ doesn't emit complete debugging information for - local variables in destructors - * [269]11137 GNU/Linux shared library constructors not called unless - there's one global object - * [270]11154 spurious ambiguity report for template class - specialization - * [271]11329 Compiler cannot find user defined implicit typecast - * [272]11332 Spurious error with casts in ?: expression - * [273]11431 static_cast behavior with subclasses when default - constructor available - * [274]11528 money_get facet does not accept "$.00" as valid - * [275]11546 Type lookup problems in out-of-line definition of a - class doubly nested from a template class - * [276]11567 C++ code containing templated member function with same - name as pure virtual member function results in linking failure - * [277]11645 Failure to deal with using and private inheritance - - Java compiler and library - - * [278]5179 Qualified static field access doesn't initialize its - class - * [279]8204 gcj -O2 to native reorders certain instructions - improperly - * [280]10838 java.io.ObjectInputStream syntax error - * [281]10886 The RMI registry that comes with GCJ does not work - correctly - * [282]11349 JNDI URL context factories not located correctly - - x86-specific (Intel/AMD) - - * [283]4823 ICE on inline assembly code - * [284]8878 miscompilation with -O and SSE - * [285]9815 (c++ library) atomicity.h - fails to compile with -O3 - -masm=intel - * [286]10402 (inline assembly) [x86] ICE in merge_assigned_reloads, - in reload1.c - * [287]10504 ICE with SSE2 code and -O3 -mcpu=pentium4 -msse2 - * [288]10673 ICE for x86-64 on freebsd libc vfprintf.c source - * [289]11044 [x86] out of range loop instructions for FP code on K6 - * [290]11089 ICE: instantiate_virtual_regs_lossage while using SSE - built-ins - * [291]11420 [x86_64] gcc generates invalid asm code when "-O -fPIC" - is used - - SPARC- or Solaris- specific - - * [292]9362 solaris 'as' dies when fed .s and "-gstabs" - * [293]10142 [SPARC64] gcc produces wrong code when passing - structures by value - * [294]10663 New configure check aborts with Sun tools. - * [295]10835 combinatorial explosion in scheduler on HyperSPARC - * [296]10876 ICE in calculate_giv_inc when building KDE - * [297]10955 wrong code at -O3 for structure argument in context of - structure return - * [298]11018 -mcpu=ultrasparc busts tar-1.13.25 - * [299]11556 [sparc64] ICE in gen_reg_rtx() while compiling 2.6.x - Linux kernel - - ia64 specific - - * [300]10907 gcc violates the ia64 ABI (GP must be preserved) - * [301]11320 scheduler bug (in machine depended reorganization pass) - * [302]11599 bug with conditional and __builtin_prefetch - - PowerPC specific - - * [303]9745 [powerpc] gcc mis-compiles libmcrypt (alias problem - during loop) - * [304]10871 error in rs6000_stack_info save_size computation - * [305]11440 gcc mis-compiles c++ code (libkhtml) with -O2, -fno-gcse - cures it - - m68k-specific - - * [306]7594 [m68k] ICE on legal code associated with simplify-rtx - * [307]10557 [m68k] ICE in subreg_offset_representable_p - * [308]11054 [m68k] ICE in reg_overlap_mentioned_p - - ARM-specific - - * [309]10834 [arm] GCC 3.3 still generates incorrect instructions for - functions with __attribute__ ((interrupt ("IRQ"))) - * [310]10842 [arm] Clobbered link register is copied to pc under - certain circumstances - * [311]11052 [arm] noce_process_if_block() can lose REG_INC notes - * [312]11183 [arm] ICE in change_address_1 (3.3) / subreg_hard_regno - (3.4) - - MIPS-specific - - * [313]11084 ICE in propagate_one_insn, in flow.c - - SH-specific - - * [314]10331 can't compile c++ part of gcc cross compiler for sh-elf - * [315]10413 [SH] ICE in reload_cse_simplify_operands, in reload1.c - * [316]11096 i686-linux to sh-linux cross compiler fails to compile - C++ files - - GNU/Linux (or Hurd?) specific - - * [317]2873 Bogus fixinclude of stdio.h from glibc 2.2.3 - - UnixWare specific - - * [318]3163 configure bug: gcc/aclocal.m4 mmap test fails on UnixWare - 7.1.1 - - Cygwin (or mingw) specific - - * [319]5287 ICE with dllimport attribute - * [320]10148 [MingW/CygWin] Compiler dumps core - - DJGPP specific - - * [321]8787 GCC fails to emit .intel_syntax when invoked with - -masm=intel on DJGPP - - Darwin (and MacOS X) specific - - * [322]10900 trampolines crash - - Documentation - - * [323]1607 (c++) Format attributes on methods undocumented - * [324]4252 Invalid option `-fdump-translation-unit' - * [325]4490 Clarify restrictions on -m96bit-long-double, - -m128bit-long-double - * [326]10355 document an issue with regparm attribute on some systems - (e.g. Solaris) - * [327]10726 (fortran) Documentation for function "IDate Intrinsic - (Unix)" is wrong - * [328]10805 document bug in old version of Sun assembler - * [329]10815 warn against GNU binutils on AIX - * [330]10877 document need for newer binutils on i?86-*-linux-gnu - * [331]11280 Manual incorrect with respect to -freorder-blocks - * [332]11466 Document -mlittle-endian and its restrictions for the - sparc64 port - - Testsuite bugs (compiler itself is not affected) - - * [333]10737 newer bison causes g++.dg/parse/crash2.C to incorrectly - report failure - * [334]10810 gcc-3.3 fails make check: buffer overrun in - test_demangle.c - __________________________________________________________________ - -GCC 3.3.2 - - Bug Fixes - - This section lists the problem reports (PRs) from [335]GCC's bug - tracking system that are known to be fixed in the 3.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). - - Bootstrap failures and problems - - * [336]8336 [SCO5] bootstrap config still tries to use COFF options - * [337]9330 [alpha-osf] Bootstrap failure on Compaq Tru64 with - --enable-threads=posix - * [338]9631 [hppa64-linux] gcc-3.3 fails to bootstrap - * [339]9877 fixincludes makes a bad sys/byteorder.h on svr5 (UnixWare - 7.1.1) - * [340]11687 xstormy16-elf build fails in libf2c - * [341]12263 [SGI IRIX] bootstrap fails during compile of - libf2c/libI77/backspace.c - * [342]12490 buffer overflow in scan-decls.c (during Solaris 9 - fix-header processing) - - Internal compiler errors (multi-platform) - - * [343]7277 Casting integers to vector types causes ICE - * [344]7939 (c++) ICE on invalid function template specialization - * [345]11063 (c++) ICE on parsing initialization list of const array - member - * [346]11207 ICE with negative index in array element designator - * [347]11522 (fortran) g77 dwarf-2 ICE in - add_abstract_origin_attribute - * [348]11595 (c++) ICE on duplicate label definition - * [349]11646 (c++) ICE in commit_one_edge_insertion with - -fnon-call-exceptions -fgcse -O - * [350]11665 ICE in struct initializer when taking address - * [351]11852 (c++) ICE with bad struct initializer. - * [352]11878 (c++) ICE in cp_expr_size - * [353]11883 ICE with any -O on mercury-generated C code - * [354]11991 (c++) ICE in cxx_incomplete_type_diagnostic, in - cp/typeck2.c when applying typeid operator to template template - parameter - * [355]12146 ICE in lookup_template_function, in cp/pt.c - * [356]12215 ICE in make_label_edge with -fnon-call-exceptions - -fno-gcse -O2 - * [357]12369 (c++) ICE with templates and friends - * [358]12446 ICE in emit_move_insn on complicated array reference - * [359]12510 ICE in final_scan_insn - * [360]12544 ICE with large parameters used in nested functions - - C and optimization bugs - - * [361]9862 spurious warnings with -W -finline-functions - * [362]10962 lookup_field is a linear search on a linked list (can be - slow if large struct) - * [363]11370 -Wunreachable-code gives false complaints - * [364]11637 invalid assembly with -fnon-call-exceptions - * [365]11885 Problem with bitfields in packed structs - * [366]12082 Inappropriate unreachable code warnings - * [367]12180 Inline optimization fails for variadic function - * [368]12340 loop unroller + gcse produces wrong code - - C++ compiler and library - - * [369]3907 nested template parameter collides with member name - * [370]5293 confusing message when binding a temporary to a reference - * [371]5296 [DR115] Pointers to functions and to template functions - behave differently in deduction - * [372]7939 ICE on function template specialization - * [373]8656 Unable to assign function with __attribute__ and pointer - return type to an appropriate variable - * [374]10147 Confusing error message for invalid template function - argument - * [375]11400 std::search_n() makes assumptions about Size parameter - * [376]11409 issues with using declarations, overloading, and - built-in functions - * [377]11740 ctype<wchar_t>::do_is(mask, wchar_t) doesn't handle - multiple bits in mask - * [378]11786 operator() call on variable in other namespace not - recognized - * [379]11867 static_cast ignores ambiguity - * [380]11928 bug with conversion operators that are typedefs - * [381]12114 Uninitialized memory accessed in dtor - * [382]12163 static_cast + explicit constructor regression - * [383]12181 Wrong code with comma operator and c++ - * [384]12236 regparm and fastcall messes up parameters - * [385]12266 incorrect instantiation of unneeded template during - overload resolution - * [386]12296 istream::peek() doesn't set eofbit - * [387]12298 [sjlj exceptions] Stack unwind destroys - not-yet-constructed object - * [388]12369 ICE with templates and friends - * [389]12337 apparently infinite loop in g++ - * [390]12344 stdcall attribute ignored if function returns a pointer - * [391]12451 missing(late) class forward declaration in cxxabi.h - * [392]12486 g++ accepts invalid use of a qualified name - - x86 specific (Intel/AMD) - - * [393]8869 [x86 MMX] ICE with const variable optimization and MMX - builtins - * [394]9786 ICE in fixup_abnormal_edges with -fnon-call-exceptions - -O2 - * [395]11689 g++3.3 emits un-assembleable code for k6 architecture - * [396]12116 [k6] Invalid assembly output values with X-MAME code - * [397]12070 ICE converting between double and long double with - -msoft-float - - ia64-specific - - * [398]11184 [ia64 hpux] ICE on __builtin_apply building libobjc - * [399]11535 __builtin_return_address may not work on ia64 - * [400]11693 [ia64] ICE in gen_nop_type - * [401]12224 [ia64] Thread-local storage doesn't work - - PowerPC-specific - - * [402]11087 [powerpc64-linux] GCC miscompiles raid1.c from linux - kernel - * [403]11319 loop miscompiled on ppc32 - * [404]11949 ICE Compiler segfault with ffmpeg -maltivec code - - SPARC-specific - - * [405]11662 wrong code for expr. with cast to long long and - exclusive or - * [406]11965 invalid assembler code for a shift < 32 operation - * [407]12301 (c++) stack corruption when a returned expression throws - an exception - - Alpha-specific - - * [408]11717 [alpha-linux] unrecognizable insn compiling for.c of - kernel 2.4.22-pre8 - - HPUX-specific - - * [409]11313 problem with #pragma weak and static inline functions - * [410]11712 __STDC_EXT__ not defined for C++ by default anymore? - - Solaris specific - - * [411]12166 Profiled programs crash if PROFDIR is set - - Solaris-x86 specific - - * [412]12101 i386 Solaris no longer works with GNU as? - - Miscellaneous embedded target-specific bugs - - * [413]10988 [m32r-elf] wrong blockmove code with -O3 - * [414]11805 [h8300-unknown-coff] [H8300] ICE for simple code with - -O2 - * [415]11902 [sh4] spec file improperly inserts rpath even when none - needed - * [416]11903 [sh4] -pthread fails to link due to error in spec file - on sh4 - __________________________________________________________________ - -GCC 3.3.3 - - Minor features - - In addition to the bug fixes documented below, this release contains - few minor features such as: - * Support for --with-sysroot - * Support for automatic detection of executable stacks - * Support for SSE3 instructions - * Support for thread local storage debugging under GDB on S390 - - Bug Fixes - - This section lists the problem reports (PRs) from [417]GCC's bug - tracking system that are known to be fixed in the 3.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). - - Bootstrap failures and issues - - * [418]11890 Building cross gcc-3.3.1 for sparc-sun-solaris2.6 fails - * [419]12399 boehm-gc fails (when building a cross compiler): libtool - unable to infer tagged configuration - * [420]13068 mklibgcc.in doesn't handle multi-level multilib - subdirectories properly - - Internal compiler errors (multi-platform) - - * [421]10060 ICE (stack overflow) on huge file (300k lines) due to - recursive behaviour of copy_rtx_if_shared, in emit_rtl.c - * [422]10555 (c++) ICE on undefined template argument - * [423]10706 (c++) ICE in mangle_class_name_for_template - * [424]11496 (fortran) error in flow_loops_find when -funroll-loops - active - * [425]11741 ICE in pre_insert_copy_insn, in gcse.c - * [426]12440 GCC crashes during compilation of quicktime4linux 2.0.0 - * [427]12632 (fortran) -fbounds-check ICE - * [428]12712 (c++) ICE on short legit C++ code fragment with gcc - 3.3.2 - * [429]12726 (c++) ICE (segfault) on trivial code - * [430]12890 (c++) ICE on compilation of class with throwing method - * [431]12900 (c++) ICE in rtl_verify_flow_info_1 - * [432]13060 (fortran) ICE in fixup_var_refs_1, in function.c on - correct code with -O2 -fno-force-mem - * [433]13289 (c++) ICE in regenerate_decl_from_template on recursive - template - * [434]13318 ICE: floating point exception in the loop optimizer - * [435]13392 (c++) ICE in convert_from_eh_region_ranges_1, in - except.c - * [436]13574 (c++) invalid array default initializer in class lets - gcc consume all memory and die - * [437]13475 ICE on SIMD variables with partial value initialization - * [438]13797 (c++) ICE on invalid template parameter - * [439]13824 (java) gcj SEGV with simple .java program - - C and optimization bugs - - * [440]8776 loop invariants are not removed (most likely) - * [441]10339 [sparc,ppc,ppc64] Invalid optimization: replacing - strncmp by memcmp - * [442]11350 undefined labels with -Os -fPIC - * [443]12826 Optimizer removes reference through volatile pointer - * [444]12500 stabs debug info: void no longer a predefined / builtin - type - * [445]12941 builtin-bitops-1.c miscompilation (latent bug) - * [446]12953 tree inliner bug (in inline_forbidden_p) and fix - * [447]13041 linux-2.6/sound/core/oss/rate.c miscompiled - * [448]13507 spurious printf format warning - * [449]13382 Type information for const pointer disappears during - optimization. - * [450]13394 noreturn attribute ignored on recursive invokation - * [451]13400 Compiled code crashes storing to read-only location - * [452]13521 Endless loop in calculate_global_regs_live - - C++ compiler and library - - Some of the bug fixes in this list were made to implement decisions - that the ISO C++ standards committee has made concerning several defect - reports (DRs). Links in the list below point to detailed discussion of - the relevant defect report. - * [453]2094 unimplemented: use of `ptrmem_cst' in template type - unification - * [454]2294 using declaration confusion - * [455]5050 template instantiation depth exceeds limit: recursion - problem? - * [456]9371 Bad exception handling in - i/ostream::operator>>/<<(streambuf*) - * [457]9546 bad exception handling in ostream members - * [458]10081 basic_ios::_M_cache_locale leaves NULL members in the - face of unknown locales - * [459]10093 [460][DR 61] Setting failbit in exceptions doesn't work - * [461]10095 istream::operator>>(int&) sets ios::badbit when - ios::failbit is set. - * [462]11554 Warning about reordering of initializers doesn't mention - location of constructor - * [463]12297 istream::sentry::sentry() handles eof() incorrectly. - * [464]12352 Exception safety problems in src/localename.cc - * [465]12438 Memory leak in locale::combine() - * [466]12540 Memory leak in locale::locale(const char*) - * [467]12594 DRs [468]60 [TC] and [469]63 [TC] not implemented - * [470]12657 Resolution of [471]DR 292 (WP) still unimplemented - * [472]12696 memory eating infinite loop in diagnostics (error - recovery problem) - * [473]12815 Code compiled with optimization behaves unexpectedly - * [474]12862 Conflicts between typedefs/enums and namespace member - declarations - * [475]12926 Wrong value after assignment in initialize list using - bit-fields - * [476]12967 Resolution of [477]DR 300 [WP] still unimplemented - * [478]12971 Resolution of [479]DR 328 [WP] still unimplemented - * [480]13007 basic_streambuf::pubimbue, imbue wrong - * [481]13009 Implicitly-defined assignment operator writes to wrong - memory - * [482]13057 regparm attribute not applied to destructor - * [483]13070 -Wformat option ignored in g++ - * [484]13081 forward template declarations in <complex> let inlining - fail - * [485]13239 Assertion does not seem to work correctly anymore - * [486]13262 "xxx is private within this context" when initializing a - self-contained template class - * [487]13290 simple typo in concept checking for std::generate_n - * [488]13323 Template code does not compile in presence of typedef - * [489]13369 __verify_grouping (and __add_grouping?) not correct - * [490]13371 infinite loop with packed struct and inlining - * [491]13445 Template argument replacement "dereferences" a typedef - * [492]13461 Fails to access protected-ctor from public constant - * [493]13462 Non-standard-conforming type set::pointer - * [494]13478 gcc uses wrong constructor to initialize a const - reference - * [495]13544 "conflicting types" for enums in different scopes - * [496]13650 string::compare should not (always) use - traits_type::length() - * [497]13683 bogus warning about passing non-PODs through ellipsis - * [498]13688 Derived class is denied access to protected base class - member class - * [499]13774 Member variable cleared in virtual multiple inheritance - class - * [500]13884 Protect sstream.tcc from extern template use - - Java compiler and library - - * [501]10746 [win32] garbage collection crash in GCJ - - Objective-C compiler and library - - * [502]11433 Crash due to dereferencing null pointer when querying - protocol - - Fortran compiler and library - - * [503]12633 logical expression gives incorrect result with - -fugly-logint option - * [504]13037 [gcse-lm] g77 generates incorrect code - * [505]13213 Hex constant problem when compiling with -fugly-logint - and -ftypeless-boz - - x86-specific (Intel/AMD) - - * [506]4490 ICE with -m128bit-long-double - * [507]12292 [x86_64] ICE: RTL check: expected code `const_int', have - `reg' in make_field_assignment, in combine.c - * [508]12441 ICE: can't find a register to spill - * [509]12943 array static-init failure under -fpic, -fPIC - * [510]13608 Incorrect code with -O3 -ffast-math - - PowerPC-specific - - * [511]11598 testcase gcc.dg/20020118-1.c fails runtime check of - __attribute__((aligned(16))) - * [512]11793 ICE in extract_insn, in recog.c (const_vector's) - * [513]12467 vmsumubm emitted when vmsummbm appropriate (typo in - altivec.md) - * [514]12537 g++ generates writeable text sections - - SPARC-specific - - * [515]12496 wrong result for __atomic_add(&value, -1) when using -O0 - -m64 - * [516]12865 mprotect call to make trampoline executable may fail - * [517]13354 ICE in sparc_emit_set_const32 - - ARM-specific - - * [518]10467 [arm] ICE in pre_insert_copy_insn, - - ia64-specific - - * [519]11226 ICE passing struct arg with two floats - * [520]11227 ICE for _Complex float, _Complex long double args - * [521]12644 GCC 3.3.2 fails to compile glibc on ia64 - * [522]13149 build gcc-3.3.2 1305 error:unrecognizable insn - * Various fixes for libunwind - - Alpha-specific - - * [523]12654 Incorrect comparison code generated for Alpha - * [524]12965 SEGV+ICE in cc1plus on alpha-linux with -O2 - * [525]13031 ICE (unrecognizable insn) when building gnome-libs-1.4.2 - - HPPA-specific - - * [526]11634 [hppa] ICE in verify_local_live_at_start, in flow.c - * [527]12158 [hppa] compilation does not terminate at -O1 - - S390-specific - - * [528]11992 Wrong built-in code for memcmp with length 1<<24: only - (1<<24)-1 possible for CLCL-Instruction - - SH-specific - - * [529]9365 segfault in gen_far_branch (config/sh/sh.c) - * [530]10392 optimizer generates faulty array indexing - * [531]11322 SH profiler outputs multiple definitions of symbol - * [532]13069 gcc/config/sh/rtems.h broken - * [533]13302 Putting a va_list in a struct causes seg fault - * [534]13585 Incorrect optimization of call to sfunc - * Fix inappropriately exported libgcc functions from the shared - library - - Other embedded target specific - - * [535]8916 [mcore] unsigned char assign gets hosed. - * [536]11576 [h8300] ICE in change_address_1, in emit-rtl.c - * [537]13122 [h8300] local variable gets corrupted by function call - when -fomit-frame-pointer is given - * [538]13256 [cris] strict_low_part mistreated in delay slots - * [539]13373 [mcore] optimization with -frerun-cse-after-loop - -fexpensive-optimizations produces wrong code on mcore - - GNU HURD-specific - - * [540]12561 gcc/config/t-gnu needs updating to work with - --with-sysroot - - Tru64 Unix specific - - * [541]6243 testsuite fails almost all tests due to no libintl in - LD_LIBRARY_PATH during test. - * [542]11397 weak aliases broken on Tru64 UNIX - - AIX-specific - - * [543]12505 build failure due to defines of uchar in cpphash.h and - sys/types.h - * [544]13150 WEAK symbols not exported by collect2 - - IRIX-specific - - * [545]12666 fixincludes problem on IRIX 6.5.19m - - Solaris-specific - - * [546]12969 Including sys/byteorder.h breaks configure checks - - Testsuite problems (compiler is not affected) - - * [547]10819 testsuite creates CR+LF on compiler version lines in - test summary files - * [548]11612 abi_check not finding correct libgcc_s.so.1 - - Miscellaneous - - * [549]13211 using -###, incorrect warnings about unused linker file - are produced - __________________________________________________________________ - -GCC 3.3.4 - - This is the [550]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.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). - __________________________________________________________________ - -GCC 3.3.5 - - This is the [551]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.3.5 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - __________________________________________________________________ - -GCC 3.3.6 - - This is the [552]list of problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.3.6 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). - - - For questions related to the use of GCC, please consult these web - pages and the [553]GCC manuals. If that fails, the - [554]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [555]gcc@gcc.gnu.org. All of [556]our lists have public - archives. - - Copyright (C) [557]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [558]maintained by the GCC team. Last modified - 2013-10-31[559]. - -References - - 1. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6 - 2. http://gcc.gnu.org/gcc-3.1/changes.html#obsolete_systems - 3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems - 4. http://gcc.gnu.org/gcc-3.3/changes.html#nonnull_attribute - 5. http://gcc.gnu.org/news/dfa.html - 6. http://gcc.gnu.org/c99status.html - 7. http://gcc.gnu.org/onlinedocs/gcc-3.3.6/g77/News.html - 8. http://gcc.gnu.org/PR10140 - 9. http://gcc.gnu.org/PR10198 - 10. http://gcc.gnu.org/PR10338 - 11. http://gcc.gnu.org/PR3581 - 12. http://gcc.gnu.org/PR4382 - 13. http://gcc.gnu.org/PR5533 - 14. http://gcc.gnu.org/PR6387 - 15. http://gcc.gnu.org/PR6412 - 16. http://gcc.gnu.org/PR6620 - 17. http://gcc.gnu.org/PR6663 - 18. http://gcc.gnu.org/PR7068 - 19. http://gcc.gnu.org/PR7083 - 20. http://gcc.gnu.org/PR7647 - 21. http://gcc.gnu.org/PR7675 - 22. http://gcc.gnu.org/PR7718 - 23. http://gcc.gnu.org/PR8116 - 24. http://gcc.gnu.org/PR8358 - 25. http://gcc.gnu.org/PR8511 - 26. http://gcc.gnu.org/PR8564 - 27. http://gcc.gnu.org/PR8660 - 28. http://gcc.gnu.org/PR8766 - 29. http://gcc.gnu.org/PR8803 - 30. http://gcc.gnu.org/PR8846 - 31. http://gcc.gnu.org/PR8906 - 32. http://gcc.gnu.org/PR9216 - 33. http://gcc.gnu.org/PR9261 - 34. http://gcc.gnu.org/PR9263 - 35. http://gcc.gnu.org/PR9429 - 36. http://gcc.gnu.org/PR9516 - 37. http://gcc.gnu.org/PR9600 - 38. http://gcc.gnu.org/PR9629 - 39. http://gcc.gnu.org/PR9672 - 40. http://gcc.gnu.org/PR9749 - 41. http://gcc.gnu.org/PR9794 - 42. http://gcc.gnu.org/PR9829 - 43. http://gcc.gnu.org/PR9916 - 44. http://gcc.gnu.org/PR9936 - 45. http://gcc.gnu.org/PR10262 - 46. http://gcc.gnu.org/PR10278 - 47. http://gcc.gnu.org/PR10446 - 48. http://gcc.gnu.org/PR10451 - 49. http://gcc.gnu.org/PR10506 - 50. http://gcc.gnu.org/PR10549 - 51. http://gcc.gnu.org/PR2001 - 52. http://gcc.gnu.org/PR2391 - 53. http://gcc.gnu.org/PR2960 - 54. http://gcc.gnu.org/PR4046 - 55. http://gcc.gnu.org/PR6405 - 56. http://gcc.gnu.org/PR6798 - 57. http://gcc.gnu.org/PR6871 - 58. http://gcc.gnu.org/PR6909 - 59. http://gcc.gnu.org/PR7189 - 60. http://gcc.gnu.org/PR7642 - 61. http://gcc.gnu.org/PR8634 - 62. http://gcc.gnu.org/PR8750 - 63. http://gcc.gnu.org/PR2161 - 64. http://gcc.gnu.org/PR4319 - 65. http://gcc.gnu.org/PR8602 - 66. http://gcc.gnu.org/PR9177 - 67. http://gcc.gnu.org/PR9853 - 68. http://gcc.gnu.org/PR45 - 69. http://gcc.gnu.org/PR3784 - 70. http://gcc.gnu.org/PR764 - 71. http://gcc.gnu.org/PR5116 - 72. http://gcc.gnu.org/PR2862 - 73. http://gcc.gnu.org/PR3663 - 74. http://gcc.gnu.org/PR3797 - 75. http://gcc.gnu.org/PR3948 - 76. http://gcc.gnu.org/PR4137 - 77. http://gcc.gnu.org/PR4361 - 78. http://gcc.gnu.org/PR4802 - 79. http://gcc.gnu.org/PR5837 - 80. http://gcc.gnu.org/PR4803 - 81. http://gcc.gnu.org/PR5094 - 82. http://gcc.gnu.org/PR5730 - 83. http://gcc.gnu.org/PR6713 - 84. http://gcc.gnu.org/PR7015 - 85. http://gcc.gnu.org/PR7086 - 86. http://gcc.gnu.org/PR7099 - 87. http://gcc.gnu.org/PR7247 - 88. http://gcc.gnu.org/PR7441 - 89. http://gcc.gnu.org/PR7768 - 90. http://gcc.gnu.org/PR7804 - 91. http://gcc.gnu.org/PR8099 - 92. http://gcc.gnu.org/PR8117 - 93. http://gcc.gnu.org/PR8205 - 94. http://gcc.gnu.org/PR8645 - 95. http://gcc.gnu.org/PR8724 - 96. http://gcc.gnu.org/PR8805 - 97. http://gcc.gnu.org/PR8691 - 98. http://gcc.gnu.org/PR8700 - 99. http://gcc.gnu.org/PR8724 - 100. http://gcc.gnu.org/PR8949 - 101. http://gcc.gnu.org/PR9016 - 102. http://gcc.gnu.org/PR9053 - 103. http://gcc.gnu.org/PR9152 - 104. http://gcc.gnu.org/PR9182 - 105. http://gcc.gnu.org/PR9297 - 106. http://gcc.gnu.org/PR9318 - 107. http://gcc.gnu.org/PR9320 - 108. http://gcc.gnu.org/PR9400 - 109. http://gcc.gnu.org/PR9424 - 110. http://gcc.gnu.org/PR9425 - 111. http://gcc.gnu.org/PR9439 - 112. http://gcc.gnu.org/PR9474 - 113. http://gcc.gnu.org/PR9548 - 114. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#231 - 115. http://gcc.gnu.org/PR9555 - 116. http://gcc.gnu.org/PR9561 - 117. http://gcc.gnu.org/PR9563 - 118. http://gcc.gnu.org/PR9582 - 119. http://gcc.gnu.org/PR9622 - 120. http://gcc.gnu.org/PR9683 - 121. http://gcc.gnu.org/PR9791 - 122. http://gcc.gnu.org/PR9817 - 123. http://gcc.gnu.org/PR9825 - 124. http://gcc.gnu.org/PR9826 - 125. http://gcc.gnu.org/PR9924 - 126. http://gcc.gnu.org/PR9946 - 127. http://gcc.gnu.org/PR9964 - 128. http://gcc.gnu.org/PR9988 - 129. http://gcc.gnu.org/PR10033 - 130. http://gcc.gnu.org/PR10097 - 131. http://gcc.gnu.org/PR10132 - 132. http://gcc.gnu.org/PR10180 - 133. http://gcc.gnu.org/PR10199 - 134. http://gcc.gnu.org/PR10300 - 135. http://gcc.gnu.org/PR10427 - 136. http://gcc.gnu.org/PR10503 - 137. http://gcc.gnu.org/PR5956 - 138. http://gcc.gnu.org/PR1832 - 139. http://gcc.gnu.org/PR3924 - 140. http://gcc.gnu.org/PR5634 - 141. http://gcc.gnu.org/PR6367 - 142. http://gcc.gnu.org/PR6491 - 143. http://gcc.gnu.org/PR6742 - 144. http://gcc.gnu.org/PR7113 - 145. http://gcc.gnu.org/PR7236 - 146. http://gcc.gnu.org/PR7278 - 147. http://gcc.gnu.org/PR7384 - 148. http://gcc.gnu.org/PR7388 - 149. http://gcc.gnu.org/PR8587 - 150. http://gcc.gnu.org/PR9038 - 151. http://gcc.gnu.org/PR10197 - 152. http://gcc.gnu.org/PR6005 - 153. http://gcc.gnu.org/PR6389 - 154. http://gcc.gnu.org/PR6576 - 155. http://gcc.gnu.org/PR6652 - 156. http://gcc.gnu.org/PR7060 - 157. http://gcc.gnu.org/PR7073 - 158. http://gcc.gnu.org/PR7180 - 159. http://gcc.gnu.org/PR7416 - 160. http://gcc.gnu.org/PR7570 - 161. http://gcc.gnu.org/PR7578 - 162. http://gcc.gnu.org/PR7611 - 163. http://gcc.gnu.org/PR7709 - 164. http://gcc.gnu.org/PR7766 - 165. http://gcc.gnu.org/PR7785 - 166. http://gcc.gnu.org/PR7786 - 167. http://gcc.gnu.org/PR8142 - 168. http://gcc.gnu.org/PR8234 - 169. http://gcc.gnu.org/PR8415 - 170. http://gcc.gnu.org/PR8481 - 171. http://gcc.gnu.org/PR8593 - 172. http://gcc.gnu.org/PR8759 - 173. http://gcc.gnu.org/PR8997 - 174. http://gcc.gnu.org/PR9253 - 175. http://gcc.gnu.org/PR9254 - 176. http://gcc.gnu.org/PR9271 - 177. http://gcc.gnu.org/PR6767 - 178. http://gcc.gnu.org/PR9911 - 179. http://gcc.gnu.org/PR10020 - 180. http://gcc.gnu.org/PR10546 - 181. http://gcc.gnu.org/PR7029 - 182. http://gcc.gnu.org/PR2903 - 183. http://gcc.gnu.org/PR7873 - 184. http://gcc.gnu.org/PR7680 - 185. http://gcc.gnu.org/PR8705 - 186. http://gcc.gnu.org/PR9986 - 187. http://gcc.gnu.org/PR10056 - 188. http://gcc.gnu.org/PR6744 - 189. http://gcc.gnu.org/PR7361 - 190. http://gcc.gnu.org/PR9496 - 191. http://gcc.gnu.org/PR7067 - 192. http://gcc.gnu.org/PR8480 - 193. http://gcc.gnu.org/PR8784 - 194. http://gcc.gnu.org/PR10315 - 195. http://gcc.gnu.org/PR10267 - 196. http://gcc.gnu.org/PR7916 - 197. http://gcc.gnu.org/PR7926 - 198. http://gcc.gnu.org/PR8555 - 199. http://gcc.gnu.org/PR8994 - 200. http://gcc.gnu.org/PR9426 - 201. http://gcc.gnu.org/PR9806 - 202. http://gcc.gnu.org/PR10077 - 203. http://gcc.gnu.org/PR10233 - 204. http://gcc.gnu.org/PR10286 - 205. http://gcc.gnu.org/PR10308 - 206. http://gcc.gnu.org/PR11272 - 207. http://gcc.gnu.org/PR5754 - 208. http://gcc.gnu.org/PR6597 - 209. http://gcc.gnu.org/PR6949 - 210. http://gcc.gnu.org/PR7053 - 211. http://gcc.gnu.org/PR8164 - 212. http://gcc.gnu.org/PR8384 - 213. http://gcc.gnu.org/PR9559 - 214. http://gcc.gnu.org/PR9649 - 215. http://gcc.gnu.org/PR9864 - 216. http://gcc.gnu.org/PR10432 - 217. http://gcc.gnu.org/PR10475 - 218. http://gcc.gnu.org/PR10635 - 219. http://gcc.gnu.org/PR10661 - 220. http://gcc.gnu.org/PR10700 - 221. http://gcc.gnu.org/PR10712 - 222. http://gcc.gnu.org/PR10796 - 223. http://gcc.gnu.org/PR10890 - 224. http://gcc.gnu.org/PR10939 - 225. http://gcc.gnu.org/PR10956 - 226. http://gcc.gnu.org/PR11041 - 227. http://gcc.gnu.org/PR11059 - 228. http://gcc.gnu.org/PR11083 - 229. http://gcc.gnu.org/PR11105 - 230. http://gcc.gnu.org/PR11149 - 231. http://gcc.gnu.org/PR11228 - 232. http://gcc.gnu.org/PR11282 - 233. http://gcc.gnu.org/PR11301 - 234. http://gcc.gnu.org/PR11308 - 235. http://gcc.gnu.org/PR11473 - 236. http://gcc.gnu.org/PR11503 - 237. http://gcc.gnu.org/PR11513 - 238. http://gcc.gnu.org/PR11198 - 239. http://gcc.gnu.org/PR11304 - 240. http://gcc.gnu.org/PR11381 - 241. http://gcc.gnu.org/PR11536 - 242. http://gcc.gnu.org/PR11557 - 243. http://gcc.gnu.org/PR5897 - 244. http://gcc.gnu.org/PR11279 - 245. http://gcc.gnu.org/PR11022 - 246. http://gcc.gnu.org/PR2330 - 247. http://gcc.gnu.org/PR5388 - 248. http://gcc.gnu.org/PR5390 - 249. http://gcc.gnu.org/PR7877 - 250. http://gcc.gnu.org/PR9393 - 251. http://gcc.gnu.org/PR10032 - 252. http://gcc.gnu.org/PR10468 - 253. http://gcc.gnu.org/PR10527 - 254. http://gcc.gnu.org/PR10679 - 255. http://gcc.gnu.org/PR10682 - 256. http://gcc.gnu.org/PR10689 - 257. http://gcc.gnu.org/PR10845 - 258. http://gcc.gnu.org/PR10849 - 259. http://gcc.gnu.org/PR10888 - 260. http://gcc.gnu.org/PR10929 - 261. http://gcc.gnu.org/PR10931 - 262. http://gcc.gnu.org/PR10940 - 263. http://gcc.gnu.org/PR10968 - 264. http://gcc.gnu.org/PR10990 - 265. http://gcc.gnu.org/PR11039 - 266. http://gcc.gnu.org/PR11062 - 267. http://gcc.gnu.org/PR11095 - 268. http://gcc.gnu.org/PR11098 - 269. http://gcc.gnu.org/PR11137 - 270. http://gcc.gnu.org/PR11154 - 271. http://gcc.gnu.org/PR11329 - 272. http://gcc.gnu.org/PR11332 - 273. http://gcc.gnu.org/PR11431 - 274. http://gcc.gnu.org/PR11528 - 275. http://gcc.gnu.org/PR11546 - 276. http://gcc.gnu.org/PR11567 - 277. http://gcc.gnu.org/PR11645 - 278. http://gcc.gnu.org/PR5179 - 279. http://gcc.gnu.org/PR8204 - 280. http://gcc.gnu.org/PR10838 - 281. http://gcc.gnu.org/PR10886 - 282. http://gcc.gnu.org/PR11349 - 283. http://gcc.gnu.org/PR4823 - 284. http://gcc.gnu.org/PR8878 - 285. http://gcc.gnu.org/PR9815 - 286. http://gcc.gnu.org/PR10402 - 287. http://gcc.gnu.org/PR10504 - 288. http://gcc.gnu.org/PR10673 - 289. http://gcc.gnu.org/PR11044 - 290. http://gcc.gnu.org/PR11089 - 291. http://gcc.gnu.org/PR11420 - 292. http://gcc.gnu.org/PR9362 - 293. http://gcc.gnu.org/PR10142 - 294. http://gcc.gnu.org/PR10663 - 295. http://gcc.gnu.org/PR10835 - 296. http://gcc.gnu.org/PR10876 - 297. http://gcc.gnu.org/PR10955 - 298. http://gcc.gnu.org/PR11018 - 299. http://gcc.gnu.org/PR11556 - 300. http://gcc.gnu.org/PR10907 - 301. http://gcc.gnu.org/PR11320 - 302. http://gcc.gnu.org/PR11599 - 303. http://gcc.gnu.org/PR9745 - 304. http://gcc.gnu.org/PR10871 - 305. http://gcc.gnu.org/PR11440 - 306. http://gcc.gnu.org/PR7594 - 307. http://gcc.gnu.org/PR10557 - 308. http://gcc.gnu.org/PR11054 - 309. http://gcc.gnu.org/PR10834 - 310. http://gcc.gnu.org/PR10842 - 311. http://gcc.gnu.org/PR11052 - 312. http://gcc.gnu.org/PR11183 - 313. http://gcc.gnu.org/PR11084 - 314. http://gcc.gnu.org/PR10331 - 315. http://gcc.gnu.org/PR10413 - 316. http://gcc.gnu.org/PR11096 - 317. http://gcc.gnu.org/PR2873 - 318. http://gcc.gnu.org/PR3163 - 319. http://gcc.gnu.org/PR5287 - 320. http://gcc.gnu.org/PR10148 - 321. http://gcc.gnu.org/PR8787 - 322. http://gcc.gnu.org/PR10900 - 323. http://gcc.gnu.org/PR1607 - 324. http://gcc.gnu.org/PR4252 - 325. http://gcc.gnu.org/PR4490 - 326. http://gcc.gnu.org/PR10355 - 327. http://gcc.gnu.org/PR10726 - 328. http://gcc.gnu.org/PR10805 - 329. http://gcc.gnu.org/PR10815 - 330. http://gcc.gnu.org/PR10877 - 331. http://gcc.gnu.org/PR11280 - 332. http://gcc.gnu.org/PR11466 - 333. http://gcc.gnu.org/PR10737 - 334. http://gcc.gnu.org/PR10810 - 335. http://gcc.gnu.org/bugzilla/ - 336. http://gcc.gnu.org/PR8336 - 337. http://gcc.gnu.org/PR9330 - 338. http://gcc.gnu.org/PR9631 - 339. http://gcc.gnu.org/PR9877 - 340. http://gcc.gnu.org/PR11687 - 341. http://gcc.gnu.org/PR12263 - 342. http://gcc.gnu.org/PR12490 - 343. http://gcc.gnu.org/PR7277 - 344. http://gcc.gnu.org/PR7939 - 345. http://gcc.gnu.org/PR11063 - 346. http://gcc.gnu.org/PR11207 - 347. http://gcc.gnu.org/PR11522 - 348. http://gcc.gnu.org/PR11595 - 349. http://gcc.gnu.org/PR11646 - 350. http://gcc.gnu.org/PR11665 - 351. http://gcc.gnu.org/PR11852 - 352. http://gcc.gnu.org/PR11878 - 353. http://gcc.gnu.org/PR11883 - 354. http://gcc.gnu.org/PR11991 - 355. http://gcc.gnu.org/PR12146 - 356. http://gcc.gnu.org/PR12215 - 357. http://gcc.gnu.org/PR12369 - 358. http://gcc.gnu.org/PR12446 - 359. http://gcc.gnu.org/PR12510 - 360. http://gcc.gnu.org/PR12544 - 361. http://gcc.gnu.org/PR9862 - 362. http://gcc.gnu.org/PR10962 - 363. http://gcc.gnu.org/PR11370 - 364. http://gcc.gnu.org/PR11637 - 365. http://gcc.gnu.org/PR11885 - 366. http://gcc.gnu.org/PR12082 - 367. http://gcc.gnu.org/PR12180 - 368. http://gcc.gnu.org/PR12340 - 369. http://gcc.gnu.org/PR3907 - 370. http://gcc.gnu.org/PR5293 - 371. http://gcc.gnu.org/PR5296 - 372. http://gcc.gnu.org/PR7939 - 373. http://gcc.gnu.org/PR8656 - 374. http://gcc.gnu.org/PR10147 - 375. http://gcc.gnu.org/PR11400 - 376. http://gcc.gnu.org/PR11409 - 377. http://gcc.gnu.org/PR11740 - 378. http://gcc.gnu.org/PR11786 - 379. http://gcc.gnu.org/PR11867 - 380. http://gcc.gnu.org/PR11928 - 381. http://gcc.gnu.org/PR12114 - 382. http://gcc.gnu.org/PR12163 - 383. http://gcc.gnu.org/PR12181 - 384. http://gcc.gnu.org/PR12236 - 385. http://gcc.gnu.org/PR12266 - 386. http://gcc.gnu.org/PR12296 - 387. http://gcc.gnu.org/PR12298 - 388. http://gcc.gnu.org/PR12369 - 389. http://gcc.gnu.org/PR12337 - 390. http://gcc.gnu.org/PR12344 - 391. http://gcc.gnu.org/PR12451 - 392. http://gcc.gnu.org/PR12486 - 393. http://gcc.gnu.org/PR8869 - 394. http://gcc.gnu.org/PR9786 - 395. http://gcc.gnu.org/PR11689 - 396. http://gcc.gnu.org/PR12116 - 397. http://gcc.gnu.org/PR12070 - 398. http://gcc.gnu.org/PR11184 - 399. http://gcc.gnu.org/PR11535 - 400. http://gcc.gnu.org/PR11693 - 401. http://gcc.gnu.org/PR12224 - 402. http://gcc.gnu.org/PR11087 - 403. http://gcc.gnu.org/PR11319 - 404. http://gcc.gnu.org/PR11949 - 405. http://gcc.gnu.org/PR11662 - 406. http://gcc.gnu.org/PR11965 - 407. http://gcc.gnu.org/PR12301 - 408. http://gcc.gnu.org/PR11717 - 409. http://gcc.gnu.org/PR11313 - 410. http://gcc.gnu.org/PR11712 - 411. http://gcc.gnu.org/PR12166 - 412. http://gcc.gnu.org/PR12101 - 413. http://gcc.gnu.org/PR10988 - 414. http://gcc.gnu.org/PR11805 - 415. http://gcc.gnu.org/PR11902 - 416. http://gcc.gnu.org/PR11903 - 417. http://gcc.gnu.org/bugzilla/ - 418. http://gcc.gnu.org/PR11890 - 419. http://gcc.gnu.org/PR12399 - 420. http://gcc.gnu.org/PR13068 - 421. http://gcc.gnu.org/PR10060 - 422. http://gcc.gnu.org/PR10555 - 423. http://gcc.gnu.org/PR10706 - 424. http://gcc.gnu.org/PR11496 - 425. http://gcc.gnu.org/PR11741 - 426. http://gcc.gnu.org/PR12440 - 427. http://gcc.gnu.org/PR12632 - 428. http://gcc.gnu.org/PR12712 - 429. http://gcc.gnu.org/PR12726 - 430. http://gcc.gnu.org/PR12890 - 431. http://gcc.gnu.org/PR12900 - 432. http://gcc.gnu.org/PR13060 - 433. http://gcc.gnu.org/PR13289 - 434. http://gcc.gnu.org/PR13318 - 435. http://gcc.gnu.org/PR13392 - 436. http://gcc.gnu.org/PR13574 - 437. http://gcc.gnu.org/PR13475 - 438. http://gcc.gnu.org/PR13797 - 439. http://gcc.gnu.org/PR13824 - 440. http://gcc.gnu.org/PR8776 - 441. http://gcc.gnu.org/PR10339 - 442. http://gcc.gnu.org/PR11350 - 443. http://gcc.gnu.org/PR12826 - 444. http://gcc.gnu.org/PR12500 - 445. http://gcc.gnu.org/PR12941 - 446. http://gcc.gnu.org/PR12953 - 447. http://gcc.gnu.org/PR13041 - 448. http://gcc.gnu.org/PR13507 - 449. http://gcc.gnu.org/PR13382 - 450. http://gcc.gnu.org/PR13394 - 451. http://gcc.gnu.org/PR13400 - 452. http://gcc.gnu.org/PR13521 - 453. http://gcc.gnu.org/PR2094 - 454. http://gcc.gnu.org/PR2294 - 455. http://gcc.gnu.org/PR5050 - 456. http://gcc.gnu.org/PR9371 - 457. http://gcc.gnu.org/PR9546 - 458. http://gcc.gnu.org/PR10081 - 459. http://gcc.gnu.org/PR10093 - 460. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#61 - 461. http://gcc.gnu.org/PR10095 - 462. http://gcc.gnu.org/PR11554 - 463. http://gcc.gnu.org/PR12297 - 464. http://gcc.gnu.org/PR12352 - 465. http://gcc.gnu.org/PR12438 - 466. http://gcc.gnu.org/PR12540 - 467. http://gcc.gnu.org/PR12594 - 468. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#60 - 469. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#63 - 470. http://gcc.gnu.org/PR12657 - 471. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#292 - 472. http://gcc.gnu.org/PR12696 - 473. http://gcc.gnu.org/PR12815 - 474. http://gcc.gnu.org/PR12862 - 475. http://gcc.gnu.org/PR12926 - 476. http://gcc.gnu.org/PR12967 - 477. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html - 478. http://gcc.gnu.org/PR12971 - 479. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#328 - 480. http://gcc.gnu.org/PR13007 - 481. http://gcc.gnu.org/PR13009 - 482. http://gcc.gnu.org/PR13057 - 483. http://gcc.gnu.org/PR13070 - 484. http://gcc.gnu.org/PR13081 - 485. http://gcc.gnu.org/PR13239 - 486. http://gcc.gnu.org/PR13262 - 487. http://gcc.gnu.org/PR13290 - 488. http://gcc.gnu.org/PR13323 - 489. http://gcc.gnu.org/PR13369 - 490. http://gcc.gnu.org/PR13371 - 491. http://gcc.gnu.org/PR13445 - 492. http://gcc.gnu.org/PR13461 - 493. http://gcc.gnu.org/PR13462 - 494. http://gcc.gnu.org/PR13478 - 495. http://gcc.gnu.org/PR13544 - 496. http://gcc.gnu.org/PR13650 - 497. http://gcc.gnu.org/PR13683 - 498. http://gcc.gnu.org/PR13688 - 499. http://gcc.gnu.org/PR13774 - 500. http://gcc.gnu.org/PR13884 - 501. http://gcc.gnu.org/PR10746 - 502. http://gcc.gnu.org/PR11433 - 503. http://gcc.gnu.org/PR12633 - 504. http://gcc.gnu.org/PR13037 - 505. http://gcc.gnu.org/PR13213 - 506. http://gcc.gnu.org/PR4490 - 507. http://gcc.gnu.org/PR12292 - 508. http://gcc.gnu.org/PR12441 - 509. http://gcc.gnu.org/PR12943 - 510. http://gcc.gnu.org/PR13608 - 511. http://gcc.gnu.org/PR11598 - 512. http://gcc.gnu.org/PR11793 - 513. http://gcc.gnu.org/PR12467 - 514. http://gcc.gnu.org/PR12537 - 515. http://gcc.gnu.org/PR12496 - 516. http://gcc.gnu.org/PR12865 - 517. http://gcc.gnu.org/PR13354 - 518. http://gcc.gnu.org/PR10467 - 519. http://gcc.gnu.org/PR11226 - 520. http://gcc.gnu.org/PR11227 - 521. http://gcc.gnu.org/PR12644 - 522. http://gcc.gnu.org/PR13149 - 523. http://gcc.gnu.org/PR12654 - 524. http://gcc.gnu.org/PR12965 - 525. http://gcc.gnu.org/PR13031 - 526. http://gcc.gnu.org/PR11634 - 527. http://gcc.gnu.org/PR12158 - 528. http://gcc.gnu.org/PR11992 - 529. http://gcc.gnu.org/PR9365 - 530. http://gcc.gnu.org/PR10392 - 531. http://gcc.gnu.org/PR11322 - 532. http://gcc.gnu.org/PR13069 - 533. http://gcc.gnu.org/PR13302 - 534. http://gcc.gnu.org/PR13585 - 535. http://gcc.gnu.org/PR8916 - 536. http://gcc.gnu.org/PR11576 - 537. http://gcc.gnu.org/PR13122 - 538. http://gcc.gnu.org/PR13256 - 539. http://gcc.gnu.org/PR13373 - 540. http://gcc.gnu.org/PR12561 - 541. http://gcc.gnu.org/PR6243 - 542. http://gcc.gnu.org/PR11397 - 543. http://gcc.gnu.org/PR12505 - 544. http://gcc.gnu.org/PR13150 - 545. http://gcc.gnu.org/PR12666 - 546. http://gcc.gnu.org/PR12969 - 547. http://gcc.gnu.org/PR10819 - 548. http://gcc.gnu.org/PR11612 - 549. http://gcc.gnu.org/PR13211 - 550. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.4 - 551. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.5 - 552. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.6 - 553. http://gcc.gnu.org/onlinedocs/ - 554. mailto:gcc-help@gcc.gnu.org - 555. mailto:gcc@gcc.gnu.org - 556. http://gcc.gnu.org/lists.html - 557. http://www.fsf.org/ - 558. http://gcc.gnu.org/about.html - 559. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-3.2/index.html - - GCC 3.2 Release Series - - April 25, 2003 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 3.2.3. - - The purpose of the GCC 3.2 release series is to provide a stable - platform for OS distributors to use building their next releases. A - primary objective was to stabilize the C++ ABI; we believe that the - interface to the compiler and the C++ standard library are now - relatively stable. - - Be aware that C++ code compiled by GCC 3.2.x will (in general) not - interoperate with code compiled by GCC 3.1.1 or earlier. - - Please refer to our [2]detailed list of news, caveats, and bug-fixes - for further information. - -Release History - - GCC 3.2.3 - April 25, 2003 ([3]changes) - - GCC 3.2.2 - February 5, 2003 ([4]changes) - - GCC 3.2.1 - November 19, 2002 ([5]changes) - - GCC 3.2 - August 14, 2002 ([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 our CVS server. - - - For questions related to the use of GCC, please consult these web - pages and the [12]GCC manuals. If that fails, the - [13]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [14]gcc@gcc.gnu.org. All of [15]our lists have public - archives. - - Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [17]maintained by the GCC team. Last modified - 2012-11-02[18]. - -References - - 1. http://www.gnu.org/ - 2. http://gcc.gnu.org/gcc-3.2/changes.html - 3. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3 - 4. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.2 - 5. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.1 - 6. http://gcc.gnu.org/gcc-3.2/changes.html#3.2 - 7. http://gcc.gnu.org/gcc-3.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/onlinedocs/ - 13. mailto:gcc-help@gcc.gnu.org - 14. mailto:gcc@gcc.gnu.org - 15. http://gcc.gnu.org/lists.html - 16. http://www.fsf.org/ - 17. http://gcc.gnu.org/about.html - 18. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-3.2/changes.html - - GCC 3.2 Release Series - Changes, New Features, and Fixes - - The latest release in the 3.2 release series is [1]GCC 3.2.3. - -Caveats and New Features - - Caveats - - * The C++ compiler does not correctly zero-initialize - pointers-to-data members. You must explicitly initialize them. For - example: int S::*m(0); will work, but depending on - default-initialization to zero will not work. This bug cannot be - fixed in GCC 3.2 without inducing unacceptable risks. It will be - fixed in GCC 3.3. - * This GCC release is based on the GCC 3.1 sourcebase, and thus has - all the [2]changes in the GCC 3.1 series. In addition, GCC 3.2 has - a number of C++ ABI fixes which make its C++ compiler generate - binary code which is incompatible with the C++ compilers found in - earlier GCC releases, including GCC 3.1 and GCC 3.1.1. - - Frontend Enhancements - - C/C++/Objective-C - - * The method of constructing the list of directories to be searched - for header files has been revised. If a directory named by a -I - option is a standard system include directory, the option is - ignored to ensure that the default search order for system - directories and the special treatment of system header files are - not defeated. - * The C and Objective-C compilers no longer accept the "Naming Types" - extension (typedef foo = bar); it was already unavailable in C++. - Code which uses it will need to be changed to use the "typeof" - extension instead: typedef typeof(bar) foo. (We have removed this - extension without a period of deprecation because it has caused the - compiler to crash since version 3.0 and no one noticed until very - recently. Thus we conclude it is not in widespread use.) - - C++ - - * GCC 3.2 fixed serveral differences between the C++ ABI implemented - in GCC and the multi-vendor standard, but more have been found - since the release. 3.2.1 adds a new warning, -Wabi, to warn about - code which is affected by these bugs. We will fix these bugs in - some future release, once we are confident that all have been - found; until then, it is our intention to make changes to the ABI - only if they are necessary for correct compilation of C++, as - opposed to conformance to the ABI documents. - * For details on how to build an ABI compliant compiler for GNU/Linux - systems, check the [3]common C++ ABI page. - - New Targets and Target Specific Improvements - - IA-32 - - * Fixed a number of bugs in SSE and MMX intrinsics. - * Fixed common compiler crashes with SSE instruction set enabled - (implied by -march=pentium3, pentium4, athlon-xp) - * __m128 and __m128i is not 128bit aligned when used in structures. - - x86-64 - - * A bug whereby the compiler could generate bad code for bzero has - been fixed. - * ABI fixes (implying ABI incompatibilities with previous version in - some corner cases) - * Fixed prefetch code generation - __________________________________________________________________ - -GCC 3.2.3 - - 3.2.3 is a bug fix release only; there are no new features that were - not present in GCC 3.2.2. - - Bug Fixes - - This section lists the problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.2.3 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here), and some of the titles have been changed to - make them more clear. - - Internal Compiler Errors (multi-platform) - - * [4]3782: (c++) -quiet -fstats produces a segmentation fault in - cc1plus - * [5]6440: (c++) template specializations cause ICE - * [6]7050: (c++) ICE on: (i ? get_string() : throw) - * [7]7741: ICE on conflicting types (make_decl_rtl in varasm.c) - * [8]7982: (c++) ICE due to infinite recursion (using STL set) - * [9]8068: exceedingly high (infinite) memory usage - * [10]8178: ICE with __builtin_ffs - * [11]8396: ICE in copy_to_mode_reg, in explow.c - * [12]8674: (c++) ICE in cp_expr_size, in cp/cp-lang.c - * [13]9768: ICE when optimizing inline code at -O2 - * [14]9798: (c++) Infinite recursion (segfault) in - cp/decl.c:push_using_directive with recursive using directives - * [15]9799: mismatching structure initializer with nested flexible - array member: ICE - * [16]9928: ICE on duplicate enum declaration - * [17]10114: ICE in mem_loc_descriptor, in dwarf2out.c (affects - sparc, alpha) - * [18]10352: ICE in find_reloads_toplev - * [19]10336: ICE with -Wunreachable-code - - C/optimizer bugs: - - * [20]8224: Incorrect joining of signed and unsigned division - * [21]8613: -O2 produces wrong code with builtin strlen and - postincrements - * [22]8828: gcc reports some code is unreachable when it is not - * [23]9226: GCSE breaking argument passing - * [24]9853: miscompilation of non-constant structure initializer - * [25]9797: C99-style struct initializers are miscompiled - * [26]9967: Some standard C function calls should not be replaced - when optimizing for size - * [27]10116: ce2: invalid merge of join_bb in the context of switch - statements - * [28]10171: wrong code for inlined function - * [29]10175: -Wunreachable-code doesn't work for single lines - - C++ compiler and library: - - * [30]8316: Confusing diagnostic for code that misuses conversion - operators - * [31]9169: filebuf output fails if codecvt<>::out returns noconv - * [32]9420: incomplete type incorrectly reported - * [33]9459: typeof in return type specification of template not - supported - * [34]9507: filebuf::open handles ios_base::ate incorrectly - * [35]9538: Out-of-bounds memory access in streambuf::sputbackc - * [36]9602: Total confusion about template/friend/virtual/abstract - * [37]9993: destructor not called for local object created within and - returned from infinite loop - * [38]10167: ieee_1003.1-2001 locale specialisations on a glibc-2.3.2 - system - - Java compiler and library: - - * [39]9652: libgcj build fails on irix6.5.1[78] - * [40]10144: gas on solaris complains about bad .stabs lines for - java, native as unaffected - - x86-specific (Intel/AMD): - - * [41]8746: gcc miscompiles Linux kernel ppa driver on x86 - * [42]9888: -mcpu=k6 -Os produces out of range loop instructions - * [43]9638: Cross-build for target i386-elf and i586-pc-linux-gnu - failed - * [44]9954: Cross-build for target i586-pc-linux-gnu (--with-newlib) - failed - - SPARC-specific: - - * [45]7784: [Sparc] ICE in extract_insn, in recog.c - * [46]7796: sparc extra failure with -m64 on execute/930921-1.c in - unroll.c - * [47]8281: ICE when compiling with -O2 -fPIC for Ultrasparc - * [48]8366: [Sparc] C testsuite failure with -m64 -fpic -O in - execute/loop-2d.c - * [49]8726: gcc -O2 miscompiles Samba 2.2.7 on 32-bit sparc - * [50]9414: Scheduling bug on Ultrasparc - * [51]10067: GCC-3.2.2 outputs invalid asm on sparc64 - - m68k-specific: - - * [52]7248: broken "inclusive or" code - * [53]8343: m68k-elf/rtems ICE at instantiate_virtual_regs_1 - - PowerPC-specific: - - * [54]9732: Wrong code with -O2 -fPIC - * [55]10073: ICE: powerpc cannot split insn - - Alpha-specific: - - * [56]7702: optimization problem on a DEC alpha under OSF1 - * [57]9671: gcc.3.2.2 does not build on a HP Tru64 Unix v5.1B system - - HP-specific: - - * [58]8694: <string> breaks <ctype.h> on HP-UX 10.20 (DUP: 9275) - * [59]9953: (ada) gcc 3.2.x can't build 3.3-branch ada on HP-UX 10 - (missing symbol) - * [60]10271: Floating point args don't get reloaded across function - calls with -O2 - - MIPS specific: - - * [61]6362: mips-irix6 gcc-3.1 C testsuite failure with -mips4 in - compile/920501-4.c - - CRIS specific: - - * [62]10377: gcc-3.2.2 creates bad assembler code for cris - - Miscellaneous and minor bugs: - - * [63]6955: collect2 says "core dumped" when there is no core - __________________________________________________________________ - -GCC 3.2.2 - - Beginning with 3.2.2, GCC's Makefile suite supports redirection of make - install by means of the DESTDIR variable. Parts of the GCC tree have - featured that support long before, but now it is available even from - the top level. - - Other than that, GCC 3.2.2 is a bug fix release only; there are no new - features that were not present in GCC 3.2.1. - - Bug Fixes - - On the following i386-based systems GCC 3.2.1 broke the C ABI wrt. - functions returning structures: Cygwin, FreeBSD (GCC 3.2.1 as shipped - with FreeBSD 5.0 does not have this problem), Interix, a.out-based - GNU/Linux and NetBSD, OpenBSD, and Darwin. GCC 3.2.2 reverts this ABI - change, and thus restores ABI-compatibility with previous releases - (except GCC 3.2.1) on these platforms. - - This section lists the problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.2.2 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here) and some of the titles have been changed to - make them more clear. - - Internal Compiler Errors (multi-platform) - - * [64]5919: (c++) ICE when passing variable array to template - function - * [65]7129: (c++) ICE with min/max assignment operators (<?= and >?=) - * [66]7507: ICE with -O2 when address of called function is a - complicated expression - * [67]7622: ICE with nested inline functions if function's address is - taken - * [68]7681: (fortran) ICE in compensate_edge, in reg-stack.c (also PR - [69]9258) - * [70]8031: (c++) ICE in code comparing typeids and casting from - virtual base - * [71]8275: ICE in simplify_subreg - * [72]8332: (c++) builtin strlen/template interaction causes ICE - * [73]8372: (c++) ICE on explicit call of destructor - * [74]8439: (c, not c++) empty struct causes ICE - * [75]8442: (c++) ICE with nested template classes - * [76]8518: ICE when compiling mplayer ("extern inline" issue) - * [77]8615: (c++) ICE with out-of-range character constant template - argument - * [78]8663: (c++) ICE in cp_expr_size, at cp-lang.c:307 - * [79]8799: (c++) ICE: error reporting routines re-entered - * [80]9328: (c++) ICE with typeof(X) for overloaded X - * [81]9465: (preprocessor) cpp -traditional ICE on null bytes - - C++ (compiler and library) bugs - - * [82]47: scoping in nested classes is broken - * [83]6745: problems with iostream rdbuf() member function - * [84]8214: conversion from const char* const to char* sometimes - accepted illegally - * [85]8493: builtin strlen and overload resolution (same bug as - [86]8332) - * [87]8503: strange behaviour of function types - * [88]8727: compiler confused by inheritance from an anonymous struct - * [89]7445: poor performance of std::locale::classic() in - multi-threaded applications - * [90]8230: mishandling of overflow in vector<T>::resize - * [91]8399: sync_with_stdio(false) breaks unformatted input - * [92]8662: illegal access of private member of unnamed class is - accepted - * [93]8707: "make distclean" fails in libstdc++-v3 directory - * [94]8708: __USE_MALLOC doesn't work - * [95]8790: Use of non-thread-safe strtok in src/localename.cc - * [96]8887: Bug in date formats with --enable-clocale=generic - * [97]9076: Call Frame Instructions are not handled correctly during - unwind operation - * [98]9151: std::setprecision limited to 16 digits when outputting a - double to a stream - * [99]9168: codecvt<char, char, mbstate_t> overwrites output buffers - * [100]9269: libstdc++ headers: explicit specialization of function - must precede its first use - * [101]9322: return value of basic_streambuf<>::getloc affected by - locale::global - * [102]9433: segfault in runtime support for dynamic_cast - - C and optimizer bugs - - * [103]8032: GCC incorrectly initializes static structs that have - flexible arrays - * [104]8639: simple arithmetic expression broken - * [105]8794: optimization improperly eliminates certain expressions - * [106]8832: traditional "asm volatile" code is illegally optimized - * [107]8988: loop optimizer bug: with -O2, code is generated that - segfaults (found on i386, bug present for all platforms) - * [108]9492: structure copy clobbers subsequent stores to structure - - Objective-C bugs - - * [109]9267: Objective-C parser won't build with newer bison versions - (e.g. 1.875) - - Ada bugs - - * [110]8344: Ada build problem due to conflict between gcc/final.o, - gcc/ada/final.o - - Preprocessor bugs - - * [111]8524: _Pragma within macros is improperly expanded - * [112]8880: __WCHAR_TYPE__ macro incorrectly set to "long int" with - -fshort-wchar - - ARM-specific - - * [113]9090: arm ICE with >= -O2; regression from gcc-2.95 - - x86-specific (Intel/AMD) - - * [114]8588: ICE in extract_insn, at recog.c:NNNN (shift instruction) - * [115]8599: loop unroll bug with -march=k6-3 - * [116]9506: ABI breakage in structure return (affects BSD and - Cygwin, but not GNU/Linux) - - FreeBSD 5.0 specific - - * [117]9484: GCC 3.2.1 Bootstrap failure on FreeBSD 5.0 - - RTEMS-specific - - * [118]9292: hppa1.1-rtems configurery problems - * [119]9293: [m68k-elf/rtems] config/m68k/t-crtstuff bug - * [120]9295: [mips-rtems] config/mips/rtems.h init/fini issue - * [121]9296: gthr-rtems regression - * [122]9316: powerpc-rtems: extending multilibs - - HP-PA specific - - * [123]9493: ICE with -O2 when building a simple function - - Documentation - - * [124]7341: hyperlink to gcov in GCC documentation doesn't work - * [125]8947: Please add a warning about "-malign-double" in docs - * [126]7448, [127]8882: typo cleanups - __________________________________________________________________ - -GCC 3.2.1 - - 3.2.1 adds a new warning, -Wabi. This option warns when GNU C++ - generates code that is known not to be binary-compatible with the - vendor-neutral ia32/ia64 ABI. Please consult the GCC manual, included - in the distribution, for details. - - This release also removes an old GCC extension, "naming types", and the - documentation now directs users to use a different GCC extension, - __typeof__, instead. The feature had evidently been broken for a while. - - Otherwise, 3.2.1 is a bug fix release only; other than bug fixes and - the new warning there are no new features that were not present in GCC - 3.2. - - In addition, the previous fix for [128]PR 7445 (poor performance of - std::locale::classic() in multi-threaded applications) was reverted - ("unfixed"), because the "fix" was not thread-safe. - - Bug Fixes - - This section lists the problem reports (PRs) from GCC's bug tracking - system that are known to be fixed in the 3.2.1 release. This list might - not be complete (that is, it is possible that some PRs that have been - fixed are not listed here). As you can see, the number of bug fixes is - quite large, so it is strongly recommended that users of earlier GCC - 3.x releases upgrade to GCC 3.2.1. - - Internal Compiler Errors (multi-platform) - - * [129]2521: (c++) ICE in build_ptrmemfunc, in cp/typeck.c - * [130]5661: (c++) ICE instantiating template on array of unknown - size (bad code) - * [131]6419: (c++) ICE in make_decl_rtl for "longest" attribute on - 64-bit platforms - * [132]6994: (c++) ICE in find_function_data - * [133]7150: preprocessor: GCC -dM -E gives an ICE - * [134]7160: ICE when optimizing branches without a return value - * [135]7228: (c++) ICE when using member template and template - function - * [136]7266: (c++) ICE with -pedantic on missing typename - * [137]7353: ICE from use of "Naming Types" extension, see above - * [138]7411: ICE in instantiate_virtual_regs_1, in function.c - * [139]7478: (c++) ICE on static_cast inside template - * [140]7526: preprocessor core dump when _Pragma implies #pragma - dependency - * [141]7721: (c++) ICE on simple (but incorrect) template ([142]7803 - is a duplicate) - * [143]7754: (c++) ICE on union with template parameter - * [144]7788: (c++) redeclaring a definition as an incomplete class - causes ICE - * [145]8031: (c++) ICE in comptypes, in cp/typeck.c - * [146]8055: preprocessor dies with SIG11 when building FreeBSD - kernel - * [147]8067: (c++) ICE due to mishandling of __FUNCTION__ and related - variables - * [148]8134: (c++) ICE in force_store_init_value on legal code - * [149]8149: (c++) ICE on incomplete type - * [150]8160: (c++) ICE in build_modify_expr, in cp/typeck.c: array - initialization - - C++ (compiler and library) bugs - - * [151]5607: No pointer adjustment in covariant return types - * [152]6579: Infinite loop with statement expressions in member - initialization - * [153]6803: Default copy constructor bug in GCC 3.1 - * [154]7176: g++ confused by friend and static member with same name - * [155]7188: Segfault with template class and recursive (incorrect) - initializer list - * [156]7306: Regression: GCC 3.x fails to compile code with virtual - inheritance if a method has a variable number of arguments - * [157]7461: ctype<char>::classic_table() returns offset array on - Cygwin - * [158]7524: f(const float arg[3]) fails - * [159]7584: Erroneous ambiguous base error on using declaration - * [160]7676: Member template overloading problem - * [161]7679: infinite loop when a right parenthesis is missing - * [162]7811: default locale not taken from environment - * [163]7961: compare( char *) implemented incorrectly in - basic_string<> - * [164]8071: basic_ostream::operator<<(streambuf*) loops forever if - streambuf::underflow() leaves gptr() NULL (dups: [165]8127, - [166]6745) - * [167]8096: deque::at() throws std::range_error instead of - std::out_of_range - * [168]8127: cout << cin.rdbuf() infinite loop - * [169]8218: Excessively large memory consumed for classes with large - array members - * [170]8287: GCC 3.2: Destructor called for non-constructed local - object - * [171]8347: empty vector range used in string construction causes - core dump - * [172]8348: fail() flag is set in istringstream when eof() flag is - set - * [173]8391: regression: infinite loop in cp/decl2.c(finish_file) - - C and optimizer bugs - - * [174]6627: -fno-align-functions doesn't seem to disable function - alignment - * [175]6631: life_analysis misoptimizes code to initialize fields of - a structure - * [176]7102: unsigned char division results in floating exception - * [177]7120: Run once loop should *always* be unrolled - (pessimization) - * [178]7209: Bug involving array referencing and ?: operator - * [179]7515: invalid inlining of global function with -O3 - * [180]7814: incorrect scheduling for glibc-2.2.92 strcpy test - * [181]8467: bug in sibling call optimization - - Preprocessor bugs - - * [182]4890: incorrect line markers from the traditional preprocessor - * [183]7357: -M option omits system headers files (making it the same - as -MM) - * [184]7358: Changes to Sun's make Dependencies - * [185]7602: C++ header files found in CPLUS_INCLUDE_PATH treated as - C headers - * [186]7862: Interrupting GCC -MD removes .d file but not .o - * [187]8190: Failed compilation deletes -MD dependency file - * [188]8524: _Pragma within macro is improperly expanded - - x86 specific (Intel/AMD) - - * [189]5351: (i686-only) function pass-by-value structure copy - corrupts stack ([190]7591 is a duplicate) - * [191]6845, [192]7034, [193]7124, [194]7174: ICE's with - -march=pentium3/pentium2/athlon (these are all the same underlying - bug, in MMX register use) - * [195]7134, [196]7375, [197]7390: ICE with -march=athlon (maybe same - as above?) - * [198]6890: xmmintrin.h, _MM_TRANSPOSE4_PS is broken - * [199]6981: wrong code in 64-bit manipulation on x86 - * [200]7242: GCC -mcpu=pentium[23] doesn't define __tune_pentiumpro__ - macro - * [201]7396: ix86: cmpgt_ss, cmpge_ss, cmpngt_ss, and cmpnge_ss SSE - intrinsics are broken - * [202]7630: GCC 3.2 breaks on Mozilla 1.0's JS sources with - -march=pentium4 - * [203]7693: Typo in i386 mmintrin.h header - * [204]7723: ICE - Pentium3 sse - GCC 3.2 - * [205]7951: ICE on -march=pentium4 -O2 -mfpmath=sse - * [206]8146: (i686 only) gcc 3.2 miscompiles gcc 2.95.3 - - PowerPC specific - - * [207]5967: GCC bug when profiling nested functions on powerpc - * [208]6984: wrong code generated with -O2, -O3, -Os for do-while - loop on PowerPC - * [209]7114: PowerPC: ICE building strcoll.op from glibc-2.2.5 - * [210]7130: miscompiled code for GCC-3.1 on - powerpc-unknown-linux-gnu with -funroll-all-loops - * [211]7133: PowerPC ICE: unrecognizable insn - * [212]7380: ICE in extract_insn, at recog.c:2148 - * [213]8252: ICE on Altivec code with optimization turned on - * [214]8451: Altivec ICE in GCC 3.2 - - HP/PA specific - - * [215]7250: __ashrdi3 returns wrong value on 32 bit hppa - - SPARC specific - - * [216]6668: when using --disable-multilib, libgcc_s.so is installed - in the wrong place on sparc-solaris - * [217]7151: ICE when compiling for UltraSPARC - * [218]7335: SPARC: ICE in verify_wide_reg (flow.c:557) with long - double and -O1 - * [219]7842: [REGRESSION] SPARC code gen bug - - ARM specific - - * [220]7856: [arm] invalid offset in constant pool reference - * [221]7967: optimization produces wrong code (ARM) - - Alpha specific - - * [222]7374: __builtin_fabsl broken on alpha - - IBM s390 specific - - * [223]7370: ICE in fixup_var_refs_1 on s390x - * [224]7409: loop optimization bug on s390x-linux-gnu - * [225]8232: s390x: ICE when using bcmp with int length argument - - SCO specific - - * [226]7623: SCO OpenServer build fails with machmode.def: undefined - symbol: BITS_PER_UNIT - - m68k/Coldfire specific - - * [227]8314: crtbegin, crtend need to be multilib'ed for this - platform - - Documentation - - * [228]761: Document some undocumented options - * [229]5610: Fix documentation about invoking SSE instructions - (-mfpmath=sse) - * [230]7484: List -Wmissing-declarations as C-only option - * [231]7531: -mcmodel not documented for x86-64 - * [232]8120: Update documentation of bad use of ## - __________________________________________________________________ - -GCC 3.2 - - 3.2 is a small bug fix release, but there is a change to the - application binary interface (ABI), hence the change to the second part - of the version number. - - The main purpose of the 3.2 release is to correct a couple of problems - in the C++ ABI, with the intention of providing a stable interface - going forward. Accordingly, 3.2 is only a small change to 3.1.1. - - Bug Fixes - - C++ - - * [233]7320: g++ 3.2 relocation problem - * [234]7470: vtable: virtual function pointers not in declaration - order - - libstdc++ - - * [235]6410: Trouble with non-ASCII monetary symbols and wchar_t - * [236]6503, [237]6642, [238]7186: Problems with comparing or - subtracting various types of const and non-const iterators - * [239]7216: ambiguity with basic_iostream::traits_type - * [240]7220: problem with basic_istream::ignore(0,delimiter) - * [241]7222: locale::operator==() doesn't work on std::locale("") - * [242]7286: placement operator delete issue - * [243]7442: cxxabi.h does not match the C++ ABI - * [244]7445: poor performance of std::locale::classic() in - multi-threaded applications - - x86-64 specific - - * [245]7291: off-by-one in generated inline bzero code for x86-64 - - - For questions related to the use of GCC, please consult these web - pages and the [246]GCC manuals. If that fails, the - [247]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [248]gcc@gcc.gnu.org. All of [249]our lists have public - archives. - - Copyright (C) [250]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [251]maintained by the GCC team. Last modified - 2012-11-02[252]. - -References - - 1. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3 - 2. http://gcc.gnu.org/gcc-3.1/changes.html - 3. http://gcc.gnu.org/gcc-3.2/c++-abi.html - 4. http://gcc.gnu.org/PR3782 - 5. http://gcc.gnu.org/PR6440 - 6. http://gcc.gnu.org/PR7050 - 7. http://gcc.gnu.org/PR7741 - 8. http://gcc.gnu.org/PR7982 - 9. http://gcc.gnu.org/PR8068 - 10. http://gcc.gnu.org/PR8178 - 11. http://gcc.gnu.org/PR8396 - 12. http://gcc.gnu.org/PR8674 - 13. http://gcc.gnu.org/PR9768 - 14. http://gcc.gnu.org/PR9798 - 15. http://gcc.gnu.org/PR9799 - 16. http://gcc.gnu.org/PR9928 - 17. http://gcc.gnu.org/PR10114 - 18. http://gcc.gnu.org/PR10352 - 19. http://gcc.gnu.org/PR10336 - 20. http://gcc.gnu.org/PR8224 - 21. http://gcc.gnu.org/PR8613 - 22. http://gcc.gnu.org/PR8828 - 23. http://gcc.gnu.org/PR9226 - 24. http://gcc.gnu.org/PR9853 - 25. http://gcc.gnu.org/PR9797 - 26. http://gcc.gnu.org/PR9967 - 27. http://gcc.gnu.org/PR10116 - 28. http://gcc.gnu.org/PR10171 - 29. http://gcc.gnu.org/PR10175 - 30. http://gcc.gnu.org/PR8316 - 31. http://gcc.gnu.org/PR9169 - 32. http://gcc.gnu.org/PR9420 - 33. http://gcc.gnu.org/PR9459 - 34. http://gcc.gnu.org/PR9507 - 35. http://gcc.gnu.org/PR9538 - 36. http://gcc.gnu.org/PR9602 - 37. http://gcc.gnu.org/PR9993 - 38. http://gcc.gnu.org/PR10167 - 39. http://gcc.gnu.org/PR9652 - 40. http://gcc.gnu.org/PR10144 - 41. http://gcc.gnu.org/PR8746 - 42. http://gcc.gnu.org/PR9888 - 43. http://gcc.gnu.org/PR9638 - 44. http://gcc.gnu.org/PR9954 - 45. http://gcc.gnu.org/PR7784 - 46. http://gcc.gnu.org/PR7796 - 47. http://gcc.gnu.org/PR8281 - 48. http://gcc.gnu.org/PR8366 - 49. http://gcc.gnu.org/PR8726 - 50. http://gcc.gnu.org/PR9414 - 51. http://gcc.gnu.org/PR10067 - 52. http://gcc.gnu.org/PR7248 - 53. http://gcc.gnu.org/PR8343 - 54. http://gcc.gnu.org/PR9732 - 55. http://gcc.gnu.org/PR10073 - 56. http://gcc.gnu.org/PR7702 - 57. http://gcc.gnu.org/PR9671 - 58. http://gcc.gnu.org/PR8694 - 59. http://gcc.gnu.org/PR9953 - 60. http://gcc.gnu.org/PR10271 - 61. http://gcc.gnu.org/PR6362 - 62. http://gcc.gnu.org/PR10377 - 63. http://gcc.gnu.org/PR6955 - 64. http://gcc.gnu.org/PR5919 - 65. http://gcc.gnu.org/PR7129 - 66. http://gcc.gnu.org/PR7507 - 67. http://gcc.gnu.org/PR7622 - 68. http://gcc.gnu.org/PR7681 - 69. http://gcc.gnu.org/PR9528 - 70. http://gcc.gnu.org/PR8031 - 71. http://gcc.gnu.org/PR8275 - 72. http://gcc.gnu.org/PR8332 - 73. http://gcc.gnu.org/PR8372 - 74. http://gcc.gnu.org/PR8439 - 75. http://gcc.gnu.org/PR8442 - 76. http://gcc.gnu.org/PR8518 - 77. http://gcc.gnu.org/PR8615 - 78. http://gcc.gnu.org/PR8663 - 79. http://gcc.gnu.org/PR8799 - 80. http://gcc.gnu.org/PR9328 - 81. http://gcc.gnu.org/PR9465 - 82. http://gcc.gnu.org/PR47 - 83. http://gcc.gnu.org/PR6745 - 84. http://gcc.gnu.org/PR8214 - 85. http://gcc.gnu.org/PR8493 - 86. http://gcc.gnu.org/PR8332 - 87. http://gcc.gnu.org/PR8503 - 88. http://gcc.gnu.org/PR8727 - 89. http://gcc.gnu.org/PR7445 - 90. http://gcc.gnu.org/PR8230 - 91. http://gcc.gnu.org/PR8399 - 92. http://gcc.gnu.org/PR8662 - 93. http://gcc.gnu.org/PR8707 - 94. http://gcc.gnu.org/PR8708 - 95. http://gcc.gnu.org/PR8790 - 96. http://gcc.gnu.org/PR8887 - 97. http://gcc.gnu.org/PR9076 - 98. http://gcc.gnu.org/PR9151 - 99. http://gcc.gnu.org/PR9168 - 100. http://gcc.gnu.org/PR9269 - 101. http://gcc.gnu.org/PR9322 - 102. http://gcc.gnu.org/PR9433 - 103. http://gcc.gnu.org/PR8032 - 104. http://gcc.gnu.org/PR8639 - 105. http://gcc.gnu.org/PR8794 - 106. http://gcc.gnu.org/PR8832 - 107. http://gcc.gnu.org/PR8988 - 108. http://gcc.gnu.org/PR9492 - 109. http://gcc.gnu.org/PR9267 - 110. http://gcc.gnu.org/PR8344 - 111. http://gcc.gnu.org/PR8524 - 112. http://gcc.gnu.org/PR8880 - 113. http://gcc.gnu.org/PR9090 - 114. http://gcc.gnu.org/PR8588 - 115. http://gcc.gnu.org/PR8599 - 116. http://gcc.gnu.org/PR9506 - 117. http://gcc.gnu.org/PR9484 - 118. http://gcc.gnu.org/PR9292 - 119. http://gcc.gnu.org/PR9293 - 120. http://gcc.gnu.org/PR9295 - 121. http://gcc.gnu.org/PR9296 - 122. http://gcc.gnu.org/PR9316 - 123. http://gcc.gnu.org/PR9493 - 124. http://gcc.gnu.org/PR7341 - 125. http://gcc.gnu.org/PR8947 - 126. http://gcc.gnu.org/PR7448 - 127. http://gcc.gnu.org/PR8882 - 128. http://gcc.gnu.org/PR7445 - 129. http://gcc.gnu.org/PR2521 - 130. http://gcc.gnu.org/PR5661 - 131. http://gcc.gnu.org/PR6419 - 132. http://gcc.gnu.org/PR6994 - 133. http://gcc.gnu.org/PR7150 - 134. http://gcc.gnu.org/PR7160 - 135. http://gcc.gnu.org/PR7228 - 136. http://gcc.gnu.org/PR7266 - 137. http://gcc.gnu.org/PR7353 - 138. http://gcc.gnu.org/PR7411 - 139. http://gcc.gnu.org/PR7478 - 140. http://gcc.gnu.org/PR7526 - 141. http://gcc.gnu.org/PR7721 - 142. http://gcc.gnu.org/PR7803 - 143. http://gcc.gnu.org/PR7754 - 144. http://gcc.gnu.org/PR7788 - 145. http://gcc.gnu.org/PR8031 - 146. http://gcc.gnu.org/PR8055 - 147. http://gcc.gnu.org/PR8067 - 148. http://gcc.gnu.org/PR8134 - 149. http://gcc.gnu.org/PR8149 - 150. http://gcc.gnu.org/PR8160 - 151. http://gcc.gnu.org/PR5607 - 152. http://gcc.gnu.org/PR6579 - 153. http://gcc.gnu.org/PR6803 - 154. http://gcc.gnu.org/PR7176 - 155. http://gcc.gnu.org/PR7188 - 156. http://gcc.gnu.org/PR7306 - 157. http://gcc.gnu.org/PR7461 - 158. http://gcc.gnu.org/PR7524 - 159. http://gcc.gnu.org/PR7584 - 160. http://gcc.gnu.org/PR7676 - 161. http://gcc.gnu.org/PR7679 - 162. http://gcc.gnu.org/PR7811 - 163. http://gcc.gnu.org/PR7961 - 164. http://gcc.gnu.org/PR8071 - 165. http://gcc.gnu.org/PR8127 - 166. http://gcc.gnu.org/PR6745 - 167. http://gcc.gnu.org/PR8096 - 168. http://gcc.gnu.org/PR8127 - 169. http://gcc.gnu.org/PR8218 - 170. http://gcc.gnu.org/PR8287 - 171. http://gcc.gnu.org/PR8347 - 172. http://gcc.gnu.org/PR8348 - 173. http://gcc.gnu.org/PR8391 - 174. http://gcc.gnu.org/PR6627 - 175. http://gcc.gnu.org/PR6631 - 176. http://gcc.gnu.org/PR7102 - 177. http://gcc.gnu.org/PR7120 - 178. http://gcc.gnu.org/PR7209 - 179. http://gcc.gnu.org/PR7515 - 180. http://gcc.gnu.org/PR7814 - 181. http://gcc.gnu.org/PR8467 - 182. http://gcc.gnu.org/PR4890 - 183. http://gcc.gnu.org/PR7357 - 184. http://gcc.gnu.org/PR7358 - 185. http://gcc.gnu.org/PR7602 - 186. http://gcc.gnu.org/PR7862 - 187. http://gcc.gnu.org/PR8190 - 188. http://gcc.gnu.org/PR8524 - 189. http://gcc.gnu.org/PR5351 - 190. http://gcc.gnu.org/PR7591 - 191. http://gcc.gnu.org/PR6845 - 192. http://gcc.gnu.org/PR7034 - 193. http://gcc.gnu.org/PR7124 - 194. http://gcc.gnu.org/PR7174 - 195. http://gcc.gnu.org/PR7134 - 196. http://gcc.gnu.org/PR7375 - 197. http://gcc.gnu.org/PR7390 - 198. http://gcc.gnu.org/PR6890 - 199. http://gcc.gnu.org/PR6981 - 200. http://gcc.gnu.org/PR7242 - 201. http://gcc.gnu.org/PR7396 - 202. http://gcc.gnu.org/PR7630 - 203. http://gcc.gnu.org/PR7693 - 204. http://gcc.gnu.org/PR7723 - 205. http://gcc.gnu.org/PR7951 - 206. http://gcc.gnu.org/PR8146 - 207. http://gcc.gnu.org/PR5967 - 208. http://gcc.gnu.org/PR6984 - 209. http://gcc.gnu.org/PR7114 - 210. http://gcc.gnu.org/PR7130 - 211. http://gcc.gnu.org/PR7133 - 212. http://gcc.gnu.org/PR7380 - 213. http://gcc.gnu.org/PR8252 - 214. http://gcc.gnu.org/PR8451 - 215. http://gcc.gnu.org/PR7250 - 216. http://gcc.gnu.org/PR6668 - 217. http://gcc.gnu.org/PR7151 - 218. http://gcc.gnu.org/PR7335 - 219. http://gcc.gnu.org/PR7842 - 220. http://gcc.gnu.org/PR7856 - 221. http://gcc.gnu.org/PR7967 - 222. http://gcc.gnu.org/PR7374 - 223. http://gcc.gnu.org/PR7370 - 224. http://gcc.gnu.org/PR7409 - 225. http://gcc.gnu.org/PR8232 - 226. http://gcc.gnu.org/PR7623 - 227. http://gcc.gnu.org/PR8314 - 228. http://gcc.gnu.org/PR761 - 229. http://gcc.gnu.org/PR5610 - 230. http://gcc.gnu.org/PR7484 - 231. http://gcc.gnu.org/PR7531 - 232. http://gcc.gnu.org/PR8120 - 233. http://gcc.gnu.org/PR7320 - 234. http://gcc.gnu.org/PR7470 - 235. http://gcc.gnu.org/PR6410 - 236. http://gcc.gnu.org/PR6503 - 237. http://gcc.gnu.org/PR6642 - 238. http://gcc.gnu.org/PR7186 - 239. http://gcc.gnu.org/PR7216 - 240. http://gcc.gnu.org/PR7220 - 241. http://gcc.gnu.org/PR7222 - 242. http://gcc.gnu.org/PR7286 - 243. http://gcc.gnu.org/PR7442 - 244. http://gcc.gnu.org/PR7445 - 245. http://gcc.gnu.org/PR7291 - 246. http://gcc.gnu.org/onlinedocs/ - 247. mailto:gcc-help@gcc.gnu.org - 248. mailto:gcc@gcc.gnu.org - 249. http://gcc.gnu.org/lists.html - 250. http://www.fsf.org/ - 251. http://gcc.gnu.org/about.html - 252. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-3.1/index.html - - GCC 3.1 - - July 27, 2002 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 3.1.1. - - The links below still apply to GCC 3.1.1. - - May 15, 2002 - - The [2]GNU project and the GCC developers are pleased to announce the - release of GCC 3.1. - - 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 [3]successful builds is updated as new information becomes - available. - - The GCC developers would like to thank the numerous people that have - contributed [4]new features, improvements, bug fixes, and other changes - as well as test results to GCC. This [5]amazing group of volunteers is - what makes GCC successful. - - For additional information about GCC please refer to the [6]GCC project - web site or contact the [7]GCC development mailing list. - - To obtain GCC please use [8]our mirror sites, or our CVS server. - __________________________________________________________________ - - - For questions related to the use of GCC, please consult these web - pages and the [9]GCC manuals. If that fails, the - [10]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [11]gcc@gcc.gnu.org. All of [12]our lists have public - archives. - - Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [14]maintained by the GCC team. Last modified - 2012-11-02[15]. - -References - - 1. http://www.gnu.org/ - 2. http://www.gnu.org/ - 3. http://gcc.gnu.org/gcc-3.1/buildstat.html - 4. http://gcc.gnu.org/gcc-3.1/changes.html - 5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 6. http://gcc.gnu.org/index.html - 7. mailto:gcc@gcc.gnu.org - 8. http://gcc.gnu.org/mirrors.html - 9. http://gcc.gnu.org/onlinedocs/ - 10. mailto:gcc-help@gcc.gnu.org - 11. mailto:gcc@gcc.gnu.org - 12. http://gcc.gnu.org/lists.html - 13. http://www.fsf.org/ - 14. http://gcc.gnu.org/about.html - 15. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-3.1/changes.html - - GCC 3.1 Release Series - Changes, New Features, and Fixes - -Additional changes in GCC 3.1.1 - - * A bug related to how structures and unions are returned has been - fixed for powerpc-*-netbsd*. - * An important bug in the implementation of -fprefetch-loop-arrays - has been fixed. Previously the optimization prefetched random - blocks of memory for most targets except for i386. - * The Java compiler now compiles Java programs much faster and also - works with parallel make. - * Nested functions have been fixed for mips*-*-netbsd*. - * Some missing floating point support routines have beed added for - mips*-*-netbsd*. - * This [1]message gives additional information about the bugs fixed - in this release. - -Caveats - - * The -traditional C compiler option has been deprecated and will be - removed in GCC 3.3. (It remains possible to preprocess non-C code - with the traditional preprocessor.) - * The default debugging format for most ELF platforms (including - GNU/Linux and FreeBSD; notable exception is Solaris) has changed - from stabs to DWARF2. This requires GDB 5.1.1 or later. - -General Optimizer Improvements - - * Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat, - and Andreas Jaeger, SuSE Labs, has contributed [2]infrastructure - for profile driven optimizations. - Options -fprofile-arcs and -fbranch-probabilities can now be used - to improve speed of the generated code by profiling the actual - program behaviour on typical runs. In the absence of profile info - the compiler attempts to guess the profile statically. - * [3]SPEC2000 and SPEC95 benchmark suites are now used daily to - monitor performance of the generated code. - According to the SPECInt2000 results on an AMD Athlon CPU, the code - generated by GCC 3.1 is 6% faster on the average (8.2% faster with - profile feedback) compared to GCC 3.0. The code produced by GCC 3.0 - is about 2.1% faster compared to 2.95.3. Tests were done using the - -O2 -march=athlon command-line options. - * Alexandre Oliva, of Red Hat, has generalized the tree inlining - infrastructure developed by CodeSourcery, LLC for the C++ front - end, so that it is now used in the C front end too. Inlining - functions as trees exposes them earlier to the compiler, giving it - more opportunities for optimization. - * Support for data prefetching instructions has been added to the GCC - back end and several targets. A new __builtin_prefetch intrinsic is - available to explicitly insert prefetch instructions and - experimental support for loop array prefetching has been added (see - -fprefetch-loop-array documentation). - * Support for emitting debugging information for macros has been - added for DWARF2. It is activated using -g3. - -New Languages and Language specific improvements - - C/C++ - - * A few more [4]ISO C99 features. - * The preprocessor is 10-50% faster than the preprocessor in GCC 3.0. - * The preprocessor's symbol table has been merged with the symbol - table of the C, C++ and Objective-C front ends. - * The preprocessor consumes less memory than the preprocessor in GCC - 3.0, often significantly so. On normal input files, it typically - consumes less memory than pre-3.0 cccp-based GCC, too. - - C++ - - * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std - was a workaround to allow std compliant code to work with the - non-std compliant libstdc++-v2. libstdc++-v3 is std compliant. - * The C++ ABI has been fixed so that void (A::*)() const is mangled - as "M1AKFvvE", rather than "MK1AFvvE" as before. This change only - affects pointer to cv-qualified member function types. - * The C++ ABI has been changed to correctly handle this code: - struct A { - void operator delete[] (void *, size_t); - }; - - struct B : public A { - }; - - new B[10]; - - The amount of storage allocated for the array will be greater than - it was in 3.0, in order to store the number of elements in the - array, so that the correct size can be passed to operator delete[] - when the array is deleted. Previously, the value passed to operator - delete[] was unpredictable. - This change will only affect code that declares a two-argument - operator delete[] with a second parameter of type size_t in a base - class, and does not override that definition in a derived class. - * The C++ ABI has been changed so that: - struct A { - void operator delete[] (void *, size_t); - void operator delete[] (void *); - }; - - does not cause unnecessary storage to be allocated when an array of - A objects is allocated. - This change will only affect code that declares both of these forms - of operator delete[], and declared the two-argument form before the - one-argument form. - * The C++ ABI has been changed so that when a parameter is passed by - value, any cleanup for that parameter is performed in the caller, - as specified by the ia64 C++ ABI, rather than the called function - as before. As a result, classes with a non-trivial destructor but a - trivial copy constructor will be passed and returned by invisible - reference, rather than by bitwise copy as before. - * G++ now supports the "named return value optimization": for code - like - A f () { - A a; - ... - return a; - } - - G++ will allocate a in the return value slot, so that the return - becomes a no-op. For this to work, all return statements in the - function must return the same variable. - * Improvements to the C++ library are listed in [5]the libstdc++-v3 - FAQ. - - Objective-C - - * Annoying linker warnings (due to incorrect code being generated) - have been fixed. - * If a class method cannot be found, the compiler no longer issues a - warning if a corresponding instance method exists in the root - class. - * Forward @protocol declarations have been fixed. - * Loading of categories has been fixed in certain situations (GNU run - time only). - * The class lookup in the run-time library has been rewritten so that - class method dispatch is more than twice as fast as it used to be - (GNU run time only). - - Java - - * libgcj now includes RMI, java.lang.ref.*, javax.naming, and - javax.transaction. - * Property files and other system resources can be compiled into - executables which use libgcj using the new gcj --resource feature. - * libgcj has been ported to more platforms. In particular there is - now a mostly-functional mingw32 (Windows) target port. - * JNI and CNI invocation interfaces were implemented, so gcj-compiled - Java code can now be called from a C/C++ application. - * gcj can now use builtin functions for certain known methods, for - instance Math.cos. - * gcj can now automatically remove redundant array-store checks in - some common cases. - * The --no-store-checks optimization option was added. This can be - used to omit runtime store checks for code which is known not to - throw ArrayStoreException - * The following third party interface standards were added to libgcj: - org.w3c.dom and org.xml.sax. - * java.security has been merged with GNU Classpath. The new package - is now JDK 1.2 compliant, and much more complete. - * A bytecode verifier was added to the libgcj interpreter. - * java.lang.Character was rewritten to comply with the Unicode 3.0 - standard, and improve performance. - * Partial support for many more locales was added to libgcj. - * Socket timeouts have been implemented. - * libgcj has been merged into a single shared library. There are no - longer separate shared libraries for the garbage collector and - zlib. - * Several performance improvements were made to gcj and libgcj: - + Hash synchronization (thin locks) - + A special allocation path for finalizer-free objects - + Thread-local allocation - + Parallel GC, and other GC tweaks - - Fortran - - Fortran improvements are listed in [6]the Fortran documentation. - - Ada - - [7]Ada Core Technologies, Inc, has contributed its GNAT Ada 95 front - end and associated tools. The GNAT compiler fully implements the Ada - language as defined by the ISO/IEC 8652 standard. - - Please note that the integration of the Ada front end is still work in - progress. - -New Targets and Target Specific Improvements - - * Hans-Peter Nilsson has contributed a port to [8]MMIX, the CPU - architecture used in new editions of Donald E. Knuth's The Art of - Computer Programming. - * [9]Axis Communications has contributed its port to the CRIS CPU - architecture, used in the ETRAX system-on-a-chip series. See - [10]Axis' developer site for technical information. - * Alexandre Oliva, of Red Hat, has contributed a port to the - [11]SuperH SH5 64-bit RISC microprocessor architecture, extending - the existing SH port. - * UltraSPARC is fully supported in 64-bit mode. The option -m64 - enables it. - * For compatibility with the Sun compiler #pragma redefine_extname - has been implemented on Solaris. - * The x86 back end has had some noticeable work done to it. - + SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas - Jaeger have contributed a port to the AMD x86-64 architecture. - For more information on x86-64 see [12]http://www.x86-64.org. - + The compiler now supports MMX, 3DNow!, SSE, and SSE2 - instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will - enable the respective instruction sets. Intel C++ compatible - MMX/3DNow!/SSE intrinsics are implemented. SSE2 intrinsics - will be added in next major release. - + Following those improvements, targets for Pentium MMX, K6-2, - K6-3, Pentium III, Pentium 4, and Athlon 4 Mobile/XP/MP were - added. Refer to the documentation on -march= and -mcpu= - options for details. - + For those targets that support it, -mfpmath=sse will cause the - compiler to generate SSE/SSE2 instructions for floating point - math instead of x87 instructions. Usually, this will lead to - quicker code -- especially on the Pentium 4. Note that only - scalar floating point instructions are used and GCC does not - exploit SIMD features yet. - + Prefetch support has been added to the Pentium III, Pentium 4, - K6-2, K6-3, and Athlon series. - + Code generated for floating point to integer conversions has - been improved leading to better performance of many 3D - applications. - * The PowerPC back end has added 64-bit PowerPC GNU/Linux support. - * C++ support for AIX has been improved. - * Aldy Hernandez, of Red Hat, Inc, has contributed extensions to the - PowerPC port supporting the AltiVec programming model (SIMD). The - support, though presently useful, is experimental and is expected - to stabilize for 3.2. The support is written to conform to - Motorola's AltiVec specs. See -maltivec. - -Obsolete Systems - - Support for a number of older systems has been declared obsolete in GCC - 3.1. Unless there is activity to revive them, the next release of GCC - will have their sources permanently removed. - - All configurations of the following processor architectures have been - declared obsolete: - * MIL-STD-1750A, 1750a-*-* - * AMD A29k, a29k-*-* - * Convex, c*-convex-* - * Clipper, clipper-*-* - * Elxsi, elxsi-*-* - * Intel i860, i860-*-* - * Sun picoJava, pj-*-* and pjl-*-* - * Western Electric 32000, we32k-*-* - - Most configurations of the following processor architectures have been - declared obsolete, but we are preserving a few systems which may have - active developers. It is unlikely that the remaining systems will - survive much longer unless we see definite signs of port activity. - * Motorola 88000 except - + Generic a.out, m88k-*-aout* - + Generic SVR4, m88k-*-sysv4 - + OpenBSD, m88k-*-openbsd* - * NS32k except - + NetBSD, ns32k-*-netbsd* - + OpenBSD, ns32k-*-openbsd*. - * ROMP except - + OpenBSD, romp-*-openbsd*. - - Finally, only some configurations of these processor architectures are - being obsoleted. - * Alpha: - + OSF/1, alpha*-*-osf[123]*. (Digital Unix and Tru64 Unix, aka - alpha*-*-osf[45], are still supported.) - * ARM: - + RISCiX, arm-*-riscix*. - * i386: - + 386BSD, i?86-*-bsd* - + Chorus, i?86-*-chorusos* - + DG/UX, i?86-*-dgux* - + FreeBSD 1.x, i?86-*-freebsd1.* - + IBM AIX, i?86-*-aix* - + ISC UNIX, i?86-*-isc* - + GNU/Linux with pre-BFD linker, i?86-*-linux*oldld* - + NEXTstep, i?86-next-* - + OSF UNIX, i?86-*-osf1* and i?86-*-osfrose* - + RTEMS/coff, i?86-*-rtemscoff* - + RTEMS/go32, i?86-go32-rtems* - + Sequent/BSD, i?86-sequent-bsd* - + Sequent/ptx before version 3, i?86-sequent-ptx[12]* and - i?86-sequent-sysv3* - + SunOS, i?86-*-sunos* - * Motorola 68000: - + Altos, m68[k0]*-altos-* - + Apollo, m68[k0]*-apollo-* - + Apple A/UX, m68[k0]*-apple-* - + Bull, m68[k0]*-bull-* - + Convergent, m68[k0]*-convergent-* - + Generic SVR3, m68[k0]*-*-sysv3* - + ISI, m68[k0]*-isi-* - + LynxOS, m68[k0]*-*-lynxos* - + NEXT, m68[k0]*-next-* - + RTEMS/coff, m68[k0]*-*-rtemscoff* - + Sony, m68[k0]*-sony-* - * MIPS: - + DEC Ultrix, mips-*-ultrix* and mips-dec-* - + Generic BSD, mips-*-bsd* - + Generic System V, mips-*-sysv* - + IRIX before version 5, mips-sgi-irix[1234]* - + RiscOS, mips-*-riscos* - + Sony, mips-sony-* - + Tandem, mips-tandem-* - * SPARC: - + RTEMS/a.out, sparc-*-rtemsaout*. - -Documentation improvements - - * The old manual ("Using and Porting the GNU Compiler Collection") - has been replaced by a users manual ("Using the GNU Compiler - Collection") and a separate internals reference manual ("GNU - Compiler Collection Internals"). - * More complete and much improved documentation about GCC's internal - representation used by the C and C++ front ends. - * Many cleanups and improvements in general. - - - For questions related to the use of GCC, please consult these web - pages and the [13]GCC manuals. If that fails, the - [14]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [15]gcc@gcc.gnu.org. All of [16]our lists have public - archives. - - Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [18]maintained by the GCC team. Last modified - 2013-10-31[19]. - -References - - 1. http://gcc.gnu.org/ml/gcc/2002-07/msg01208.html - 2. http://gcc.gnu.org/news/profiledriven.html - 3. http://gcc.gnu.org/benchmarks/ - 4. http://gcc.gnu.org/c99status.html - 5. http://gcc.gnu.org/onlinedocs/libstdc++/faq.html - 6. http://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html - 7. http://www.adacore.com/ - 8. http://www-cs-faculty.stanford.edu/~knuth/mmix.html - 9. http://www.axis.com/ - 10. http://developer.axis.com/ - 11. http://www.superh.com/ - 12. http://www.x86-64.org/ - 13. http://gcc.gnu.org/onlinedocs/ - 14. mailto:gcc-help@gcc.gnu.org - 15. mailto:gcc@gcc.gnu.org - 16. http://gcc.gnu.org/lists.html - 17. http://www.fsf.org/ - 18. http://gcc.gnu.org/about.html - 19. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-3.0/gcc-3.0.html - - GCC 3.0.4 - - February 20, 2002 - - The [1]GNU project and the GCC developers are pleased to announce the - release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0 - series. - - 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. - - GCC 3.0.x has several new optimizations, new targets, new languages and - many other new features, relative to GCC 2.95.x. See the [2]new - features page for a more complete list. - - A list of [3]successful builds is updated as new information becomes - available. - - The GCC developers would like to thank the numerous people that have - contributed new features, test results, bug fixes, etc to GCC. This - [4]amazing group of volunteers is what makes GCC successful. - - And finally, we can't in good conscience fail to mention some - [5]caveats to using GCC 3.0.x. - - For additional information about GCC please refer to the [6]GCC project - web site or contact the [7]GCC development mailing list. - - To obtain GCC please use [8]our mirror sites, or our CVS server. - __________________________________________________________________ - -Previous 3.0.x Releases - - December 20, 2001: GCC 3.0.3 has been released. - October 25, 2001: GCC 3.0.2 has been released. - August 20, 2001: GCC 3.0.1 has been released. - June 18, 2001: GCC 3.0 has been released. - - - For questions related to the use of GCC, please consult these web - pages and the [9]GCC manuals. If that fails, the - [10]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [11]gcc@gcc.gnu.org. All of [12]our lists have public - archives. - - Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [14]maintained by the GCC team. Last modified - 2012-11-02[15]. - -References - - 1. http://www.gnu.org/ - 2. http://gcc.gnu.org/gcc-3.0/features.html - 3. http://gcc.gnu.org/gcc-3.0/buildstat.html - 4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 5. http://gcc.gnu.org/gcc-3.0/caveats.html - 6. http://gcc.gnu.org/index.html - 7. mailto:gcc@gcc.gnu.org - 8. http://gcc.gnu.org/mirrors.html - 9. http://gcc.gnu.org/onlinedocs/ - 10. mailto:gcc-help@gcc.gnu.org - 11. mailto:gcc@gcc.gnu.org - 12. http://gcc.gnu.org/lists.html - 13. http://www.fsf.org/ - 14. http://gcc.gnu.org/about.html - 15. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-3.0/features.html - - GCC 3.0 New Features - -Additional changes in GCC 3.0.4 - - * GCC 3.0 now supports newer versions of the [1]NetBSD operating - system, which use the ELF object file format, on x86 processors. - * Correct debugging information is generated from functions that have - lines from multiple files (e.g. yacc output). - * A fix for whitespace handling in the -traditional preprocessor, - which can affect Fortran. - * Fixes to the exception handling runtime. - * More fixes for bad code generation in C++. - * A fix for shared library generation under AIX 4.3. - * Documentation updates. - * Port of GCC to Tensilica's Xtensa processor contributed. - * A fix for compiling the PPC Linux kernel (FAT fs wouldn't link). - -Additional changes in GCC 3.0.3 - - * A fix to correct an accidental change to the PowerPC ABI. - * Fixes for bad code generation on a variety of architectures. - * Improvements to the debugging information generated for C++ - classes. - * Fixes for bad code generation in C++. - * A fix to avoid crashes in the C++ demangler. - * A fix to the C++ standard library to avoid buffer overflows. - * Miscellaneous improvements for a variety of architectures. - -Additional changes in GCC 3.0.2 - - * Fixes for bad code generation during loop unrolling. - * Fixes for bad code generation by the sibling call optimization. - * Minor improvements to x86 code generation. - * Implementation of function descriptors in C++ vtables for IA64. - * Numerous minor bug-fixes. - -Additional changes in GCC 3.0.1 - - * C++ fixes for incorrect code-generation. - * Improved cross-compiling support for the C++ standard library. - * Fixes for some embedded targets that worked in GCC 2.95.3, but not - in GCC 3.0. - * Fixes for various exception-handling bugs. - * A port to the S/390 architecture. - -General Optimizer Improvements - - * [2]Basic block reordering pass. - * New if-conversion pass with support for conditional (predicated) - execution. - * New tail call and sibling call elimination optimizations. - * New register renaming pass. - * New (experimental) [3]static single assignment (SSA) representation - support. - * New dead-code elimination pass implemented using the SSA - representation. - * [4]Global null pointer test elimination. - * [5]Global code hoisting/unification. - * More builtins and optimizations for stdio.h, string.h and old BSD - functions, as well as for ISO C99 functions. - * New builtin __builtin_expect for giving hints to the branch - predictor. - -New Languages and Language specific improvements - - * The GNU Compiler for the Java(TM) language (GCJ) is now integrated - and supported, including the run-time library containing most - common non-GUI Java classes, a bytecode interpreter, and the Boehm - conservative garbage collector. Many bugs have been fixed. GCJ can - compile Java source or Java bytecodes to either native code or Java - class files, and supports native methods written in either the - standard JNI or the more efficient and convenient CNI. - * Here is a [6]partial list of C++ improvements, both new features - and those no longer supported. - * New C++ ABI. On the IA-64 platform GCC is capable of - inter-operating with other IA-64 compilers. - * The new ABI also significantly reduces the size of symbol and debug - information. - * New [7]C++ support library and many C++ bug fixes, vastly improving - our conformance to the ISO C++ standard. - * New [8]inliner for C++. - * Rewritten C preprocessor, integrated into the C, C++ and Objective - C compilers, with very many improvements including ISO C99 support - and [9]improvements to dependency generation. - * Support for more [10]ISO C99 features. - * Many improvements to support for checking calls to format functions - such as printf and scanf, including support for ISO C99 format - features, extensions from the Single Unix Specification and GNU - libc 2.2, checking of strfmon formats and features to assist in - auditing for format string security bugs. - * New warnings for C code that may have undefined semantics because - of violations of sequence point rules in the C standard (such as a - = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall. - * Additional warning option -Wfloat-equal. - * Improvements to -Wtraditional. - * Fortran improvements are listed in [11]the Fortran documentation. - -New Targets and Target Specific Improvements - - * New x86 back end, generating much improved code. - * Support for a generic i386-elf target contributed. - * New option to emit x86 assembly code using Intel style syntax - (-mintel-syntax). - * HPUX 11 support contributed. - * Improved PowerPC code generation, including scheduled prologue and - epilogue. - * Port of GCC to Intel's IA-64 processor contributed. - * Port of GCC to Motorola's MCore 210 and 340 contributed. - * New unified back-end for Arm, Thumb and StrongArm contributed. - * Port of GCC to Intel's XScale processor contributed. - * Port of GCC to Atmel's AVR microcontrollers contributed. - * Port of GCC to Mitsubishi's D30V processor contributed. - * Port of GCC to Matsushita's AM33 processor (a member of the MN10300 - processor family) contributed. - * Port of GCC to Fujitsu's FR30 processor contributed. - * Port of GCC to Motorola's 68HC11 and 68HC12 processors contributed. - * Port of GCC to Sun's picoJava processor core contributed. - -Documentation improvements - - * Substantially rewritten and improved C preprocessor manual. - * Many improvements to other documentation. - * Manpages for gcc, cpp and gcov are now generated automatically from - the master Texinfo manual, eliminating the problem of manpages - being out of date. (The generated manpages are only extracts from - the full manual, which is provided in Texinfo form, from which - info, HTML, other formats and a printed manual can be generated.) - * Generated info files are included in the release tarballs alongside - their Texinfo sources, avoiding problems on some platforms with - building makeinfo as part of the GCC distribution. - -Other significant improvements - - * Garbage collection used internally by the compiler for most memory - allocation instead of obstacks. - * Lengauer and Tarjan algorithm used for computing dominators in the - CFG. This algorithm can be significantly faster and more space - efficient than our older algorithm. - * gccbug script provided to assist in submitting bug reports to our - bug tracking system. (Bug reports previously submitted directly to - our mailing lists, for which you received no bug tracking number, - should be submitted again using gccbug if you can reproduce the - problem with GCC 3.0.) - * The internal libgcc library is [12]built as a shared library on - systems that support it. - * Extensive testsuite included with GCC, with many new tests. In - addition to tests for GCC bugs that have been fixed, many tests - have been added for language features, compiler warnings and - builtin functions. - * Additional language-independent warning options -Wpacked, -Wpadded, - -Wunreachable-code and -Wdisabled-optimization. - * Target-independent options -falign-functions, -falign-loops and - -falign-jumps. - - Plus a great many bug fixes and almost all the [13]features found in - GCC 2.95. - - - For questions related to the use of GCC, please consult these web - pages and the [14]GCC manuals. If that fails, the - [15]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [16]gcc@gcc.gnu.org. All of [17]our lists have public - archives. - - Copyright (C) [18]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [19]maintained by the GCC team. Last modified - 2013-12-03[20]. - -References - - 1. http://www.netbsd.org/ - 2. http://gcc.gnu.org/news/reorder.html - 3. http://gcc.gnu.org/news/ssa.html - 4. http://gcc.gnu.org/news/null.html - 5. http://gcc.gnu.org/news/unify.html - 6. http://gcc.gnu.org/gcc-3.0/c++features.html - 7. http://gcc.gnu.org/libstdc++/ - 8. http://gcc.gnu.org/news/inlining.html - 9. http://gcc.gnu.org/news/dependencies.html - 10. http://gcc.gnu.org/c99status.html - 11. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html - 12. http://gcc.gnu.org/gcc-3.0/libgcc.html - 13. http://gcc.gnu.org/gcc-2.95/features.html - 14. http://gcc.gnu.org/onlinedocs/ - 15. mailto:gcc-help@gcc.gnu.org - 16. mailto:gcc@gcc.gnu.org - 17. http://gcc.gnu.org/lists.html - 18. http://www.fsf.org/ - 19. http://gcc.gnu.org/about.html - 20. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-3.0/caveats.html - - GCC 3.0 Caveats - - * -fstrict-aliasing is now part of -O2 and higher optimization - levels. This allows the compiler to assume the strictest aliasing - rules applicable to the language being compiled. For C and C++, - this activates optimizations based on the type of expressions. This - optimization may thus break old, non-compliant code. - * Enumerations are now properly promoted to int in function - parameters and function returns. Normally this change is not - visible, but when using -fshort-enums this is an ABI change. - * The undocumented extension that allowed C programs to have a label - at the end of a compound statement has been deprecated and may be - removed in a future version. Programs that now generate a warning - about this may be fixed by adding a null statement (a single - semicolon) after the label. - * The poorly documented extension that allowed string constants in C, - C++ and Objective C to contain unescaped newlines has been - deprecated and may be removed in a future version. Programs using - this extension may be fixed in several ways: the bare newline may - be replaced by \n, or preceded by \n\, or string concatenation may - be used with the bare newline preceded by \n" and " placed at the - start of the next line. - * The Chill compiler is not included in GCC 3.0, because of the lack - of a volunteer to convert it to use garbage collection. - * Certain non-standard iostream methods from earlier versions of - libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach, - ostream::form, and istream::gets. - * The new C++ ABI is not yet fully supported by current (as of - 2001-07-01) releases and development versions of GDB, or any - earlier versions. There is a problem setting breakpoints by line - number, and other related issues that have been fixed in GCC 3.0 - but not yet handled in GDB: - [1]http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html - - - For questions related to the use of GCC, please consult these web - pages and the [2]GCC manuals. If that fails, the - [3]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [4]gcc@gcc.gnu.org. All of [5]our lists have public archives. - - Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [7]maintained by the GCC team. Last modified - 2012-11-02[8]. - -References - - 1. http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html - 2. http://gcc.gnu.org/onlinedocs/ - 3. mailto:gcc-help@gcc.gnu.org - 4. mailto:gcc@gcc.gnu.org - 5. http://gcc.gnu.org/lists.html - 6. http://www.fsf.org/ - 7. http://gcc.gnu.org/about.html - 8. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-2.95/index.html - - GCC 2.95 - - March 16, 2001: The GNU project and the GCC developers are pleased to - announce the release of GCC version 2.95.3. - -Release History - - GCC 2.95.3 - March 16, 2001 - - GCC 2.95.2 - October 27, 1999 - - GCC 2.95.1 - August 19, 1999 - - GCC 2.95 - July 31, 1999. This is the first release of GCC since the April - 1999 GCC/EGCS reunification and includes nearly a year's worth - of new development and bugfixes. - -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. - - The whole suite has been extensively [1]regression tested and - [2]package tested. It should be reliable and suitable for widespread - use. - - The compiler has several new optimizations, new targets, new languages - and other new features. See the [3]new features page for a more - complete list of new features found in the GCC 2.95 releases. - - The sources include installation instructions in both HTML and - plaintext forms in the install directory in the distribution. However, - the most up to date [4]installation instructions and [5]build/test - status are on the web pages. We will update those pages as new - information becomes available. - - The GCC developers would like to thank the numerous people that have - contributed new features, test results, bugfixes, etc to GCC. This - [6]amazing group of volunteers is what makes GCC successful. - - And finally, we can't in good conscience fail to mention some - [7]caveats to using GCC 2.95. - - Download GCC 2.95 from one of our many [8]mirror sites. - - For additional information about GCC please see the [9]GCC project web - server or contact the [10]GCC development mailing list. - - - For questions related to the use of GCC, please consult these web - pages and the [11]GCC manuals. If that fails, the - [12]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [13]gcc@gcc.gnu.org. All of [14]our lists have public - archives. - - Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [16]maintained by the GCC team. Last modified - 2012-11-02[17]. - -References - - 1. http://gcc.gnu.org/gcc-2.95/regress.html - 2. http://gcc.gnu.org/gcc-2.95/othertest.html - 3. http://gcc.gnu.org/gcc-2.95/features.html - 4. http://gcc.gnu.org/install/ - 5. http://gcc.gnu.org/gcc-2.95/buildstat.html - 6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 7. http://gcc.gnu.org/gcc-2.95/caveats.html - 8. http://gcc.gnu.org/mirrors.html - 9. http://gcc.gnu.org/index.html - 10. mailto:gcc@gcc.gnu.org - 11. http://gcc.gnu.org/onlinedocs/ - 12. mailto:gcc-help@gcc.gnu.org - 13. mailto:gcc@gcc.gnu.org - 14. http://gcc.gnu.org/lists.html - 15. http://www.fsf.org/ - 16. http://gcc.gnu.org/about.html - 17. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-2.95/features.html - - GCC 2.95 New Features - - * General Optimizer Improvements: - + [1]Localized register spilling to improve speed and code - density especially on small register class machines. - + [2]Global CSE using lazy code motion algorithms. - + [3]Improved global constant/copy propagation. - + [4]Improved control flow graph analysis and manipulation. - + [5]Local dead store elimination. - + [6]Memory Load hoisting/store sinking in loops. - + [7]Type based alias analysis is enabled by default. Note this - feature will expose bugs in the Linux kernel. Please refer to - the FAQ (as shipped with GCC 2.95) for additional information - on this issue. - + Major revamp of GIV detection, combination and simplification - to improve loop performance. - + Major improvements to register allocation and reloading. - * New Languages and Language specific improvements - + [8]Many C++ improvements. - + [9]Many Fortran improvements. - + [10]Java front-end has been integrated. [11]runtime library is - available separately. - + [12]ISO C99 support - + [13]Chill front-end and runtime has been integrated. - + Boehm garbage collector support in libobjc. - + More support for various pragmas which appear in vendor - include files - * New Targets and Target Specific Improvements - + [14]SPARC backend rewrite. - + -mschedule=8000 will optimize code for PA8000 class - processors; -mpa-risc-2-0 will generate code for PA2.0 - processors - + Various micro-optimizations for the ia32 port. K6 - optimizations - + Compiler will attempt to align doubles in the stack on the - ia32 port - + Alpha EV6 support - + PowerPC 750 - + RS6000/PowerPC: -mcpu=401 was added as an alias for -mcpu=403. - -mcpu=e603e was added to do -mcpu=603e and -msoft-float. - + c3x, c4x - + HyperSPARC - + SparcLite86x - + sh4 - + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix, - arm-linux) - + vxWorks targets include support for vxWorks threads - + StrongARM 110 and ARM9 support added. ARM Scheduling - parameters rewritten. - + Various changes to the MIPS port to avoid assembler macros, - which in turn improves performance - + Various performance improvements to the i960 port. - + Major rewrite of ns32k port - * Other significant improvements - + [15]Ability to dump cfg information and display it using vcg. - + The new faster scheme for fixing vendor header files is - enabled by default. - + Experimental internationalization support. - + multibyte character support - + Some compile-time speedups for pathological problems - + Better support for complex types - * Plus the usual mountain of bugfixes - * Core compiler is based on the gcc2 development tree from Sept 30, - 1998, so we have all of the [16]features found in GCC 2.8. - -Additional Changes in GCC 2.95.1 - - * Generic bugfixes and improvements - + Various documentation fixes related to the GCC/EGCS merger. - + Fix memory management bug which could lead to spurious aborts, - core dumps or random parsing errors in the compiler. - + Fix a couple bugs in the dwarf1 and dwarf2 debug record - support. - + Fix infinite loop in the CSE optimizer. - + Avoid undefined behavior in compiler FP emulation code - + Fix install problem when prefix is overridden on the make - install command. - + Fix problem with unwanted installation of assert.h on some - systems. - + Fix problem with finding the wrong assembler in a single tree - build. - + Avoid increasing the known alignment of a register that is - already known to be a pointer. - * Platform specific bugfixes and improvements - + Codegen bugfix for prologue/epilogue for cpu32 target. - + Fix long long code generation bug for the Coldfire target. - + Fix various aborts in the SH compiler. - + Fix bugs in libgcc support library for the SH. - + Fix alpha ev6 code generation bug. - + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on - AIX platforms. - + Fix -fpic code generation bug for rs6000/ppc svr4 targets. - + Fix varargs/stdarg code generation bug for rs6000/ppc svr4 - targets. - + Fix weak symbol handling for rs6000/ppc svr4 targets. - + Fix various problems with 64bit code generation for the - rs6000/ppc port. - + Fix codegen bug which caused tetex to be mis-compiled on the - x86. - + Fix compiler abort in new cfg code exposed by x86 port. - + Fix out of range array reference in code convert flat - registers to the x87 stacked FP register file. - + Fix minor vxworks configuration bug. - + Fix return type of bsearch for SunOS 4.x. - * Language & Runtime specific fixes. - + The G++ signature extension has been deprecated. It will be - removed in the next major release of G++. Use of signatures - will result in a warning from the compiler. - + Several bugs relating to templates and namespaces were fixed. - + A bug that caused crashes when combining templates with -g on - DWARF1 platforms was fixed. - + Pointers-to-members, virtual functions, and multiple - inheritance should now work together correctly. - + Some code-generation bugs relating to function try blocks were - fixed. - + G++ is a little bit more lenient with certain archaic - constructs than in GCC 2.95. - + Fix to prevent shared library version #s from bring truncated - to 1 digit - + Fix missing std:: in the libstdc++ library. - + Fix stream locking problems in libio. - + Fix problem in java compiler driver. - -Additional Changes in GCC 2.95.2 - - The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While - the optimizations performed by -fstrict-aliasing are valid according to - the C and C++ standards, the optimization have caused some problems, - particularly with old non-conforming code. - - The GCC developers are experimenting with ways to warn users about code - which violates the C/C++ standards, but those warnings are not ready - for widespread use at this time. Rather than wait for those warnings - the GCC developers have chosen to disable -fstrict-aliasing by default - for the GCC 2.95.2 release. - - We strongly encourage developers to find and fix code which violates - the C/C++ standards as -fstrict-aliasing may be enabled by default in - future releases. Use the option -fstrict-aliasing to re-enable these - optimizations. - * Generic bugfixes and improvements - + Fix incorrectly optimized memory reference in global common - subexpression elimination (GCSE) optimization pass. - + Fix code generation bug in regmove.c in which it could - incorrectly change a "const" value. - + Fix bug in optimization of conditionals involving volatile - memory references. - + Avoid over-allocation of stack space for some procedures. - + Fixed bug in the compiler which caused incorrect optimization - of an obscure series of bit manipulations, shifts and - arithmetic. - + Fixed register allocator bug which caused teTeX to be - mis-compiled on SPARC targets. - + Avoid incorrect optimization of degenerate case statements for - certain targets such as the ARM. - + Fix out of range memory reference in the jump optimizer. - + Avoid dereferencing null pointer in fix-header. - + Fix test for GCC specific features so that it is possible to - bootstrap with gcc-2.6.2 and older versions of GCC. - + Fix typo in scheduler which could potentially cause out of - range memory accesses. - + Avoid incorrect loop reversal which caused incorrect code for - certain loops on PowerPC targets. - + Avoid incorrect optimization of switch statements on certain - targets (for example the ARM). - * Platform specific bugfixes and improvements - + Work around bug in Sun V5.0 compilers which caused bootstrap - comparison failures on SPARC targets. - + Fix SPARC backend bug which caused aborts in final.c. - + Fix sparc-hal-solaris2* configuration fragments. - + Fix bug in sparc block profiling. - + Fix obscure code generation bug for the PARISC targets. - + Define __STDC_EXT__ for HPUX configurations. - + Various POWERPC64 code generation bugfixes. - + Fix abort for PPC targets using ELF (ex GNU/Linux). - + Fix collect2 problems for AIX targets. - + Correct handling of .file directive for PPC targets. - + Fix bug in fix_trunc x86 patterns. - + Fix x86 port to correctly pop the FP stack for functions that - return structures in memory. - + Fix minor bug in strlen x86 pattern. - + Use stabs debugging instead of dwarf1 for x86-solaris targets. - + Fix template repository code to handle leading underscore in - mangled names. - + Fix weak/weak alias support for OpenBSD. - + GNU/Linux for the ARM has C++ compatible include files. - * Language & Runtime specific fixes. - + Fix handling of constructor attribute in the C front-end which - caused problems building the Chill runtime library on some - targets. - + Fix minor problem merging type qualifiers in the C front-end. - + Fix aliasing bug for pointers and references (C/C++). - + Fix incorrect "non-constant initializer bug" when -traditional - or -fwritable-strings is enabled. - + Fix build error for Chill front-end on SunOS. - + Do not complain about duplicate instantiations when using - -frepo (C++). - + Fix array bounds handling in C++ front-end which caused - problems with dwarf debugging information in some - circumstances. - + Fix minor namespace problem. - + Fix problem linking java programs. - -Additional Changes in GCC 2.95.3 - - * Generic bugfixes and improvements - + Fix numerous problems that caused incorrect optimization in - the register reloading code. - + Fix numerous problems that caused incorrect optimization in - the loop optimizer. - + Fix aborts in the functions build_insn_chain and scan_loops - under some circumstances. - + Fix an alias analysis bug. - + Fix an infinite compilation bug in the combiner. - + A few problems with complex number support have been fixed. - + It is no longer possible for gcc to act as a fork bomb when - installed incorrectly. - + The -fpack-struct option should be recognized now. - + Fixed a bug that caused incorrect code to be generated due to - a lost stack adjustment. - * Platform specific bugfixes and improvements - + Support building ARM toolchains hosted on Windows. - + Fix attribute calculations in ARM toolchains. - + arm-linux support has been improved. - + Fix a PIC failure on sparc targets. - + On ix86 targets, the regparm attribute should now work - reliably. - + Several updates for the h8300 port. - + Fix problem building libio with glibc 2.2. - - - For questions related to the use of GCC, please consult these web - pages and the [17]GCC manuals. If that fails, the - [18]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [19]gcc@gcc.gnu.org. All of [20]our lists have public - archives. - - Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [22]maintained by the GCC team. Last modified - 2012-11-02[23]. - -References - - 1. http://gcc.gnu.org/news/spill.html - 2. http://gcc.gnu.org/news/lcm.html - 3. http://gcc.gnu.org/news/cprop.html - 4. http://gcc.gnu.org/news/cfg.html - 5. http://gcc.gnu.org/news/dse.html - 6. http://gcc.gnu.org/news/hoist.html - 7. http://gcc.gnu.org/news/alias.html - 8. http://gcc.gnu.org/gcc-2.95/c++features.html - 9. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html - 10. http://gcc.gnu.org/java/gcj-announce.txt - 11. http://gcc.gnu.org/news/javaannounce.html - 12. http://gcc.gnu.org/c99status.html - 13. http://gcc.gnu.org/news/chill.html - 14. http://gcc.gnu.org/news/sparc.html - 15. http://gcc.gnu.org/news/egcs-vcg.html - 16. http://gcc.gnu.org/egcs-1.0/features-2.8.html - 17. http://gcc.gnu.org/onlinedocs/ - 18. mailto:gcc-help@gcc.gnu.org - 19. mailto:gcc@gcc.gnu.org - 20. http://gcc.gnu.org/lists.html - 21. http://www.fsf.org/ - 22. http://gcc.gnu.org/about.html - 23. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/gcc-2.95/caveats.html - - GCC 2.95 Caveats - - * GCC 2.95 will issue an error for invalid asm statements that had - been silently accepted by earlier versions of the compiler. This is - particularly noticeable when compiling older versions of the Linux - kernel (2.0.xx). Please refer to the FAQ (as shipped with GCC 2.95) - for more information on this issue. - * GCC 2.95 implements type based alias analysis to disambiguate - memory references. Some programs, particularly the Linux kernel - violate ANSI/ISO aliasing rules and therefore may not operate - correctly when compiled with GCC 2.95. Please refer to the FAQ (as - shipped with GCC 2.95) for more information on this issue. - * GCC 2.95 has a known bug in its handling of complex variables for - 64bit targets. Instead of silently generating incorrect code, GCC - 2.95 will issue a fatal error for situations it can not handle. - This primarily affects the Fortran community as Fortran makes more - use of complex variables than C or C++. - * GCC 2.95 has an integrated libstdc++, but does not have an - integrated libg++. Furthermore old libg++ releases will not work - with GCC 2.95. You can retrieve a recent copy of libg++ from the - [1]GCC ftp server. - Note most C++ programs only need libstdc++. - * Exception handling may not work with shared libraries, particularly - on alphas, hppas, rs6000/powerpc and mips based platforms. - Exception handling is known to work on x86 GNU/Linux platforms with - shared libraries. - * In general, GCC 2.95 is more rigorous about rejecting invalid C++ - code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0, - or EGCS 1.1. As a result it may be necessary to fix C++ code before - it will compile with GCC 2.95. - * G++ is also converting toward the ISO C++ standard; as a result - code which was previously valid (and thus accepted by other - compilers and older versions of g++) may no longer be accepted. The - flag -fpermissive may allow some non-conforming code to compile - with GCC 2.95. - * GCC 2.95 compiled C++ code is not binary compatible with EGCS - 1.1.x, EGCS 1.0.x or GCC 2.8.x. - * GCC 2.95 does not have changes from the GCC 2.8 tree that were made - between Sept 30, 1998 and April 30, 1999 (the official end of the - GCC 2.8 project). Future GCC releases will include all the changes - from the defunct GCC 2.8 sources. - - - For questions related to the use of GCC, please consult these web - pages and the [2]GCC manuals. If that fails, the - [3]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [4]gcc@gcc.gnu.org. All of [5]our lists have public archives. - - Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [7]maintained by the GCC team. Last modified - 2012-11-02[8]. - -References - - 1. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz - 2. http://gcc.gnu.org/onlinedocs/ - 3. mailto:gcc-help@gcc.gnu.org - 4. mailto:gcc@gcc.gnu.org - 5. http://gcc.gnu.org/lists.html - 6. http://www.fsf.org/ - 7. http://gcc.gnu.org/about.html - 8. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/egcs-1.1/index.html - - EGCS 1.1 - - September 3, 1998: We are pleased to announce the release of EGCS 1.1. - December 1, 1998: We are pleased to announce the release of EGCS 1.1.1. - March 15, 1999: We are pleased to announce the release of EGCS 1.1.2. - - EGCS is a free software project to further the development of the GNU - compilers using an open development environment. - - EGCS 1.1 is a major new release of the EGCS compiler system. It has - been [1]extensively tested and is believed to be stable and suitable - for widespread use. - - EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8 - development sources; it contains all of the new features found in GCC - 2.8.1 as well as all new development from GCC up to June 6, 1998. - - EGCS 1.1 also contains many improvements and features not found in GCC - or in older versions of EGCS: - * Global common subexpression elimination and global constant/copy - propagation (aka [2]gcse) - * Ongoing improvements to the [3]alias analysis support to allow for - better optimizations throughout the compiler. - * Vastly improved [4]C++ compiler and integrated C++ runtime - libraries. - * Fixes for the /tmp symlink race security problems. - * New targets including mips16, arm-thumb and 64 bit PowerPC. - * Improvements to GNU Fortran (g77) compiler and runtime library made - since g77 version 0.5.23. - - See the [5]new features page for a more complete list of new features - found in EGCS 1.1 releases. - - EGCS 1.1.1 is a minor update to fix several serious problems in EGCS - 1.1: - * General improvements and fixes - + Avoid some stack overflows when compiling large functions. - + Avoid incorrect loop invariant code motions. - + Fix some core dumps on Linux kernel code. - + Bring back the imake -Di386 and friends fix from EGCS 1.0.2. - + Fix code generation problem in gcse. - + Various documentation related fixes. - * g++/libstdc++ improvements and fixes - + MT safe EH fix for setjmp/longjmp based exception handling. - + Fix a few bad interactions between optimization and exception - handling. - + Fixes for demangling of template names starting with "__". - + Fix a bug that would fail to run destructors in some cases - with -O2. - + Fix 'new' of classes with virtual bases. - + Fix crash building Qt on the Alpha. - + Fix failure compiling WIFEXITED macro on GNU/Linux. - + Fix some -frepo failures. - * g77 and libf2c improvements and fixes - + Various documentation fixes. - + Avoid compiler crash on RAND intrinsic. - + Fix minor bugs in makefiles exposed by BSD make programs. - + Define _XOPEN_SOURCE for libI77 build to avoid potential - problems on some 64-bit systems. - + Fix problem with implicit endfile on rewind. - + Fix spurious recursive I/O errors. - * platform specific improvements and fixes - + Match all versions of UnixWare7. - + Do not assume x86 SVR4 or UnixWare targets can handle stabs. - + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion - from unsigned ints to double precision floats. - + Fix ARM ABI issue with NetBSD. - + Fix a few arm code generation bugs. - + Fixincludes will fix additional broken SCO OpenServer header - files. - + Fix a m68k backend bug which caused invalid offsets in reg+d - addresses. - + Fix problems with 64bit AIX 4.3 support. - + Fix handling of long longs for varargs/stdarg functions on the - ppc. - + Minor fixes to CPP predefines for Windows. - + Fix code generation problems with gpr<->fpr copies for 64bit - ppc. - + Fix a few coldfire code generation bugs. - + Fix some more header file problems on SunOS 4.x. - + Fix assert.h handling for RTEMS. - + Fix Windows handling of TREE_SYMBOL_REFERENCED. - + Fix x86 compiler abort in reg-stack pass. - + Fix cygwin/windows problem with section attributes. - + Fix Alpha code generation problem exposed by SMP Linux - kernels. - + Fix typo in m68k 32->64bit integer conversion. - + Make sure target libraries build with -fPIC for PPC & Alpha - targets. - - EGCS 1.1.2 is a minor update to fix several serious problems in EGCS - 1.1.1: - * General improvements and fixes - + Fix bug in loop optimizer which caused the SPARC (and - potentially other) ports to segfault. - + Fix infinite recursion in alias analysis and combiner code. - + Fix bug in regclass preferencing. - + Fix incorrect loop reversal which caused incorrect code to be - generated for several targets. - + Fix return value for builtin memcpy. - + Reduce compile time for certain loops which exposed quadratic - behavior in the loop optimizer. - + Fix bug which caused volatile memory to be written multiple - times when only one write was needed/desired. - + Fix compiler abort in caller-save.c - + Fix combiner bug which caused incorrect code generation for - certain division by constant operations. - + Fix incorrect code generation due to a bug in range check - optimizations. - + Fix incorrect code generation due to mis-handling of clobbered - values in CSE. - + Fix compiler abort/segfault due to incorrect register - splitting when unrolling loops. - + Fix code generation involving autoincremented addresses with - ternary operators. - + Work around bug in the scheduler which caused qt to be - mis-compiled on some platforms. - + Fix code generation problems with -fshort-enums. - + Tighten security for temporary files. - + Improve compile time for codes which make heavy use of - overloaded functions. - + Fix multiply defined constructor/destructor symbol problems. - + Avoid setting bogus RPATH environment variable during - bootstrap. - + Avoid GNU-make dependencies in the texinfo subdir. - + Install CPP wrapper script in $(prefix)/bin if --enable-cpp. - --enable-cpp=<dirname> can be used to specify an additional - install directory for the cpp wrapper script. - + Fix CSE bug which caused incorrect label-label refs to appear - on some platforms. - + Avoid linking in EH routines from libgcc if they are not - needed. - + Avoid obscure bug in aliasing code. - + Fix bug in weak symbol handling. - * Platform-specific improvements and fixes - + Fix detection of PPro/PII on Unixware 7. - + Fix compiler segfault when building spec99 and other programs - for SPARC targets. - + Fix code-generation bugs for integer and floating point - conditional move instructions on the PPro/PII. - + Use fixincludes to fix byteorder problems on i?86-*-sysv. - + Fix build failure for the arc port. - + Fix floating point format configuration for i?86-gnu port. - + Fix problems with hppa1.0-hp-hpux10.20 configuration when - threads are enabled. - + Fix coldfire code generation bugs. - + Fix "unrecognized insn" problems for Alpha and PPC ports. - + Fix h8/300 code generation problem with floating point values - in memory. - + Fix unrecognized insn problems for the m68k port. - + Fix namespace-pollution problem for the x86 port. - + Fix problems with old assembler on x86 NeXT systems. - + Fix PIC code-generation problems for the SPARC port. - + Fix minor bug with LONG_CALLS in PowerPC SVR4 support. - + Fix minor ISO namespace violation in Alpha varargs/stdarg - support. - + Fix incorrect "braf" instruction usage for the SH port. - + Fix minor bug in va-sh which prevented its use with -ansi. - + Fix problems recognizing and supporting FreeBSD. - + Handle OpenBSD systems correctly. - + Minor fixincludes fix for Digital UNIX 4.0B. - + Fix problems with ctors/dtors in SCO shared libraries. - + Abort instead of generating incorrect code for PPro/PII - floating point conditional moves. - + Avoid multiply defined symbols on GNU/Linux systems using - libc-5.4.xx. - + Fix abort in alpha compiler. - * Fortran-specific fixes - + Fix the IDate intrinsic (VXT) (in libg2c) so the returned year - is in the documented, non-Y2K-compliant range of 0-99, instead - of being returned as 100 in the year 2000. - + Fix the `Date_and_Time' intrinsic (in libg2c) to return the - milliseconds value properly in Values(8). - + Fix the `LStat' intrinsic (in libg2c) to return device-ID - information properly in SArray(7). - - Each release includes installation instructions in both HTML and - plaintext forms (see the INSTALL directory in the toplevel directory of - the distribution). However, we also keep the most up to date - [6]installation instructions and [7]build/test status on our web page. - We will update those pages as new information becomes available. - - The EGCS project would like to thank the numerous people that have - contributed new features, test results, bugfixes, etc. This [8]amazing - group of volunteers is what makes EGCS successful. - - And finally, we can't in good conscience fail to mention some - [9]caveats to using EGCS 1.1. - - Download EGCS from egcs.cygnus.com (USA California). - - The EGCS 1.1 release is also available on many mirror sites. - [10]Goto mirror list to find a closer site. - - - For questions related to the use of GCC, please consult these web - pages and the [11]GCC manuals. If that fails, the - [12]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [13]gcc@gcc.gnu.org. All of [14]our lists have public - archives. - - Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [16]maintained by the GCC team. Last modified - 2012-11-02[17]. - -References - - 1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html - 2. http://gcc.gnu.org/news/gcse.html - 3. http://gcc.gnu.org/news/alias.html - 4. http://gcc.gnu.org/egcs-1.1/c++features.html - 5. http://gcc.gnu.org/egcs-1.1/features.html - 6. http://gcc.gnu.org/install/ - 7. http://gcc.gnu.org/egcs-1.1/buildstat.html - 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html - 9. http://gcc.gnu.org/egcs-1.1/caveats.html - 10. http://gcc.gnu.org/mirrors.html - 11. http://gcc.gnu.org/onlinedocs/ - 12. mailto:gcc-help@gcc.gnu.org - 13. mailto:gcc@gcc.gnu.org - 14. http://gcc.gnu.org/lists.html - 15. http://www.fsf.org/ - 16. http://gcc.gnu.org/about.html - 17. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/egcs-1.1/features.html - - EGCS 1.1 new features - - * Integrated GNU Fortran (g77) compiler and runtime library with - improvements, based on g77 version 0.5.23. - * Vast improvements in the C++ compiler; so many they have [1]page of - their own! - * Compiler implements [2]global common subexpression elimination and - global copy/constant propagation. - * More major improvements in the [3]alias analysis code. - * More major improvements in the exception handling code to improve - performance, lower static overhead and provide the infrastructure - for future improvements. - * The infamous /tmp symlink race security problems have been fixed. - * The regmove optimization pass has been nearly completely rewritten - to improve performance of generated code. - * The compiler now recomputes register usage information before local - register allocation. By providing more accurate information to the - priority based allocator, we get better register allocation. - * The register reloading phase of the compiler optimizes spill code - much better than in previous releases. - * Some bad interactions between the register allocator and - instruction scheduler have been fixed, resulting in much better - code for certain programs. Additionally, we have tuned the - scheduler in various ways to improve performance of generated code - for some architectures. - * The compiler's branch shortening algorithms have been significantly - improved to work better on targets which align jump targets. - * The compiler now supports -Os to prefer optimizing for code space - over optimizing for code speed. - * The compiler will now totally eliminate library calls which compute - constant values. This primarily helps targets with no integer - div/mul support and targets without floating point support. - * The compiler now supports an extensive "--help" option. - * cpplib has been greatly improved and may be suitable for limited - use. - * Memory footprint for the compiler has been significantly reduced - for some pathological cases. - * The time to build EGCS has been improved for certain targets - (particularly the alpha and mips platforms). - * Many infrastructure improvements throughout the compiler, plus the - usual mountain of bugfixes and minor improvements. - * Target dependent improvements: - + SPARC port now includes V8 plus and V9 support as well as - performance tuning for Ultra class machines. The SPARC port - now uses the Haifa scheduler. - + Alpha port has been tuned for the EV6 processor and has an - optimized expansion of memcpy/bzero. The Alpha port now uses - the Haifa scheduler. - + RS6000/PowerPC: support for the Power64 architecture and AIX - 4.3. The RS6000/PowerPC port now uses the Haifa scheduler. - + x86: Alignment of static store data and jump targets is per - Intel recommendations now. Various improvements throughout the - x86 port to improve performance on Pentium processors - (including improved epilogue sequences for Pentium chips and - backend improvements which should help register allocation on - all x86 variants. Conditional move support has been fixed and - enabled for PPro processors. The x86 port also better supports - 64bit operations now. Unixware 7, a System V Release 5 target, - is now supported and SCO OpenServer targets can support GAS. - + MIPS has improved multiply/multiply-add support and now - includes mips16 ISA support. - + M68k has many micro-optimizations and Coldfire fixes. - * Core compiler is based on the GCC development tree from June 9, - 1998, so we have all of the [4]features found in GCC 2.8. - - - For questions related to the use of GCC, please consult these web - pages and the [5]GCC manuals. If that fails, the - [6]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [7]gcc@gcc.gnu.org. All of [8]our lists have public archives. - - Copyright (C) [9]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [10]maintained by the GCC team. Last modified - 2012-11-02[11]. - -References - - 1. http://gcc.gnu.org/egcs-1.1/c++features.html - 2. http://gcc.gnu.org/news/gcse.html - 3. http://gcc.gnu.org/news/alias.html - 4. http://gcc.gnu.org/egcs-1.0/features-2.8.html - 5. http://gcc.gnu.org/onlinedocs/ - 6. mailto:gcc-help@gcc.gnu.org - 7. mailto:gcc@gcc.gnu.org - 8. http://gcc.gnu.org/lists.html - 9. http://www.fsf.org/ - 10. http://gcc.gnu.org/about.html - 11. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/egcs-1.1/caveats.html - - EGCS 1.1 Caveats - - * EGCS has an integrated libstdc++, but does not have an integrated - libg++. Furthermore old libg++ releases will not work with EGCS; HJ - Lu has made a libg++-2.8.1.2 snapshot available which may work with - EGCS. - Note most C++ programs only need libstdc++. - * Exception handling may not work with shared libraries, particularly - on alphas, hppas, rs6000/powerpc and mips based platforms. - Exception handling is known to work on x86-linux platforms with - shared libraries. - * Some versions of the Linux kernel have bugs which prevent them from - being compiled or from running when compiled by EGCS. See the FAQ - (as shipped with EGCS 1.1) for additional information. - * In general, EGCS is more rigorous about rejecting invalid C++ code - or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As - a result it may be necessary to fix C++ code before it will compile - with EGCS. - * G++ is also converting toward the ISO C++ standard; as a result - code which was previously valid (and thus accepted by other - compilers and older versions of g++) may no longer be accepted. - * EGCS 1.1 compiled C++ code is not binary compatible with EGCS 1.0.x - or GCC 2.8.x due to changes necessary to support thread safe - exception handling. - - - For questions related to the use of GCC, please consult these web - pages and the [1]GCC manuals. If that fails, the - [2]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [3]gcc@gcc.gnu.org. All of [4]our lists have public archives. - - Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [6]maintained by the GCC team. Last modified - 2012-11-02[7]. - -References - - 1. http://gcc.gnu.org/onlinedocs/ - 2. mailto:gcc-help@gcc.gnu.org - 3. mailto:gcc@gcc.gnu.org - 4. http://gcc.gnu.org/lists.html - 5. http://www.fsf.org/ - 6. http://gcc.gnu.org/about.html - 7. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/egcs-1.0/index.html - - EGCS 1.0 - - December 3, 1997: We are pleased to announce the release of EGCS 1.0. - January 6, 1998: We are pleased to announce the release of EGCS 1.0.1. - March 16, 1998: We are pleased to announce the release of EGCS 1.0.2. - May 15, 1998 We are pleased to announce the release of EGCS 1.0.3. - - EGCS is a collaborative effort involving several groups of hackers - using an open development model to accelerate development and testing - of GNU compilers and runtime libraries. - - An important goal of EGCS is to allow wide scale testing of - experimental features and optimizations; therefore, EGCS contains some - features and optimizations which are still under development. However, - EGCS has been carefully tested and should be comparable in quality to - most GCC releases. - - EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8 - development sources; it contains nearly all of the new features found - in GCC 2.8. - - EGCS 1.0 also contains many improvements and features not found in GCC - 2.7 and even the GCC 2.8 series (which was released after the original - EGCS 1.0 release). - * Integrated C++ runtime libraries, including support for most major - GNU/Linux systems! - * The integrated libstdc++ library includes a verbatim copy of SGI's - STL release. - * Integrated GNU Fortran compiler. - * New instruction scheduler. - * New alias analysis code. - - See the [1]new features page for a more complete list of new features. - - EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few - critical bugs and add support for Red Hat 5.0 Linux. Changes since the - EGCS 1.0 release: - * Add support for Red Hat 5.0 Linux and better support for Linux - systems using glibc2. - Many programs failed to link when compiled with EGCS 1.0 on Red Hat - 5.0 or on systems with newer versions of glibc2. EGCS 1.0.1 should - fix these problems. - * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception - handling interfaces. - To avoid future compatibility problems, we strongly urge anyone who - is planning on distributing shared libraries that contain C++ code - to upgrade to EGCS 1.0.1 first. - Soon after EGCS 1.0 was released, the GCC developers made some - incompatible changes in libgcc's exception handling interfaces. - These changes were needed to solve problems on some platforms. This - means that GCC 2.8.0, when released, will not be seamlessly - compatible with shared libraries built by EGCS 1.0. The reason is - that the libgcc.a in GCC 2.8.0 will not contain a function needed - by the old interface. - The result of this is that there may be compatibility problems with - shared libraries built by EGCS 1.0 when used with GCC 2.8.0. - With EGCS 1.0.1, generated code uses the new (GCC 2.8.0) interface, - and libgcc.a has the support routines for both the old and the new - interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be freely mixed, - and EGCS 1.0.1 and GCC 2.8.0 code can be freely mixed). - The maintainers of GCC 2.x have decided against including seamless - support for the old interface in 2.8.0, since it was never - "official", so to avoid future compatibility problems we recommend - against distributing any shared libraries built by EGCS 1.0 that - contain C++ code (upgrade to 1.0.1 and use that). - * Various bugfixes in the x86, hppa, mips, and rs6000/ppc back ends. - The x86 changes fix code generation errors exposed when building - glibc2 and the usual GNU/Linux dynamic linker (ld.so). - The hppa change fixes a compiler abort when configured for use with - RTEMS. - The MIPS changes fix problems with the definition of LONG_MAX on - newer systems, allow for command line selection of the target ABI, - and fix one code generation problem. - The rs6000/ppc change fixes some problems with passing structures - to varargs/stdarg functions. - * A few machine independent bugfixes, mostly to fix code generation - errors when building Linux kernels or glibc. - * Fix a few critical exception handling and template bugs in the C++ - compiler. - * Fix Fortran namelist bug on alphas. - * Fix build problems on x86-solaris systems. - - EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several - serious problems in EGCS 1.0.1. - * General improvements and fixes - + Memory consumption significantly reduced, especially for - templates and inline functions. - + Fix various problems with glibc2.1. - + Fix loop optimization bug exposed by rs6000/ppc port. - + Fix to avoid potential code generation problems in jump.c. - + Fix some undefined symbol problems in dwarf1 debug support. - * g++/libstdc++ improvements and fixes - + libstdc++ in the EGCS release has been updated and should be - link compatible with libstdc++-2.8. - + Various fixes in libio/libstdc++ to work better on GNU/Linux - systems. - + Fix problems with duplicate symbols on systems that do not - support weak symbols. - + Memory corruption bug and undefined symbols in bastring have - been fixed. - + Various exception handling fixes. - + Fix compiler abort for very long thunk names. - * g77 improvements and fixes - + Fix compiler crash for omitted bound in Fortran CASE - statement. - + Add missing entries to g77 lang-options. - + Fix problem with -fpedantic in the g77 compiler. - + Fix "backspace" problem with g77 on alphas. - + Fix x86 backend problem with Fortran literals and -fpic. - + Fix some of the problems with negative subscripts for g77 on - alphas. - + Fixes for Fortran builds on cygwin32/mingw32. - * platform specific improvements and fixes - + Fix long double problems on x86 (exposed by glibc). - + x86 ports define i386 again to keep imake happy. - + Fix exception handling support on NetBSD ports. - + Several changes to collect2 to fix many problems with AIX. - + Define __ELF__ for GNU/Linux on rs6000. - + Fix -mcall-linux problem on GNU/Linux on rs6000. - + Fix stdarg/vararg problem for GNU/Linux on rs6000. - + Allow autoconf to select a proper install problem on AIX 3.1. - + m68k port support includes -mcpu32 option as well as cpu32 - multilibs. - + Fix stdarg bug for irix6. - + Allow EGCS to build on irix5 without the gnu assembler. - + Fix problem with static linking on sco5. - + Fix bootstrap on sco5 with native compiler. - + Fix for abort building newlib on H8 target. - + Fix fixincludes handling of math.h on SunOS. - + Minor fix for Motorola 3300 m68k systems. - - EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few - problems reported by Red Hat for builds of Red Hat 5.1. - * Generic bugfixes: - + Fix a typo in the libio library which resulted in incorrect - behavior of istream::get. - + Fix the Fortran negative array index problem. - + Fix a major problem with the ObjC runtime thread support - exposed by glibc2. - + Reduce memory consumption of the Haifa scheduler. - * Target specific bugfixes: - + Fix one x86 floating point code generation bug exposed by - glibc2 builds. - + Fix one x86 internal compiler error exposed by glibc2 builds. - + Fix profiling bugs on the Alpha. - + Fix ImageMagick & emacs 20.2 build problems on the Alpha. - + Fix rs6000/ppc bug when converting values from integer types - to floating point types. - - The EGCS 1.0 releases include installation instructions in both HTML - and plaintext forms (see the INSTALL directory in the toplevel - directory of the distribution). However, we also keep the most up to - date [2]installation instructions and [3]build/test status on our web - page. We will update those pages as new information becomes available. - - And, we can't in good conscience fail to mention some [4]caveats to - using EGCS. - - Update: Big thanks to Stanford for providing a high speed link for - downloading EGCS (go.cygnus.com)! - - Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com - (USA California -- High speed link provided by Stanford). - - The EGCS 1.0 release is also available many mirror sites. - [5]Goto mirror list to find a closer site - - We'd like to thank the numerous people that have contributed new - features, test results, bugfixes, etc. Unfortunately, they're far too - numerous to mention by name. - - - For questions related to the use of GCC, please consult these web - pages and the [6]GCC manuals. If that fails, the - [7]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [8]gcc@gcc.gnu.org. All of [9]our lists have public archives. - - Copyright (C) [10]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [11]maintained by the GCC team. Last modified - 2013-12-03[12]. - -References - - 1. http://gcc.gnu.org/egcs-1.0/features.html - 2. http://gcc.gnu.org/install/ - 3. http://gcc.gnu.org/egcs-1.0/buildstat.html - 4. http://gcc.gnu.org/egcs-1.0/caveats.html - 5. http://gcc.gnu.org/mirrors.html - 6. http://gcc.gnu.org/onlinedocs/ - 7. mailto:gcc-help@gcc.gnu.org - 8. mailto:gcc@gcc.gnu.org - 9. http://gcc.gnu.org/lists.html - 10. http://www.fsf.org/ - 11. http://gcc.gnu.org/about.html - 12. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/egcs-1.0/features.html - - EGCS 1.0 features - - * Core compiler is based on the gcc2 development tree from Aug 2, - 1997, so we have most of the [1]features found in GCC 2.8. - * Integrated GNU Fortran compiler based on g77-0.5.22-19970929. - * Vast improvements in the C++ compiler; so many they have [2]page of - their own! - * Integrated C++ runtime libraries, including support for most major - GNU/Linux systems! - * New instruction scheduler from IBM Haifa which includes support for - function wide instruction scheduling as well as superscalar - scheduling. - * Significantly improved alias analysis code. - * Improved register allocation for two address machines. - * Significant code generation improvements for Fortran code on - Alphas. - * Various optimizations from the g77 project as well as improved loop - optimizations. - * Dwarf2 debug format support for some targets. - * egcs libstdc++ includes the SGI STL implementation without changes. - * As a result of these and other changes, egcs libstc++ is not binary - compatible with previous releases of libstdc++. - * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The SCO - Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0 and - 1.1), Support for RTEMS on several embedded targets, Support for - arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and - MN103, NEC V850, Sparclet, Solaris & GNU/Linux on PowerPCs, etc. - * Integrated testsuites for gcc, g++, g77, libstdc++ and libio. - * RS6000/PowerPC ports generate code which can run on all - RS6000/PowerPC variants by default. - * -mcpu= and -march= switches for the x86 port to allow better - control over how the x86 port generates code. - * Includes the template repository patch (aka repo patch); note the - new template code makes repo obsolete for ELF systems using gnu-ld - such as GNU/Linux. - * Plus the usual assortment of bugfixes and improvements. - - - For questions related to the use of GCC, please consult these web - pages and the [3]GCC manuals. If that fails, the - [4]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [5]gcc@gcc.gnu.org. All of [6]our lists have public archives. - - Copyright (C) [7]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [8]maintained by the GCC team. Last modified - 2012-11-02[9]. - -References - - 1. http://gcc.gnu.org/egcs-1.0/features-2.8.html - 2. http://gcc.gnu.org/egcs-1.0/c++features.html - 3. http://gcc.gnu.org/onlinedocs/ - 4. mailto:gcc-help@gcc.gnu.org - 5. mailto:gcc@gcc.gnu.org - 6. http://gcc.gnu.org/lists.html - 7. http://www.fsf.org/ - 8. http://gcc.gnu.org/about.html - 9. http://validator.w3.org/check/referer -====================================================================== -http://gcc.gnu.org/egcs-1.0/caveats.html - - EGCS 1.0 Caveats - - * EGCS has an integrated libstdc++, but does not have an integrated - libg++. Furthermore old libg++ releases will not work with egc; HJ - Lu has made a libg++-2.8.1.2 available which may work with EGCS. - Note most C++ programs only need libstdc++. - * Note that using -pedantic or -Wreturn-type can cause an explosion - in the amount of memory needed for template-heavy C++ code, such as - code that uses STL. Also note that -Wall includes -Wreturn-type, so - if you use -Wall you will need to specify -Wno-return-type to turn - it off. - * Exception handling may not work with shared libraries, particularly - on alphas, hppas, and mips based platforms. Exception handling is - known to work on x86-linux platforms with shared libraries. - * Some versions of the Linux kernel have bugs which prevent them from - being compiled or from running when compiled by EGCS. See the FAQ - (as shipped with EGCS 1.0) for additional information. - * In general, EGCS is more rigorous about rejecting invalid C++ code - or deprecated C++ constructs than G++ 2.7. As a result it may be - necessary to fix C++ code before it will compile with EGCS. - * G++ is also aggressively tracking the C++ standard; as a result - code which was previously valid (and thus accepted by other - compilers and older versions of G++) may no longer be accepted. - * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS - 1.0.x and later releases should work with Red Hat Linux 5.0. - - - For questions related to the use of GCC, please consult these web - pages and the [1]GCC manuals. If that fails, the - [2]gcc-help@gcc.gnu.org mailing list might help. Comments on these - web pages and the development of GCC are welcome on our developer - list at [3]gcc@gcc.gnu.org. All of [4]our lists have public archives. - - Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and - distribution of this entire article is permitted in any medium, - provided this notice is preserved. - - These pages are [6]maintained by the GCC team. Last modified - 2012-11-02[7]. - -References - - 1. http://gcc.gnu.org/onlinedocs/ - 2. mailto:gcc-help@gcc.gnu.org - 3. mailto:gcc@gcc.gnu.org - 4. http://gcc.gnu.org/lists.html - 5. http://www.fsf.org/ - 6. http://gcc.gnu.org/about.html - 7. http://validator.w3.org/check/referer -====================================================================== |