diff options
Diffstat (limited to 'NEWS')
-rw-r--r-- | NEWS | 12194 |
1 files changed, 12194 insertions, 0 deletions
@@ -0,0 +1,12194 @@ +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.6/index.html + GCC 4.6 Release Series + + March 1, 2012 + + The [1]GNU project and the GCC developers are pleased to announce the + release of GCC 4.6.3. + + This release is a bug-fix release, containing fixes for regressions in + GCC 4.6.2 relative to previous releases of GCC. + +Release History + + GCC 4.6.3 + March 1, 2012 ([2]changes, [3]documentation) + + GCC 4.6.2 + October 26, 2011 ([4]changes, [5]documentation) + + GCC 4.6.1 + June 27, 2011 ([6]changes, [7]documentation) + + GCC 4.6.0 + March 25, 2011 ([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-02-20[22]. + +References + + 1. http://www.gnu.org/ + 2. http://gcc.gnu.org/gcc-4.6/changes.html + 3. http://gcc.gnu.org/onlinedocs/4.6.3/ + 4. http://gcc.gnu.org/gcc-4.6/changes.html + 5. http://gcc.gnu.org/onlinedocs/4.6.2/ + 6. http://gcc.gnu.org/gcc-4.6/changes.html + 7. http://gcc.gnu.org/onlinedocs/4.6.1/ + 8. http://gcc.gnu.org/gcc-4.6/changes.html + 9. http://gcc.gnu.org/onlinedocs/4.6.0/ + 10. http://gcc.gnu.org/gcc-4.6/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.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). + + + For questions related to the use of GCC, please consult these web + pages and the [23]GCC manuals. If that fails, the + [24]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 [25]gcc@gcc.gnu.org. All of [26]our lists have public + archives. + + Copyright (C) [27]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 [28]maintained by the GCC team. Last modified + 2013-01-07[29]. + +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/onlinedocs/ + 24. mailto:gcc-help@gcc.gnu.org + 25. mailto:gcc@gcc.gnu.org + 26. http://gcc.gnu.org/lists.html + 27. http://www.fsf.org/ + 28. http://gcc.gnu.org/about.html + 29. 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 + 2012-11-02[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/gcc-3.3/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 + 2012-11-02[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/gcc-3.1/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 + 2012-11-02[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/gcc-3.0/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 backends. + 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 + 2012-11-02[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 +====================================================================== |