Movatterモバイル変換
[0]ホーム
GCC 3.4 Release Series
Changes, New Features, and Fixes
The final release in the 3.4 release series isGCC 3.4.6. The series is now closed.
GCC 3.4 hasmany improvements in the C++front end. 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 pathsand 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 systemsobsoleted in GCC 3.3 has been removed from GCC 3.4. See below for alist 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 theMIPS ABIs haschanged. As a result, the code generated for certain MIPStargets will not be binary compatible with earlier releases.
- In previous releases, the MIPS port had a fake "hilo" registerwith the user-visible name
accum
. This registerhas been removed. - The implementation of theSPARC ABIs haschanged. As a result, the code generated will not be binarycompatible 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 parametersof
-finline-insns
,--param max-inline-insns-single
and--param max-inline-insns-auto
need to bereconsidered. --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 attributeused
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 useunused
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 attributeused
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 ofBoost should compile single-threaded code with-DBOOST_DISABLE_THREADS
. See Bugzilla formore information.
General Optimizer Improvements
- Usability of the profile feedback and coverage testing has been improved.
- A new unit-at-a-time compilation scheme for C, Objective-C, C++ andJava which is enabled via
-funit-at-a-time
(and implied by-O2
). In this scheme a whole file is parsed first andoptimized later. The following basic inter-procedural optimizationsare 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 unrollingpass and adds two other loop transformations -- loop peeling and loopunswitching -- 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 somecases, especially when the webizer optimization pass is notrun.
- 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 avoidingre-use of pseudo registers with non-overlapping live ranges. The passalmost always improves code quality but does make debugging difficultand thus is not enabled by default by-O2
The pass is especially effective as cleanup after code duplicationpasses, such as the loop unroller or the tracer.
- Experimental implementations of superblock or trace scheduling in thesecond 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 replacinggnatpsta
- 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 hasa 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;
- Severalbuilt-in functions such as
__builtin_popcount
for counting bits, finding the highest and lowest bit in aword, 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 andoptimized.
- 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.
- G++ is nowmuch closer to full conformance to the ISO/ANSI C++ standard. This means, among other things, that a lotof invalid constructs which used to be accepted in previous versionswill 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
andtemplate
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 longerfind members of a dependent base (as specified by [temp.dep]/3in 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 themwiththis->
. Here is the corrected definitionofC<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 backwardscompatible with GCC 3.3), you may useusing
declarations instead ofthis->
:
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 whenthe 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
orstruct
before the template-id:template <int N>class A {};template A<0>; // error, not accepted anymoretemplate 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 spurioussemicolons. 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 arerejected if the template has not already been declared. For example,
template <typename T>class C { friend void f<> (C&);};
is rejected. You must first declaref
as atemplate,
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'sdefect report #209 for details. - Declaration of member functions of class templates as friends aresupported. 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 templatespecializations, 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 ofg
before the declaration off
. The default arguments forg
mustbe 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 returnNULL
when the allocator argument returnsNULL
. These changes are incorporated into the libstdc++ runtime library. - Using a name introduced by a typedef in a friend declaration or in anexplicit 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 heretemplate class Q<0>; // OK
- When allocating an array with a new expression, GCC used to allowparentheses around the type name. This is actually ill-formed and it isnow rejected:
int* a = new (int)[10]; // error, not accepted anymoreint* 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(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/Ostreambuf
. - 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. SeeOptions 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. SeeOptions 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. SeeOptions 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 letsURLClassLoader
load code from shared libraries. - libgcj has been much more completely merged withGNU Classpath.
- Class loading is now much more correct; in particular the caller's class loader is now used when that is required.
- 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
New Targets and Target Specific Improvements
Alpha
- Severalbuilt-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 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 thearm-pe
target, but it defaults to using the APCS32 ABI. - The existing ARM pipeline description has been converted to the use theDFA processor pipeline model. There is not much change in code performance, but the description is noweasier 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 ingcc/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 improveperformance and match the argument passing convention used by the IntelC++ Compiler. As a result it is not possible to call functionsaccepting 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. - 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 theColdFire
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 defaultvalue 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 touse software floating point by default.--with-float=hard
, which tells GCC touse hardware floating point by default.
- A 64-bit GNU/Linux port has been added. The associated configurations are
mips64-linux-gnu
andmips64el-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
andmipsel-rtems
. - There are two new
*-elf
configurations,mipsisa32r2-elf
andmipsisa32r2el-elf
.
General
- SeveralABI 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, includingbetter scheduling and redundancy elimination.
- It allows sibling calls to be implemented as jumps.
- n32 and n64 leaf functions can use a call-clobberedglobal pointer instead of
$28
. - The code to set up
$gp
can be removed fromfunctions 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 PowerPC64ABI 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 astruct
starting with adouble
, 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 executionenvironment 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
, orz990
).-mtune
allows to specify which processor to tune for.
- It is possible to customize GCC using the following configure-timeoptions:
--with-mode
, which specifies whether todefault to assuming ESA/390 or z/Architecture mode.--with-arch
, which specifies the defaultvalue 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 selectedusing
-march=z990
or-mtune=z990
. This includes instruction scheduling tuned for the superscalar instructionpipeline 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
andz990
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 debuggingpurposes. 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 canbe restored using the
-mbackchain
option. - The stack frame size of functions may now exceed 2 GB in 64-bitcode.
- A port for the 64-bit IBM TPF operating system has been added;the configuration is
s390x-ibm-tpf
. Thisconfiguration 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
andMULTIPLY AND SUBTRACT
instructions to significantly speed up many floating-point applications. - GCC now uses the
ADD LOGICAL WITH CARRY
andSUBTRACT LOGICAL WITH BORROW
instructions to speed uplong long
arithmetic. - GCC now uses the
SEARCH STRING
instruction to implementstrlen()
. - 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.
- SeveralABI 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. Ava_list
value created byva_start
from a previous release cannot be used withva_arg
from this release, or vice versa.
- More processor configuration options for Xtensa processors are supported:
- the
ABS
instruction is now optional; - the
ADDX*
andSUBX*
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 thextensa-config.h
header file when building GCC. Additionally, the-mno-serialize-volatile
option is no longer supported.
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 permanentlyremoved.
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
andi?86-*-moss*
- NCR 3000 running System V r.4,
i?86-ncr-sysv4*
- FreeBSD with a.out object format,
i?86-*-freebsd*aout*
andi?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*
andm68000-hp-hpux*
- NetBSD with a.out object format (before NetBSD 1.4),
m68k-*-*-netbsd*
exceptm68k-*-*-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.
Bug Fixes
A vast number of bugs have been fixed in 3.4.0, too many to publish acomplete list here.Followthis link to query the Bugzilla database for the list of over 900 bugsfixed in 3.4.0. This is the list of all bugs marked as resolved and fixedin 3.4.0 that are not flagged as 3.4 regressions.
Bug Fixes
This section lists the problem reports (PRs) from GCC's bug trackingsystem thatare 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 listedhere).
Bootstrap failures
- 10129 Ada bootstrap fails on PPC-Darwin - invalid assembler emitted - PIC related
- 14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf
- 14760 A bug in configure.in prevents using both
--program-suffix
and--program-prefix
- 14671 [hppa64] bootstrap fails: ICE in
save_call_clobbered_regs
, incaller_save.c
- 15093 [alpha][Java] make bootstrap fails to configure libffi on Alpha
- 15178 Solaris 9/x86 fails linking after stage 3
Multi-platform internal compiler errors (ICEs)
- 12753 (preprocessor) Memory corruption in preprocessor on bad input
- 13985 ICE in
gcc.c-torture/compile/930621-1.c
- 14810 (c++) tree check failures with invalid code involving templates
- 14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in
cp/parser.c
- 15044 (c++) ICE on syntax error, template header
- 15057 (c++) Compiling of conditional value throw constructs cause a segmentation violation
- 15064 (c++) typeid of template parameter gives ICE
- 15142 (c++) ICE when passing a string where a
char*
is expected in a throw statement - 15159 ICE in
rtl_verify_flow_info_1
- 15165 (c++) ICE in
instantiate_template
- 15193 Unary minus using pointer to V4SF vector causes
-fforce-mem
to exhaust all memory - 15209 (c++) Runs out of memory with packed structs
- 15227 (c++) Trouble with invalid function definition
- 15285 (c++) instantiate_type ICE when forming pointer to template function
- 15299 (c++) ICE in
resolve_overloaded_unification
- 15329 (c++) ICE on constructor of member template
- 15550 ICE in
extract_insn
, inrecog.c
- 15554 (c++) ICE in
tsubst_copy
, incp/pt.c
- 15640 (c++) ICE on invalid code in arg_assoc, in cp/name-
lookup.c
- 15666 [unit-at-a-time] Gcc abort on valid code
- 15696 (c++) ICE with bad pointer-to-member code
- 15701 (c++) ICE with friends and template template parameter
- 15761 ICE in
do_SUBST
, incombine.c
- 15829 (c++) ICE on Botan-1.3.13 due to
-funroll-loops
Ada
- 14538 All RTEMS targets broken for gnat
C front end
- 12391 missing warning about assigning to an incomplete type
- 14649 atan(1.0) should not be a constant expression
- 15004 [unit-at-a-time] no warning for unused paramater in static function
- 15749
--pedantic-errors
behaves differently from--pedantic
with C-compiler on GNU/Linux
C++ compiler and library
- 10646 non-
const
reference is incorrectly matched in a "const
T" partial specialization - 12077
wcin.rdbuf()->in_avail()
return value too high - 13598
enc_filebuf
doesn't work - 14211
const_cast
returns lvalue but should be rvalue - 14220
num_put::do_put()
undesired float/double behavior - 14245 problem with user-defined allocators in std::basic_string
- 14340 libstdc++ Debug mode: failure to convert iterator to const_iterator
- 14600
__gnu_cxx::stdio_sync_filebuf
should expose internalFILE*
- 14668 no warning anymore for reevaluation of declaration
- 14775 LFS (large file support) tests missing
- 14821 Duplicate namespace alias declaration should not conflict
- 14930 Friend declaration ignored
- 14932 cannot use
offsetof
to get offsets of array elements in g++ 3.4.0 - 14950 [non unit-at-a-time] always_inline does not mix with templates and
-O0
- 14962 g++ ignores
#pragma redefine_extname
- 14975 Segfault on low-level write error during imbue
- 15002 Linewise stream input is unusably slow (
std::string
slow) - 15025 compiler accepts redeclaration of template as non-template
- 15046 [arm] Math functions misdetected by cross configuration
- 15069 a bit test on a variable of
enum
type is miscompiled - 15074 g++
-lsupc++
still links against libstdc++ - 15083 spurious "statement has no effect" warning
- 15096 parse error with templates and pointer to
const
member - 15287 combination of operator[] and operator .* fails in templates
- 15317
__attribute__
unused in first parameter of constructor gives error - 15337
sizeof
on incomplete type diagnostic - 15361
bitset<>::_Find_next
fails - 15412 _GLIBCXX_ symbols symbols defined and used in different namespaces
- 15427 valid code results in incomplete type error
- 15471 Incorrect member pointer offsets in anonymous structs/unions
- 15503 nested template problem
- 15507 compiler hangs while laying out union
- 15542
operator &
and template definitions - 15565 SLES9: leading + sign for unsigned
int
with showpos - 15625 friend defined inside a template fails to find static function
- 15629 Function templates, overloads, and friend name injection
- 15742 'noreturn' attribute ignored in method of template functions.
- 15775 Allocator::pointer consistently ignored
- 15821 Duplicate namespace alias within namespace rejected
- 15862 '
enum yn
' fails (confict with undeclared builtin) - 15875 rejects pointer to member in template
- 15877 valid code using templates and anonymous enums is rejected
- 15947 Puzzling error message for wrong destructor declaration in template class
- 16020 cannot copy
__gnu_debug::bitset
- 16154 input iterator concept too restrictive
- 16174 deducing top-level consts
Java
- 14315 Java compiler is not parallel make safe
Fortran
- 15151 [g77] incorrect logical i/o in 64-bit mode
Objective-C
- 7993 private variables cannot be shadowed in subclasses
Optimization bugs
- 15228 useless copies of floating point operands
- 15345 [non-unit-at-a-time] unreferenced nested inline functions not optimized away
- 15945 Incorrect floating point optimization
- 15526 ftrapv aborts on 0 * (
-1
) - 14690 Miscompiled POOMA tests
- 15112 GCC generates code to write to unchanging memory
Preprocessor
- 15067 Minor glitch in the source of cpp
Main driver program bugs
- 1963 collect2 interprets
-oldstyle_liblookup
as-o ldstyle_liblookup
x86-specific (Intel/AMD)
- 15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND* section}
HPPA-specific
- 14782 GCC produces an unaligned data access at
-O2
- 14828 FAIL:
gcc.c
-torture/execute/20030408-1.c
execution,-O2
- 15202 ICE in
reload_cse_simplify_operands
, inpostreload.c
IA64-specific
- 14610 __float80 constants incorrectly emitted
- 14813 init_array sections are initialized in the wrong order
- 14857 GCC segfault on duplicated asm statement
- 15598 Gcc 3.4 ICE on valid code
- 15653 Gcc 3.4 ICE on valid code
MIPS-specific
- 15189 wrong filling of delay slot with
-march=mips1 -G0
-mno-split-addresses
-mno-explicit-relocs
- 15331 Assembler error building gnatlib on IRIX 6.5 with GNU as 2.14.91
- 16144 Bogus reference to
__divdf3
when-O1
- 16176 Miscompilation of unaligned data in MIPS backend
PowerPC-specific
- 11591 ICE in
gcc.dg/altivec-5.c
- 12028 powerpc-eabispe produces bad sCOND operation
- 14478 rs6000 geu/ltu patterns generate incorrect code
- 14567 long double and va_arg complex args
- 14715 Altivec stack layout may overlap gpr save with stack temps
- 14902 (libstdc++) Stream checking functions fail when
-pthread
option is used. - 14924 Compiler ICE on valid code
- 14960
-maltivec
affects vector return with-mabi=no-altivec
- 15106 vector varargs failure passing from altivec to non-altivec code for
-m32
- 16026 ICE in
function
.c:4804, assign_parms, when-mpowerpc64
& half-word operation - 15191
-maltivec
-mabi=no-altivec
results in mis-aligned lvx and stvx - 15662 Segmentation fault when an exception is thrown - even if try and catch are specified
s390-specific
- 15054 Bad code due to overlapping stack temporaries
SPARC-specific
- 15783 ICE with union assignment in 64-bit mode
- 15626 GCC 3.4 emits "ld: warning: relocation error: R_SPARC_UA32"
x86-64-specific
- 14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64
- 14723 Backported
-march
=nocona from mainline - 15290 __float128 failed to pass to function properly
Cygwin/Mingw32-specific
- 15250 Option
-mms-bitfields
support on GCC 3.4 is not conformant to MS layout - 15551
-mtune=pentium4 -O2
with sjlj EH breaks stack probe worker on windows32 targets
Bugs specific to embedded processors
- 8309 [m68k]
-m5200
produces erroneous SImode set of short varaible on stack - 13250 [SH] Gcc code for rotation clobbers the register, but gcc continues to use the register as if it was not clobbered
- 13803 [coldfire] movqi operand constraints too restrictivefor TARGET_COLDFIRE
- 14093 [SH] ICE for code when using
-mhitachi
option in SH - 14457 [m6811hc] ICE with simple c++ source
- 14542 [m6811hc] ICE on simple source
- 15100 [SH] cc1plus got hang-up on libstdc++-
v3/testsuite/abi_check.c
c - 15296 [CRIS] Delayed branch scheduling causing invalid code on cris-*
- 15396 [SH] ICE with
-O2
-fPIC
- 15782 [coldfire] m68k_output_mi_thunk emits wrong code for ColdFire
Testsuite problems (compiler not affected)
- 11610 libstdc++testcases 27_io/* don't work properly remotely
- 15488 (libstdc++) possibly insufficient file permissions for executing test suite
- 15489 (libstdc++) testsuite_files determined incorrectly
Documentation bugs
- 13928 (libstdc++) no whatis info in some man pages generated by doxygen
- 14150 Ada documentation out of date
- 14949 (c++) Need to document method visibility changes
- 15123 libstdc++
-doc
: Allocators.3 manpage is empty
Bug Fixes
This section lists the problem reports (PRs) from GCC's bug trackingsystem thatare 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 listedhere).
Bootstrap failures and issues
- 16469 [mips-sgi-irix5.3] bootstrap fails in libstdc++
-v3
/testsuite - 16344 [hppa-linux-gnu] libstdc++'s PCH built by profiledbootstrap does not work with the built compiler
- 16842 [Solaris/x86] mkheaders can not find
mkheaders.c
onf
Multi-platform internal compiler errors (ICEs)
- 12608 (c++) ICE: expected class 't', have 'x' (error_mark) in cp_parser_class_specifier, in
cp/parser.c
- 14492 ICE in
loc_descriptor_from_tree
, indwarf2out.c
- 15461 (c++) ICE due to NRV and inlining
- 15890 (c++) ICE in
c_expand_expr
, inc-common.c
- 16180 ICE: segmentation fault in RTL optimization
- 16224 (c++) ICE in
write_unscoped_name
(template/namespace) - 16408 ICE: in
delete_insn
, incfgrtl.c
- 16529 (c++) ICE for: namespace-alias shall not be declared as the name of any other entity
- 16698 (c++) ICE with exceptions and declaration of
__cxa_throw
- 16706 (c++) ICE in
finish_member_declaration
, incp/semantics.c
- 16810 (c++) Legal C++ program with cast gives ICE in
build_ptrmemfunc
- 16851 (c++) ICE when throwing a comma expression
- 16870 (c++) Boost.Spirit causes ICE in
tsubst
, incp/pt.c
- 16904 (c++) ICE in
finish_class_member_access_expr
, incp/typeck.c
- 16905 (c++) ICE (segfault) with exceptions
- 16964 (c++) ICE in
cp_parser_class_specifier
due to redefinition - 17068 (c++) ICE: tree check: expected class 'd', have 'x' (identifier_node) in
dependent_template_p
, incp/pt.c
Preprocessor bugs
- 16366 Preprocessor option
-remap
causes memory corruption
Optimization
- 15345 unreferenced nested inline functions not optimized away
- 16590 Incorrect execution when compiling with
-O2
- 16693 Bitwise AND is lost when used within a cast to an
enum
of the same precision - 17078 Jump into
if(0)
substatement fails
Problems in generated debug information
- 13956 incorrect stabs for nested local variables
C front end bugs
- 16684 GCC should not warn about redundant redeclarations of built-ins
C++ compiler and library
- 12658 Thread safety problems in
locale::global()
andlocale::locale()
- 13092 g++ accepts invalid pointer-to-member conversion
- 15320 Excessive memory consumption
- 16246 Incorrect template argument deduction
- 16273 Memory exhausted when using nested classes and virtual functions
- 16401
ostringstream
in gcc 3.4.x very slow for big data - 16411 undefined reference to
__gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >::file()
- 16489 G++ incorrectly rejects use of a null constant integral expression as a null constant pointer
- 16618
offsetof
fails with constant member - 16637 syntax error reported for valid input code
- 16717
__attribute__((constructor))
broken in C++ - 16813 compiler error in DEBUG version of range insertion
std::map::insert
- 16853 pointer-to-member initialization from incompatible one accepted
- 16889 ambiguity is not detected
- 16959 Segmentation fault in
ios_base::sync_with_stdio
Java compiler and library
- 7587 direct threaded interpreter not thread-safe
- 16473 ServerSocket
accept()
leaks file descriptors - 16478 Hash synchronization deadlock with finalizers
Alpha-specific
- 10695 ICE in
dwarf2out_frame_debug_expr
, indwarf2out.c
- 16974 could not split insn (ice in
final_scan_insn
, infinal.c
)
x86-specific
- 16298 ICE in
output_operand
- 17113 ICE with SSE2 intrinsics
x86-64 specific
- 14697 libstdc++ couldn't find 32bit libgcc_s
MIPS-specific
- 15869 [mips64] No NOP after LW (with
-mips1
-O0
) - 16325 [mips64] value profiling clobbers gp on mips
- 16357 [mipsisa64-elf] ICE copying 7 bytes between extern char[]s
- 16380 [mips64] Use of uninitialised register after dbra conversion
- 16407 [mips64] Unaligned access to local variables
- 16643 [mips64] verify_local_live_at_start ICE after crossjumping & cfgcleanup
ARM-specific
- 15927 THUMB
-O2
: strength-reduced iteration variable ends up off by 1 - 15948 THUMB: ICE with non-commutative cbranch
- 17019 THUMB: bad switch statement in md code for addsi3_cbranch_scratch
IA64-specific
- 16130 ICE on valid code: in bundling, in
config/ia64/ia64.c
(-mtune=merced
) - 16142 ICE on valid code: in bundling, in
config/ia64/ia64.c
(-mtune=itanium
) - 16278 Gcc failed to build Linux kernel with
-mtune=merced
- 16414 ICE on valid code: typo in comparison of
asm_noperands
result - 16445 ICE on valid code: don't count ignored insns
- 16490 ICE (segfault) while compiling with
-fprofile-use
- 16683 ia64 does not honor SUBTARGET_EXTRA_SPECS
PowerPC-specific
- 16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x
- 16239 ICE on ppc64 (mozilla 1.7 compile,
-O1
-fno-exceptions
issue)
SPARC-specific
- 16199 ICE while compiling apache 2.0.49
- 16416
-m64
doesn't imply-mcpu=v9
anymore - 16430 ICE when returning non-C aggregates larger than 16 bytes
Bugs specific to embedded processors
- 16379 [m32r] can't output large model function call of
memcpy
- 17093 [m32r] ICE with
-msdata=use
-O0
- 17119 [m32r] ICE at switch case 0x8000
DJGPP-specific
- 15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp
Alpha Tru64-specific
- 16210 libstdc++ gratuitously omits "
long long
" I/O
Testsuite, documentation issues (compiler is not affected):
- 15488 (libstdc++) possibly insufficient file permissions for executing test suite
- 16250 ada/doctools runs makeinfo even in release tarball
This is thelistof problem reports (PRs) from GCC's bug tracking system that areknown to be fixed in the 3.4.3 release. This list might not becomplete (that is, it is possible that some PRs that have been fixedare not listed here).
Bootstrap failures
- 17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1
- 17850 [arm-elf] bootstrap failure - libstdc++ uses strtold when undeclared
Internal compiler errors (ICEs) affecting multiple platforms
- 13948 (java) GCJ segmentation fault while compiling GL4Java .class files
- 14492 ICE in
loc_descriptor_from_tree
, indwarf2out.c
- 16301 (c++) ICE when "strong" attribute is attached to a
using
directive - 16566 ICE with flexible arrays
- 17023 ICE with nested functions in parameter declaration
- 17027 ICE with noreturn function in loop at
-O2
- 17524 ICE in
grokdeclarator
, incp/decl.c
- 17826 (c++) ICE in
cp_tree_equal
C and optimization bugs
- 15526
-ftrapv
aborts on0 * (-1)
- 16999
#ident
stopped working - 17503 quadratic behaviour in invalid_mode_change_p
- 17581 Long long arithmetic fails inside a switch/case statement when compiled with
-O2
- 18129
-fwritable-strings
doesn't work
C++ compiler and library bugs
- 10975 incorrect initial
ostringstream::tellp()
- 11722 Unbuffered
filebuf::sgetn
is slow - 14534 Unrecognizing static function as a template parameter when its return value is also templated
- 15172 Copy constructor optimization in aggregate initialization
- 15786 Bad error message for frequently occuring error.
- 16162 Rejects valid member-template-definition
- 16612 empty basic_strings can't live in shared memory
- 16715
std::basic_iostream
is instantiated when used, even though instantiations are already contained in libstdc++ - 16848 code in
/ext/demangle.h
appears broken - 17132 GCC fails to eliminate function template specialization when argument deduction fails
- 17259 One more
_S_leaf
incorrectly qualified with_RopeRep::
inropeimpl.h
- 17327 use of `enumeral_type' in template type unification
- 17393 "unused variable '._0'" warning with
-Wall
- 17501 Confusion with member templates
- 17537 g++ not passing
-lstdc
++ to linker when all command line arguments are libraries - 17585 usage of unqualified name of static member from within class not allowed
- 17821 Poor diagnostic for using "." instead of "->"
- 17829 wrong error: call of overloaded function is ambiguous
- 17851 Misleading diagnostic for invalid function declarations with undeclared types
- 17976 Destructor is called twice
- 18020 rejects valid definition of
enum
value in template - 18093 bogus conflict in namespace aliasing
- 18140 C++ parser bug when using >> in templates
Fortran
- 17541 data statements with double precision constants fail
x86-specific
- 17853
-O2
ICE for MMX testcase
SPARC-specific
- 17245 ICE compiling gsl-1.5
statistics/lag1.c
Darwin-specific
- 17167 FATAL:Symbol
L_foo$stub
already defined.
AIX-specific
- 17277 could not catch an exception when specified
-maix64
Solaris-specific
- 17505
<cmath>
callsacosf()
,ceilf()
, and other functions missing from system libraries
HP/UX specific:
- 17684 /usr/ccs/bin/ld: Can't create
libgcc_s.sl
ARM-specific
- 17384 ICE with mode attribute on structures
MIPS-specific
- 17770 No NOP after LWL with
-mips1
Other embedded target specific
- 11476 [arc-elf] gcc ICE on newlib's
vfprintf.c
- 14064 [avr-elf]
-fdata-sections
triggers ICE - 14678 [m68hc11-elf] gcc ICE
- 15583 [powerpc-rtems] powerpc-rtems lacks
__USE_INIT_FINI__
- 15790 [i686-coff] Alignment error building gcc with i686-coff target
- 15886 [SH] Miscompilation with
-O2
-fPIC
- 16884 [avr-elf] [fweb related] bug while initializing variables
Bugs relating to debugger support
- 13841 missing debug info for
_Complex
function arguments - 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)
- 17465 Testsuite in libffi overrides LD_LIBRARY_PATH
- 17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH
- 18138 [mips-sgi-irix6.5]
libgcc_s.so.1
not found by 64-bit testsuite
Documentation
- 15498 typo in gcc manual: non-existing locale example en_UK, should be en_GB
- 15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap: document broken shell
- 16406 USE_LD_AS_NEEDED undocumented
This is thelistof problem reports (PRs) from GCC's bug tracking system that areknown to be fixed in the 3.4.4 release. This list might not becomplete (that is, it is possible that some PRs that have been fixedare not listed here).
This is thelistof problem reports (PRs) from GCC's bug tracking system that areknown to be fixed in the 3.4.5 release. This list might not becomplete (that is, it is possible that some PRs that have been fixedare not listed here).
Bootstrap issues
- 24688 sco_math fixincl breaks
math.h
C compiler bugs
- 17188
struct Foo { }
redefinition - 20187 wrong code for
((unsigned char)(unsigned long long)((a?a:1)&(a*b)))?0:1)
- 21873 infinite warning loop on badarray initializer
- 21899 enum definition acceptsvalues to be overriden
- 22061 ICE in
find_function_data
, infunction.c
- 22308 Failure to diagnoseviolation of constraint 6.516p2
- 22458 ICE on missing brace
- 22589 ICE casting to
longlong
- 24101 Segfault with preprocessed source
C++ compiler and library bugs
- 10611 operations on vector modenot recognized in C++
- 13377 unexpected behavior ofnamespace usage directive
- 16002 Strange error message withnew parser
- 17413 local classes as template argument
- 17609 spurious error message after
using
keyword - 17618 ICE in
cp_convert_to_pointer
, incp/cvt.c
- 18124 ICE with invalid templatetemplate parameter
- 18155
typedef
intemplate declaration not rejected - 18177 ICE with
const_cast
for undeclared variable - 18368 C++ error messageregression
- 16378 ICE when returning a copy ofa packed member
- 18466
int ::i;
accepted - 18512 ICE on invalid usage oftemplate base class
- 18454 ICE when returning undefinedtype
- 18738
typename
notallowed with non-dependent qualified name - 18803 rejects access to
operator()
in template - 19004 ICE in
uses_template_parms
, incp/pt.c
- 19208 Spurious error aboutvariably modified type
- 18253 bad error message / ICE forinvalid template parameter
- 19608 ICE after friend functiondefinition in local class
- 19884 ICE on explicitinstantiation of a non-template constructor
- 20153 ICE when C++ templatefunction contains anonymous union
- 20563 Infinite loop in diagnostic(and ice after error message)
- 20789 ICE with incomplete type intemplate
- 21336 Internal compiler error whenusing custom new operators
- 21768 ICE in error message due toviolation of coding conventions
- 21853 constness of pointer to datamember ignored
- 21903 Default argument of templatefunction causes a compile-time error
- 21983 multiple diagnostics
- 21987 New testsuite failure
g++.dg/warn/conversion-function-1.C
- 22153 ICE on invalid templatespecialization
- 22172 Internal compiler error, segfault.
- 21286
filebuf::xsgetn
vs pipes - 22233 ICE with wrong number oftemplate parameters
- 22508 ICE after invalid
operator new
- 22545 ICE with pointer to classmember & user defined conversion operator
- 23528 Wrong default allocator in
ext/hash_map
- 23550
char_traits
requirements/1.cc test bad math - 23586 Bad diagnostic for invalidnamespace-name
- 23624 ICE in
invert_truthvalue
, infold-const.c
- 23639 Bad error message: not amember of '<declaration error>'
- 23797 ICE on
typename
outside template - 23965 Bogus error message: nomatching function for call to '
foo(<type error>)
' - 24052
&#`label_decl'
not supported bydump_expr#<expression error>
- 24580 virtual base class causeexception not to be caught
Problems in generated debug information
- 24267 Bad DWARF for altivec vectors
Optimizations issues
- 17810 ICE in
verify_local_live_at_start
- 17860 Wrong generated code forloop with varying bound
- 21709 ICE on compile-time complexNaN
- 21964 broken tail call at -O2 ormore
- 22167 Strange optimization bugwhen using
-Os
- 22619 Compilation failure for
real_const_1.f
andreal_const_2.f90
- 23241 Invalid code generated forcomparison of
uchar
to 255 - 23478 Miscompilation due toreloading of a var that is also used in EH pad
- 24470 segmentation fault incc1plus when compiling with
-O
- 24950 ICE in
operand_subword_force
Precompiled headers problems
- 14400 Cannot compile qt-x11-free-3.3.0
- 14940 PCH largefile test fails onvarious platforms
Preprocessor bugs
- 20239 ICE on empty preprocessedinput
- 15220 "gcc -E -MM -MG" reportsmissing system headers in source directory
Testsuite issues
- 19275 gcc.dg/20020919-1.c failswith
-fpic/-fPIC
oni686-pc-linux-gnu
Alpha specific
- 21888 bootstrap failure withlinker relaxation enabled
ARM specific
- 15342 [arm-linux]: ICEin
verify_local_live_at_start
- 23985 Memory aliasing informationincorrect in inlined memcpy
ColdFile specific
- 16719 Illegal move of byte intoaddress register causes compiler to ICE
HPPA specific
- 21723 ICE while buildinglibgfortran
- 21841
-mhp-ld/-mgnu-ld
documentation
IA-64 specific
- 23644 IA-64 hardware models andconfiguration options documentation error
- 24718 Shared libgcc not used forlinking by default
M68000 specific
- 18421 ICE in
reload_cse_simplify_operands
, inpostreload.c
MIPS specific
- 20621 ICE in
change_address_1
, inemit-rtl.c
PowerPC and PowerPC64 specific
- 18583 error on valid code:
const __attribute__((altivec(vector__)))
doesn't work inarrays - 20191 ICE in
reload_cse_simplify_operands
- 22083 AIX:
TARGET_C99_FUNCTIONS
is wrongly defined - 23070
CALL_V4_CLEAR_FP_ARGS
flag not properly set - 23404 gij trashes args offunctions with more than 8 fp args
- 23539 C & C++ compilergenerating misaligned references regardless of compiler flags
- 24102
floatdisf2_internal2
broken - 24465
-mminimal-toc
miscompilation of__thread
vars
Solaris specific
- 19933 Problem with define of
HUGE_VAL
inmath_c99
- 21889 Native Solaris assemblercannot grok DTP-relative debug symbols
SPARC specific
- 19300 PCH failures onsparc-linux
- 20301 Assembler labels have aleading "-"
- 20673 C PCH testsuite assemblycomparison failure
x86 and x86_64 specific
- 18582 ICE with arrays of type
V2DF
- 19340 Compilation SEGFAULTs with
-O1 -fschedule-insns2 -fsched2-use-traces
- 21716 ICE in
reg-stack.c
'sswap_rtx_condition
- 24315 amd64 fails
-fpeephole2
This is thelistof problem reports (PRs) from GCC's bug tracking system that areknown to be fixed in the 3.4.6 release. This list might not becomplete (that is, it is possible that some PRs that have been fixedare not listed here).
[8]ページ先頭