# GCC 3.3 Release Series
Changes, New Features, and Fixes

## 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 obsoleted in GCC 3.1 has been removed from GCC 3.3. See below for a 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 `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 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 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 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 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

- 10140 cross compiler build failures: missing __mempcpy (DUP: 10198,10338)

#### Internal compiler errors (multi-platform)

- 3581 large string causes segmentation fault in cc1
- 4382 `__builtin_{set,long}jmp` with `-O3` can crash the compiler
- 5533 (c++) ICE when processing `std::accumulate(begin, end, init, invalid_op)`
- 6387 `-fpic -gdwarf-2 -g1` combination gives ICE in dwarf2out
- 6412 (c++) ICE in `retrieve_specialization`
- 6620 (c++) partial template specialization causes an ICE (segmentation fault)
- 6663 (c++) ICE with attribute `aligned`
- 7068 ICE with incomplete types
- 7083 (c++) ICE using `-gstabs` with dodgy class derivation
- 7647 (c++) ICE when data member has the name of the enclosing class
- 7675 ICE in `fixup_var_refs_1`
- 7718 'complex' template instantiation causes ICE
- 8116 (c++) ICE in member template function
- 8358 (ada) Ada compiler accesses freed memory, crashes
- 8511 (c++) ICE: (hopefully) reproducible cc1plus segmentation fault
- 8564 (c++) ICE in `find_function_data`, in `function.c`
- 8660 (c++) template overloading ICE in `tsubst_expr`, in `cp/pt.c`
- 8766 (c++) ICE after failed initialization of static template variable
- 8803 ICE in `instantiate_virtual_regs_1`, in `function.c`
- 8846 (c++) ICE after diagnostic if `fr_FR@euro` locale is set
- 8906 (c++) ICE (Segmentation fault) when parsing nested-class definition
- 9216 (c++) ICE on missing template parameter
- 9261 (c++) ICE in `arg_assoc`, in `cp/decl2.c`
- 9263 (fortran) ICE caused by invalid `PARAMETER` in implied `DO` loop
- 9429 (c++) ICE in template instantiation with a pointered `new` operator
- 9516 Internal error when using a big array
- 9600 (c++) ICE with typedefs in template class
- 9629 (c++) virtual inheritance segfault
- 9672 (c++) ICE: Error reporting routines re-entered
- 9749 (c++) ICE in `write_expression` on invalid function prototype
- 9794 (fortran) ICE: floating point exception during constant folding
- 9829 (c++) Missing colon in nested namespace usage causes ICE
- 9916 (c++) ICE with `noreturn` function in `?:` statement
- 9936 ICE with local function and variable-length 2d array
- 10262 (c++) cc1plus crashes with large generated code
- 10278 (c++) ICE in parser for invalid code
- 10446 (c++) ICE on definition of nonexistent member function of nested class in a class template
- 10451 (c++) ICE in `grokdeclarator` on spurious `mutable` declaration
- 10506 (c++) ICE in `build_new` at `cp/init.c` with `-fkeep-inline-functions` and multiple inheritance
- 10549 (c++) ICE in `store_bit_field` on bitfields that exceed the precision of the declared type

#### Optimization bugs

- 2001 Inordinately long compile times in reload CSE regs
- 2391 Exponential compilation time explosion in combine
- 2960 Duplicate loop conditions even with `-Os`
- 4046 redundant conditional branch
- 6405 Loop-unrolling related performance regressions
- 6798 very long compile time with large case-statement
- 6871 `const` objects shouldn't be moved to `.bss`
- 6909 problem w/ `-Os` on modified `loop-2c.c` test case
- 7189 gcc `-O2 -Wall` does not print ``control reaches end of non-void function'' warning
- 7642 optimization problem with `signbit()`
- 8634 incorrect code for inlining of memcpy under `-O2`
- 8750 Cygwin prolog generation erroneously emitting `__alloca` as regular function call

#### C front end

- 2161 long `if-else` cascade overflows parser stack
- 4319 short accepted on `typedef`'d char
- 8602 incorrect line numbers in warning messages when using inline functions
- 9177 `-fdump-translation-unit`: C front end deletes `function_decl` AST nodes and breaks debugging dumps
- 9853 miscompilation of non-constant structure initializer

#### c++ compiler and library

- 45 legal template specialization code is rejected (DUP: 3784)
- 764 lookup failure: friend operator and dereferencing a pointer and templates (DUP: 5116)
- 2862 gcc accepts invalid explicit instantiation syntax (DUP: 2863)
- 3663 G++ doesn't check access control during template instantiation
- 3797 gcc fails to emit explicit specialization of a template member
- 3948 Two destructors are called when no copy destructor is defined (ABI change)
- 4137 Conversion operator within template is not accepted
- 4361 bogus ambiguity taking the address of a member template
- 4802 g++ accepts illegal template code (access to private member; DUP: 5837)
- 4803 inline function is used but never defined, and g++ does not object
- 5094 Partial specialization cannot be friend?
- 5730 complex<double>::norm() `--` huge slowdown from egcs-2.91.66
- 6713 Regression wrt 3.0.4: g++ `-O2` leads to seg fault at run time
- 7015 certain `__asm__` constructs rejected
- 7086 compile time regression (quadratic behavior in fixup_var_refs)
- 7099 G++ doesn't set the `noreturn` attribute on `std::exit` and `std::abort`
- 7247 copy constructor missing when inlining enabled (invalid optimization?)
- 7441 string array initialization compilation time regression from seconds to minutes
- 7768 `__PRETTY_FUNCTION__` for template destructor is wrong
- 7804 bad printing of floating point constant in warning message
- 8099 Friend classes and template specializations
- 8117 member function pointers and multiple inheritance
- 8205 using declaration and multiple inheritance
- 8645 unnecessary non-zero checks in `stl_tree.h`
- 8724 explicit destructor call for incomplete class allowed
- 8805 compile time regression with many member variables
- 8691 `-O3` and `-fno-implicit-templates` are incompatible
- 8700 unhelpful error message for binding temp to reference
- 8724 explicit destructor call for incomplete class allowed
- 8949 `numeric_limits<>::denorm_min()` and `is_iec559` problems
- 9016 Failure to consistently constant fold "constant" C++ objects
- 9053 g++ confused about ambiguity of overloaded function templates
- 9152 undefined virtual thunks
- 9182 `basic_filebuf<>` does not report errors in `codecvt<>::out`
- 9297 data corruption due to codegen bug (when copying.)
- 9318 `i/ostream::operator>>/<<(streambuf*)` broken
- 9320 Incorrect usage of `traits_type::int_type` in `stdio_filebuf`
- 9400 bogus `-Wshadow` warning: shadowed declaration of `this` in local classes
- 9424 `i/ostream::operator>>/<<(streambuf*)` drops characters
- 9425 `filebuf::pbackfail` broken (DUP: 9439)
- 9474 GCC freezes in compiling a weird code mixing `<iostream>` and `<iostream.h>`
- 9548 Incorrect results from `setf(ios::fixed)` and `precision(-1)` [DR 231]
- 9555 `ostream` inserters fail to set `badbit` on exception
- 9561 `ostream` inserters rethrow exception of wrong type
- 9563 `ostream::sentry` returns true after a failed preparation
- 9582 one-definition rule violation in `std::allocator`
- 9622 `__PRETTY_FUNCTION__` incorrect in template destructors
- 9683 bug in initialization chains for static `const` variables from template classes
- 9791 `-Woverloaded-virtual` reports hiding of destructor
- 9817 `collate::compare` doesn't handle nul characters
- 9825 `filebuf::sputbackc` breaks `sbumpc`
- 9826 `operator>>(basic_istream, basic_string)` fails to compile with custom traits
- 9924 Multiple `using` statements for builtin functions not allowed
- 9946 destructor is not called for temporary object
- 9964 `filebuf::close()` sometimes fails to close file
- 9988 `filebuf::overflow` writes EOF to file
- 10033 optimization breaks polymorphic references w/ `typeid` operator
- 10097 `filebuf::underflow` drops characters
- 10132 `filebuf` destructor can throw exceptions
- 10180 gcc fails to warn about non-inlined function
- 10199 method parametrized by template does not work everywhere
- 10300 use of array-new (nothrow) in segfaults on NULL return
- 10427 Stack corruption with variable-length automatic arrays and virtual destructors
- 10503 Compilation never stops in `fixed_type_or_null`

#### Objective-C

- 5956 selectors aren't matched properly when added to the selector table

#### Fortran compiler and library

- 1832 list directed i/o overflow hangs, `-fbounds-check` doesn't detect
- 3924 g77 generates code that is rejected by GAS if COFF debug info requested
- 5634 doc: explain that configure `--prefix=~/...` does not work
- 6367 multiple repeat counts confuse namelist read into array
- 6491 Logical operations error on logicals when using `-fugly-logint`
- 6742 Generation of C++ Prototype for FORTRAN and `extern "C"`
- 7113 Failure of `g77.f-torture/execute/f90-intrinsic-bit.f -Os` on irix6.5
- 7236 `OPEN(...,RECL=nnn,...)` without `ACCESS='DIRECT'` should assume a direct access file
- 7278 g77 "bug"; the executable misbehaves (with `-O2 -fno-automatic`)
- 7384 `DATE_AND_TIME` milliseconds field inactive on Windows
- 7388 Incorrect output with 0-based array of characters
- 8587 Double complex zero ** double precision number `-> NaN` instead of zero
- 9038 `-ffixed-line-length-none -x` f77-cpp-input gives: Warning: unknown register name line-length-none
- 10197 Direct access files not unformatted by default

#### Java compiler and library

- 6005 gcj fails to build rhug on alpha
- 6389 `System.getProperty("")` should always throw an `IllegalArgumentException`
- 6576 `java.util.ResourceBundle.getResource` ignores locale
- 6652 `new java.io.File("").getCanonicalFile()` throws exception
- 7060 `getMethod()` doesn't search `super` interface
- 7073 bytecode interpreter gives wrong answer for interface `getSuperclass()`
- 7180 possible bug in `javax.naming.spi.NamingManager.getPlusPath()`
- 7416 `java.security` startup refs "GNU libgcj.security"
- 7570 `Runtime.exec` with null envp: child doesn't inherit parent env (DUP: 7578)
- 7611 Internal error while compiling libjava with `-O`
- 7709 `NullPointerException` in `_Jv_ResolvePoolEntry`
- 7766 `ZipInputStream.available` returns 0 immediately after construction
- 7785 `Calendar.getTimeInMillis/setTimeInMillis` should be public
- 7786 `TimeZone.getDSTSavings()` from JDK1.4 not implemented
- 8142 '$' in class names vs. `dlopen` 'dynamic string tokens'
- 8234 `ZipInputStream` chokes when `InputStream.read()` returns small chunks
- 8415 reflection bug: exception info for Method
- 8481 `java.Random.nextInt(int)` may return negative
- 8593 Error reading GZIPped files with `BufferedReader`
- 8759 `java.beans.Introspector` has no `flushCaches()` or `flushFromCaches()` methods
- 8997 `spin()` calls `Thread.sleep`
- 9253 on win32, `java.io.File.listFiles("C:\\")` returns pwd instead of the root content of C:
- 9254 `java::lang::Object::wait(), threads-win32.cc` returns wrong return codes
- 9271 Severe bias in `java.security.SecureRandom`

#### Ada compiler and library

- 6767 `make gnatlib-shared` fails on `-laddr2line`
- 9911 `gnatmake` fails to link when GCC configured with `--with-sjlj-exceptions=yes`
- 10020 Can't bootstrap gcc on AIX with Ada enabled
- 10546 Ada tasking not working on Red Hat 9

#### preprocessor

- 7029 preprocessor should ignore `#warning` with `-M`

#### ARM-specific

- 2903 [arm] Optimization bug with `long long` arithmetic
- 7873 arm-linux-gcc fails when assigning address to a bit field

#### FreeBSD-specific

- 7680 float functions undefined in `math.h/cmath` with `#define _XOPEN_SOURCE`

#### HP-UX or HP-PA-specific

- 8705 [HP-PA] ICE in `emit_move_insn_1`, in `expr.c`
- 9986 [HP-UX] Incorrect transformation of `fputs_unlocked` to `fputc_unlocked`
- 10056 [HP-PA] ICE at `-O2` when building c++ code from doxygen

#### m68hc11-specific

- 6744 Bad assembler code generated: reference to pseudo register z
- 7361 Internal compiler error in `reload_cse_simplify_operands`, in `reload1.c`

#### MIPS-specific

- 9496 [mips-linux] bug in optimizer?

#### PowerPC-specific

- 7067 `-Os` with `-mcpu`=powerpc optimizes for speed (?) instead of space
- 8480 reload ICEs for LAPACK code on powerpc64-linux
- 8784 [AIX] Internal compiler error in `simplify_gen_subreg`
- 10315 [powerpc] ICE: in `extract_insn`, in `recog.c`

#### SPARC-specific

- 10267 (documentation) Wrong build instructions for `*-*-solaris2*`

#### x86-specific (Intel/AMD)

- 7916 ICE in `instantiate_virtual_register_1`
- 7926 (c++) i486 instructions in header files make c++ programs crash on i386
- 8555 ICE in `gen_split_1231`
- 8994 ICE with `-O -march=pentium4`
- 9426 ICE with `-fssa -funroll-loops -fprofile-arcs`
- 9806 ICE in inline assembly with `-fPIC` flag
- 10077 gcc `-msse2` generates movd to move dwords between xmm regs
- 10233 64-bit comparison only comparing bottom 32-bits
- 10286 type-punning doesn't work with `__m64` and `-O`
- 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

- 11272 [Solaris] make bootstrap fails while building libstdc++

#### Internal compiler errors (multi-platform)

- 5754 ICE on invalid nested template class
- 6597 ICE in `set_mem_alias_set` compiling Qt with `-O2` on ia64 and `--enable-checking`
- 6949 (c++) ICE in `tsubst_decl`, in `cp/pt.c`
- 7053 (c++) ICE when declaring a function already defined as a friend method of a template class
- 8164 (c++) ICE when using different `const` expressions as template parameter
- 8384 (c++) ICE in `is_base_type`, in `dwarf2out.c`
- 9559 (c++) ICE with invalid initialization of a static `const`
- 9649 (c++) ICE in `finish_member_declaration`, in `cp/semantics.c` when redeclaring a static member variable
- 9864 (fortran) ICE in `add_abstract_origin_attribute`, in `dwarfout.c` with `-g` `-O` `-finline-functions`
- 10432 (c++) ICE in `poplevel`, in `cp/decl.c`
- 10475 ICE in `subreg_highpart_offset` for code with `long long`
- 10635 (c++) ICE when dereferencing an incomplete type casted from a void pointer
- 10661 (c++) ICE in `instantiate_decl`, in `cp/pt.c` while instantiating static member variables
- 10700 ICE in `copy_to_mode_reg` on 64-bit targets
- 10712 (c++) ICE in `constructor_name_full`, in `cp/decl2.c`
- 10796 (c++) ICE when defining an `enum` with two values: `-1` and `MAX_INT_64BIT`
- 10890 ICE in `merge_assigned_reloads` building Linux 2.4.2x `sched.c`
- 10939 (c++) ICE with template code
- 10956 (c++) ICE when specializing a template member function of a template class, in tsubst, in `cp/pt.c`
- 11041 (c++) ICE: `const myclass &x = *x;` (when `operator*()` defined)
- 11059 (c++) ICE with empty union
- 11083 (c++) ICE in `commit_one_edge_insertion`, in `cfgrtl.c` with `-O2` `-fnon-call-exceptions`
- 11105 (c++) ICE in `mangle_conv_op_name_for_type`
- 11149 (c++) ICE on error when instantiation with call function of a base type
- 11228 (c++) ICE on new-expression using array `operator new` and default-initialization
- 11282 (c++) Infinite memory usage after syntax error
- 11301 (fortran) ICE with `-fno-globals`
- 11308 (c++) ICE when using an `enum` type name as if it were a class or namespace
- 11473 (c++) ICE with `-gstabs` when empty `struct` inherits from an empty `struct`
- 11503 (c++) ICE when instantiating template with `ADDR_EXPR`
- 11513 (c++) ICE in `push_template_decl_real`, in `cp/pt.c`: template member functions

#### Optimization bugs

- 11198 `-O2` `-frename-registers` generates wrong code (aliasing problem)
- 11304 Wrong code production with `-fomit-frame-pointer`
- 11381 volatile memory access optimized away
- 11536 [strength-reduce] `-O2` optimization produces wrong code
- 11557 constant folding bug generates wrong code

#### C front end

- 5897 No warning for statement after `return`
- 11279 DWARF-2 output mishandles large `enum`s

#### Preprocessor bugs

- 11022 no warning for non-compatible macro redefinition

#### C++ compiler and library

- 2330 `static_cast<>()` to a private base is allowed
- 5388 Incorrect message "operands to ?: have different types"
- 5390 Libiberty fails to demangle multi-digit template parameters
- 7877 Incorrect parameter passing to specializations of member function templates
- 9393 Anonymous namespaces and compiling the same file twice
- 10032 `-pedantic` converts some errors to warnings
- 10468 const `typeof`(x) is non-const, but only in templates
- 10527 confused error message with "`new int`()" parameter initializer
- 10679 parameter MIN_INLINE_INSNS is not honored
- 10682 gcc chokes on a `typedef` for an `enum` inside a class template
- 10689 `pow(std::complex(0),1/3)` returns `(nan, nan)` instead of 0.
- 10845 template member function (with nested template as parameter) cannot be called anymore if another unrelated template member function is defined
- 10849 Cannot define an out-of-class specialization of a private nested template class
- 10888 Suppress `-Winline` warnings for system headers
- 10929 `-Winline` warns about functions for which no definition is visible
- 10931 valid conversion `static_cast`<`const` unsigned `int`&>(lvalue-of-type-`int`) is rejected
- 10940 Bad code with explicit specialization
- 10968 If member function implicitly instantiated, explicit instantiation of class fails to instantiate it
- 10990 Cannot convert with `dynamic_cast`<> to a private base class from within a member function
- 11039 Bad interaction between implicit typename deprecation and friendship
- 11062 (libstdc++) avoid `__attribute__` ((unused)); say "__unused__" instead
- 11095 C++ `iostream` manipulator causes segfault when called with negative argument
- 11098 g++ doesn't emit complete debugging information for local variables in destructors
- 11137 Linux shared library constructors not called unless there's one global object
- 11154 spurious ambiguity report for template class specialization
- 11329 Compiler cannot find user defined implicit typecast
- 11332 Spurious error with casts in ?: expression
- 11431 static_cast behavior with subclasses when default constructor available
- 11528 `money_get` facet does not accept "$.00" as valid
- 11546 Type lookup problems in out-of-line definition of a class doubly nested from a template class
- 11567 C++ code containing templated member function with same name as pure virtual member function results in linking failure
- 11645 Failure to deal with using and private inheritance

#### Java compiler and library

- 5179 Qualified static field access doesn't initialize its class
- 8204 gcj `-O2` to native reorders certain instructions improperly
- 10838 java.io.ObjectInputStream syntax error
- 10886 The RMI registry that comes with GCJ does not work correctly
- 11349 JNDI URL context factories not located correctly

#### x86-specific (Intel/AMD)

- 4823 ICE on inline assembly code
- 8878 miscompilation with `-O` and SSE
- 9815 (c++ library) `atomicity.h` - fails to compile with `-O3` `-masm=intel`
- 10402 (inline assembly) [x86] ICE in `merge_assigned_reloads`, in `reload1.c`
- 10504 ICE with SSE2 code and `-O3` `-mcpu`=pentium4 `-msse2`
- 10673 ICE for x86-64 on freebsd libc `vfprintf.c` source
- 11044 [x86] out of range loop instructions for FP code on K6
- 11089 ICE: `instantiate_virtual_regs_lossage` while using SSE built-ins
- 11420 [x86_64] gcc generates invalid asm code when "`-O -fPIC`" is used

#### SPARC- or Solaris- specific

- 9362 solaris 'as' dies when fed .s and "`-gstabs`"
- 10142 [SPARC64] gcc produces wrong code when passing structures by value
- 10663 New configure check aborts with Sun tools.
- 10835 combinatorial explosion in scheduler on HyperSPARC
- 10876 ICE in `calculate_giv_inc` when building KDE
- 10955 wrong code at `-O3` for structure argument in context of structure return
- 11018 `-mcpu`=ultrasparc busts tar-1.13.25
- 11556 [sparc64] ICE in `gen_reg_rtx`() while compiling 2.6.x Linux kernel

#### ia64 specific

- 10907 gcc violates the ia64 ABI (GP must be preserved)
- 11320 scheduler bug (in machine depended reorganization pass)
- 11599 bug with conditional and __builtin_prefetch

#### PowerPC specific

- 9745 [powerpc] gcc mis-compiles libmcrypt (alias problem during loop)
- 10871 error in rs6000_stack_info save_size computation
- 11440 gcc mis-compiles c++ code (libkhtml) with `-O2`, `-fno-gcse` cures it

#### m68k-specific

- 7594 [m68k] ICE on legal code associated with simplify-rtx
- 10557 [m68k] ICE in `subreg_offset_representable_p`
- 11054 [m68k] ICE in `reg_overlap_mentioned_p`

#### ARM-specific

- 10834 [arm] GCC 3.3 still generates incorrect instructions for functions with `__attribute__ ((interrupt ("IRQ")))`
- 10842 [arm] Clobbered link register is copied to pc under certain circumstances
- 11052 [arm] noce_process_if_block() can lose REG_INC notes
- 11183 [arm] ICE in `change_address_1` (3.3) / subreg_hard_regno (3.4)

#### MIPS-specific

- 11084 ICE in `propagate_one_insn`, in `flow.c`

#### SH-specific

- 10331 can't compile c++ part of gcc cross compiler for sh-elf
- 10413 [SH] ICE in `reload_cse_simplify_operands`, in `reload1.c`
- 11096 i686-linux to sh-linux cross compiler fails to compile C++ files

#### GNU/Linux (or Hurd?) specific

- 2873 Bogus fixinclude of `stdio.h` from glibc 2.2.3

#### UnixWare specific

- 3163 configure bug: `gcc/aclocal.m4` mmap test fails on UnixWare 7.1.1

#### Cygwin (or mingw) specific

- 5287 ICE with dllimport attribute
- 10148 [MingW/CygWin] Compiler dumps core

#### DJGPP specific

- 8787 GCC fails to emit .intel_syntax when invoked with `-masm`=intel on DJGPP

#### Darwin (and MacOS X) specific

- 10900 trampolines crash

#### Documentation

- 1607 (c++) Format attributes on methods undocumented
- 4252 Invalid option ``-fdump-translation-unit`'
- 4490 Clarify restrictions on `-m96bit-long-double`, `-m128bit-long-double`
- 10355 document an issue with regparm attribute on some systems (e.g. Solaris)
- 10726 (fortran) Documentation for function "IDate Intrinsic (Unix)" is wrong
- 10805 document bug in old version of Sun assembler
- 10815 warn against GNU binutils on AIX
- 10877 document need for newer binutils on i?86-*`-linux-gnu`
- 11280 Manual incorrect with respect to `-freorder-blocks`
- 11466 Document `-mlittle-endian` and its restrictions for the sparc64 port

#### Testsuite bugs (compiler itself is not affected)

- 10737 newer bison causes `g++.dg/parse/crash2.C` to incorrectly report failure
- 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 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

- 8336 [SCO5] bootstrap config still tries to use COFF options
- 9330 [alpha-osf] Bootstrap failure on Compaq Tru64 with `--enable-threads`=posix
- 9631 [hppa64-linux] gcc-3.3 fails to bootstrap
- 9877 fixincludes makes a bad `sys/byteorder.h` on svr5 (UnixWare 7.1.1)
- 11687 xstormy16-elf build fails in libf2c
- 12263 [SGI IRIX] bootstrap fails during compile of `libf2c/libI77/backspace.c`
- 12490 buffer overflow in scan-`decls.c` (during Solaris 9 fix-header processing)

#### Internal compiler errors (multi-platform)

- 7277 Casting integers to vector types causes ICE
- 7939 (c++) ICE on invalid function template specialization
- 11063 (c++) ICE on parsing initialization list of `const` array member
- 11207 ICE with negative index in array element designator
- 11522 (fortran) g77 dwarf-2 ICE in `add_abstract_origin_attribute`
- 11595 (c++) ICE on duplicate label definition
- 11646 (c++) ICE in `commit_one_edge_insertion` with `-fnon-call-exceptions` `-fgcse` `-O`
- 11665 ICE in ``struct`` initializer when taking address
- 11852 (c++) ICE with bad `struct` initializer.
- 11878 (c++) ICE in `cp_expr_size`
- 11883 ICE with any `-O` on mercury-generated C code
- 11991 (c++) ICE in `cxx_incomplete_type_diagnostic`, in `cp/typeck2.c` when applying typeid operator to template template parameter
- 12146 ICE in `lookup_template_function`, in `cp/pt.c`
- 12215 ICE in `make_label_edge` with `-fnon-call-exceptions -fno-gcse -O2`
- 12369 (c++) ICE with templates and friends
- 12446 ICE in `emit_move_insn` on complicated array reference
- 12510 ICE in `final_scan_insn`
- 12544 ICE with large parameters used in nested functions

#### C and optimization bugs

- 9862 spurious warnings with `-W` `-finline-functions`
- 10962 lookup_field is a linear search on a linked list (can be slow if large `struct`)
- 11370 `-Wunreachable-code` gives false complaints
- 11637 invalid assembly with `-fnon-call-exceptions`
- 11885 Problem with bitfields in packed structs
- 12082 Inappropriate unreachable code warnings
- 12180 Inline optimization fails for variadic function
- 12340 loop unroller + gcse produces wrong code

#### C++ compiler and library

- 3907 nested template parameter collides with member name
- 5293 confusing message when binding a temporary to a reference
- 5296 [DR115] Pointers to functions and to template functions behave differently in deduction
- 7939 ICE on function template specialization
- 8656 Unable to assign function with `__attribute__` and pointer return type to an appropriate variable
- 10147 Confusing error message for invalid template function argument
- 11400 std::search_n() makes assumptions about Size parameter
- 11409 issues with using declarations, overloading, and built-in functions
- 11740 ctype<wchar_t>::do_is(mask, wchar_t) doesn't handle multiple bits in mask
- 11786 operator() call on variable in other namespace not recognized
- 11867 static_cast ignores ambiguity
- 11928 bug with conversion operators that are typedefs
- 12114 Uninitialized memory accessed in dtor
- 12163 static_cast + explicit constructor regression
- 12181 Wrong code with comma operator and c++
- 12236 regparm and fastcall messes up parameters
- 12266 incorrect instantiation of unneeded template during overload resolution
- 12296 istream::peek() doesn't set eofbit
- 12298 [sjlj exceptions] Stack unwind destroys not-yet-constructed object
- 12369 ICE with templates and friends
- 12337 apparently infinite loop in g++
- 12344 stdcall attribute ignored if function returns a pointer
- 12451 missing(late) class forward declaration in `cxxabi.h`
- 12486 g++ accepts invalid use of a qualified name

#### x86 specific (Intel/AMD)

- 8869 [x86 MMX] ICE with `const` variable optimization and MMX builtins
- 9786 ICE in `fixup_abnormal_edges` with `-fnon-call-exceptions` `-O2`
- 11689 g++3.3 emits un-assembleable code for k6 architecture
- 12116 [k6] Invalid assembly output values with X-MAME code
- 12070 ICE converting between double and long double with `-msoft-float`

#### ia64-specific

- 11184 [ia64 hpux] ICE on __builtin_apply building libobjc
- 11535 __builtin_return_address may not work on ia64
- 11693 [ia64] ICE in `gen_nop_type`
- 12224 [ia64] Thread-local storage doesn't work

#### PowerPC-specific

- 11087 [powerpc64-linux] GCC miscompiles `raid1.c` from linux kernel
- 11319 loop miscompiled on ppc32
- 11949 ICE Compiler segfault with ffmpeg `-maltivec` code

#### SPARC-specific

- 11662 wrong code for expr. with cast to `long long` and exclusive or
- 11965 invalid assembler code for a shift < 32 operation
- 12301 (c++) stack corruption when a returned expression throws an exception

#### Alpha-specific

- 11717 [alpha-linux] unrecognizable insn compiling `for.c` of kernel 2.4.22-pre8

#### HPUX-specific

- 11313 problem with #pragma weak and static inline functions
- 11712 `__STDC_EXT__` not defined for C++ by default anymore?

#### Solaris specific

- 12166 Profiled programs crash if PROFDIR is set

#### Solaris-x86 specific

- 12101 i386 Solaris no longer works with GNU as?

#### Miscellaneous embedded target-specific bugs

- 10988 [m32r-elf] wrong blockmove code with `-O3`
- 11805 [h8300-unknown-coff] [H8300] ICE for simple code with `-O2`
- 11902 [sh4] spec file improperly inserts rpath even when none needed
- 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 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

- 11890 Building cross gcc-3.3.1 for sparc-sun-solaris2.6 fails
- 12399 boehm-gc fails (when building a cross compiler): libtool unable to infer tagged configuration
- 13068 mklibgcc.in doesn't handle multi-level multilib subdirectories properly

#### Internal compiler errors (multi-platform)

- 10060 ICE (stack overflow) on huge file (300k lines) due to recursive behaviour of `copy_rtx_if_shared`, in `emit_rtl.c`
- 10555 (c++) ICE on undefined template argument
- 10706 (c++) ICE in `mangle_class_name_for_template`
- 11496 (fortran) error in `flow_loops_find` when `-funroll-loops` active
- 11741 ICE in `pre_insert_copy_insn`, in `gcse.c`
- 12440 GCC crashes during compilation of quicktime4linux 2.0.0
- 12632 (fortran) `-fbounds-check` ICE
- 12712 (c++) ICE on short legit C++ code fragment with gcc 3.3.2
- 12726 (c++) ICE (segfault) on trivial code
- 12890 (c++) ICE on compilation of class with throwing method
- 12900 (c++) ICE in `rtl_verify_flow_info_1`
- 13060 (fortran) ICE in `fixup_var_refs_1`, in `function.c` on correct code with `-O2` `-fno-force-mem`
- 13289 (c++) ICE in `regenerate_decl_from_template` on recursive template
- 13318 ICE: floating point exception in the loop optimizer
- 13392 (c++) ICE in `convert_from_eh_region_ranges_1`, in `except.c`
- 13574 (c++) invalid array default initializer in class lets gcc consume all memory and die
- 13475 ICE on SIMD variables with partial value initialization
- 13797 (c++) ICE on invalid template parameter
- 13824 (java) gcj SEGV with simple .java program

#### C and optimization bugs

- 8776 loop invariants are not removed (most likely)
- 10339 [sparc,ppc,ppc64] Invalid optimization: replacing `strncmp` by `memcmp`
- 11350 undefined labels with `-Os` `-fPIC`
- 12826 Optimizer removes reference through `volatile` pointer
- 12500 stabs debug info: `void` no longer a predefined / builtin type
- 12941 `builtin-bitops-1.c` miscompilation (latent bug)
- 12953 tree inliner bug (in `inline_forbidden_p`) and fix
- 13041 `linux-2.6/sound/core/oss/rate.c` miscompiled
- 13507 spurious `printf` format warning
- 13382 Type information for `const` pointer disappears during optimization.
- 13394 noreturn attribute ignored on recursive invokation
- 13400 Compiled code crashes storing to read-only location
- 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.

- 2094 unimplemented: use of `ptrmem_cst' in template type unification
- 2294 using declaration confusion
- 5050 template instantiation depth exceeds limit: recursion problem?
- 9371 Bad exception handling in `i/ostream::operator>>/<<(streambuf*)`
- 9546 bad exception handling in `ostream` members
- 10081 `basic_ios::_M_cache_locale` leaves NULL members in the face of unknown locales
- 10093 [DR 61] Setting failbit in exceptions doesn't work
- 10095 `istream::operator>>(int&)` sets `ios::badbit` when `ios::failbit` is set.
- 11554 Warning about reordering of initializers doesn't mention location of constructor
- 12297 `istream::sentry::sentry()` handles `eof()` incorrectly.
- 12352 Exception safety problems in `src/localename.cc`
- 12438 Memory leak in `locale::combine()`
- 12540 Memory leak in `locale::locale(const char*)`
- 12594 DRs 60 [TC] and 63 [TC] not implemented
- 12657 Resolution of DR 292 (WP) still unimplemented
- 12696 memory eating infinite loop in diagnostics (error recovery problem)
- 12815 Code compiled with optimization behaves unexpectedly
- 12862 Conflicts between typedefs/enums and namespace member declarations
- 12926 Wrong value after assignment in initialize list using bit-fields
- 12967 Resolution of DR 300 [WP] still unimplemented
- 12971 Resolution of DR 328 [WP] still unimplemented
- 13007 `basic_streambuf::pubimbue`, `imbue` wrong
- 13009 Implicitly-defined assignment operator writes to wrong memory
- 13057 `regparm` attribute not applied to destructor
- 13070 `-Wformat` option ignored in g++
- 13081 forward template declarations in `<complex>` let inlining fail
- 13239 Assertion does not seem to work correctly anymore
- 13262 "xxx is private within this context" when initializing a self-contained template class
- 13290 simple typo in concept checking for std::generate_n
- 13323 Template code does not compile in presence of `typedef`
- 13369 `__verify_grouping` (and `__add_grouping`?) not correct
- 13371 infinite loop with packed `struct` and inlining
- 13445 Template argument replacement "dereferences" a `typedef`
- 13461 Fails to access protected-ctor from public constant
- 13462 Non-standard-conforming type set::pointer
- 13478 gcc uses wrong constructor to initialize a `const` reference
- 13544 "conflicting types" for enums in different scopes
- 13650 `string::compare` should not (always) use `traits_type::length()`
- 13683 bogus warning about passing non-PODs through ellipsis
- 13688 Derived class is denied access to protected base class member class
- 13774 Member variable cleared in virtual multiple inheritance class
- 13884 Protect `sstream.tcc` from extern template use

#### Java compiler and library

- 10746 [win32] garbage collection crash in GCJ

#### Objective-C compiler and library

- 11433 Crash due to dereferencing null pointer when querying protocol

#### Fortran compiler and library

- 12633 logical expression gives incorrect result with `-fugly-logint` option
- 13037 [gcse-lm] g77 generates incorrect code
- 13213 Hex constant problem when compiling with `-fugly-logint` and `-ftypeless-boz`

#### x86-specific (Intel/AMD)

- 4490 ICE with `-m128bit-long-double`
- 12292 [x86_64] ICE: RTL check: expected code `const_int', have `reg' in `make_field_assignment`, in `combine.c`
- 12441 ICE: can't find a register to spill
- 12943 array static-init failure under `-fpic`, `-fPIC`
- 13608 Incorrect code with `-O3` `-ffast-math`

#### PowerPC-specific

- 11598 testcase `gcc.dg/20020118-1.c` fails runtime check of `__attribute__((aligned(16)))`
- 11793 ICE in `extract_insn`, in `recog.c` (const_vector's)
- 12467 vmsumubm emitted when vmsummbm appropriate (typo in altivec.md)
- 12537 g++ generates writeable text sections

#### SPARC-specific

- 12496 wrong result for `__atomic_add(&value, -1)` when using `-O0` `-m64`
- 12865 `mprotect` call to make trampoline executable may fail
- 13354 ICE in `sparc_emit_set_const32`

#### ARM-specific

- 10467 [arm] ICE in `pre_insert_copy_insn`,

#### ia64-specific

- 11226 ICE passing `struct` arg with two floats
- 11227 ICE for `_Complex float, _Complex long double` args
- 12644 GCC 3.3.2 fails to compile glibc on ia64
- 13149 build gcc-3.3.2 1305 error:unrecognizable insn
- Various fixes for libunwind

#### Alpha-specific

- 12654 Incorrect comparison code generated for Alpha
- 12965 SEGV+ICE in `cc1plus` on alpha-linux with `-O2`
- 13031 ICE (unrecognizable insn) when building gnome-libs-1.4.2

#### HPPA-specific

- 11634 [hppa] ICE in `verify_local_live_at_start`, in `flow.c`
- 12158 [hppa] compilation does not terminate at `-O1`

#### S390-specific

- 11992 Wrong built-in code for memcmp with length 1<<24: only (1<<24)-1 possible for CLCL-Instruction

#### SH-specific

- 9365 segfault in `gen_far_branch` (`config/sh/sh.c`)
- 10392 optimizer generates faulty array indexing
- 11322 SH profiler outputs multiple definitions of symbol
- 13069 `gcc/config/sh/rtems.h` broken
- 13302 Putting a `va_list` in a `struct` causes seg fault
- 13585 Incorrect optimization of call to sfunc
- Fix inappropriately exported libgcc functions from the shared library

#### Other embedded target specific

- 8916 [mcore] unsigned char assign gets hosed.
- 11576 [h8300] ICE in `change_address_1`, in emit-`rtl.c`
- 13122 [h8300] local variable gets corrupted by function call when `-fomit-frame-pointer` is given
- 13256 [cris] strict_low_part mistreated in delay slots
- 13373 [mcore] optimization with `-frerun-cse-after-loop` `-fexpensive-optimizations` produces wrong code on mcore

#### GNU HURD-specific

- 12561 `gcc/config/t-gnu` needs updating to work with `--with-sysroot`

#### Tru64 Unix specific

- 6243 testsuite fails almost all tests due to no libintl in `LD_LIBRARY_PATH` during test.
- 11397 weak aliases broken on Tru64 UNIX

#### AIX-specific

- 12505 build failure due to defines of uchar in `cpphash.h` and `sys/types.h`
- 13150 WEAK symbols not exported by collect2

#### IRIX-specific

- 12666 fixincludes problem on IRIX 6.5.19m

#### Solaris-specific

- 12969 Including `sys/byteorder.h` breaks configure checks

#### Testsuite problems (compiler is not affected)

- 10819 testsuite creates CR+LF on compiler version lines in test summary files
- 11612 abi_check not finding correct libgcc_s.so.1

#### Miscellaneous

- 13211 using `-###`, incorrect warnings about unused linker file are produced

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

These pages are maintained by the GCC team.

Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

Last modified 2004-02-04 |