GCC 4.1 Release Series
Changes, New Features, and Fixes

The latest release in the 4.1 release series is GCC 4.1.2.

Caveats

General Optimizer Improvements

New Languages and Language specific improvements

C and Objective-C

Ada

C++

Runtime Library (libstdc++)

Objective-C++

Java (GCJ)

New Targets and Target Specific Improvements

IA-32/x86-64

RS6000 (POWER/PowerPC)

S/390, zSeries and System z9

SPARC

MorphoSys

Obsolete Systems

Documentation improvements

Other significant improvements

GCC 4.1.2

This is the list of problem reports (PRs) from GCC's bug tracking system that are known to be fixed in the 4.1.2 release. This list might not be complete (that is, it is possible that some PRs that have been fixed are not listed here).

When generating code for a shared library, GCC now recognizes that global functions may be replaced when the program runs. Therefore, it is now more conservative in deducing information from the bodies of functions. For example, in this example:

    void f() {}
    void g() { 
     try { f(); } 
     catch (...) { 
       cout << "Exception";
     }
    }
  

G++ would previously have optimized away the catch clause, since it would have concluded that f cannot throw exceptions. Because users may replace f with another function in the main body of the program, this optimization is unsafe, and is no longer performed. If you wish G++ to continue to optimize as before, you must add a throw() clause to the declaration of f to make clear that it does not throw exceptions.