The latest release in the 4.1 release series is GCC 4.1.2.
min-inline-recursive-probability
is also now available to throttle recursive inlining
of functions with small average recursive depths.pure and const
functions, a form of side-effects analysis. While older GCC
releases could also discover such special functions, the new
IPA-based pass runs earlier so that the results are available
to more optimizers. The pass is also simply more powerful
than the old one.-fwhole-program --combine can now be used to
make all functions in program static allowing whole program
optimization. As an exception, the main function
and all functions marked with the new
externally_visible attribute are kept global so
that programs can link with runtime libraries.
int foo (int *, int *);
int
bar (int d)
{
int a, b, c;
b = d + 1;
c = d + 2;
a = b + c;
if (d)
{
foo (&b, &c);
a = b + c;
}
printf ("%d\n", a);
}
The a = b + c can be sunk to right before the
printf. Normal code sinking will not do this, it will
sink the first one above into the else-branch of the conditional
jump, which still gives you two copies of the code.p->a and
p->b, where p is a pointer to a
structure, can never point to the same field.vararg functions if the compiler can prove that they
will not be needed.-fprofile-use or -fbranch-probabilities) and
can be used to drive higher level optimizations, such as inlining.
The -ftree-based-profiling command line option was
removed and -fprofile-use now implies disabling old RTL
level loop optimizer (-fno-loop-optimize). Speculative
prefetching optimization (originally enabled by
-fspeculative-prefetching) was removed.
struct S {
friend void f();
};
void g() { f(); }
will not be accepted; instead a declaration of f
will need to be present outside of the scope of
S. The new -ffriend-injection
option will enable the old behavior.
template <template <typename> class C>
void f(C<double>) {}
template <typename T, typename U = int>
struct S {};
template void f(S<double>);
makes use of the deprecated extension. The reason this code is
not valid ISO C++ is that S is a template with two
parameters; therefore, it cannot be bound to C which
has only one parameter.
std::search_n is provided,
better performing in case of random access iterators.istream
functions, i.e., character array and string extractors.ext/pb_assoc.__gnu_cxx::__versa_string,
providing facilities conforming to the standard requirements for
basic_string, is delivered in
<ext/vstring.h>. In particular:
vstring_fwd.h for some useful
typedefs.tr1.html.java.net.HttpURLConnection implementation no
longer buffers the entire response body in memory.
This means that response bodies larger than available
memory can now be handled.NIO FileChannel.map implementation, fast bulk put
implementation for DirectByteBuffer
(speeds up this method 10x).FileChannel.lock() and
FileChannel.force() implemented.gnu.xml fix for nodes created outside a
namespace context.xml.transform.xml.xpath corrections for cases where
elements/attributes might have been created in
non-namespace-aware mode. Corrections to handling of
XSL variables and minor conformance updates.libjava/classpath/examples/README.awt.datatransfer updated to 1.5 with support
for FlavorEvents. The gtk+ awt peers now allow
copy/paste of text, images, URIs/files and serialized objects
with other applications and tracking clipboard change events with
gtk+ 2.6 (for gtk+ 2.4 only text and serialized objects
are supported). A GNU Classpath Examples datatransfer Demo
was added to show the new functionality.MediaTracker.cp_gtk).GdkGraphics2D has been updated to use
Cairo 0.5.x or higher.BufferedImage and GtkImage
rewrites. All image drawing operations should now work
correctly (flipping requires gtk+ >= 2.6)Graphics2D, image and text work is
documented at:
http://developer.classpath.org/mediation/ClasspathGraphicsImagesText
RepaintManager has been reworked for more
efficient painting, especially for large GUIs.OverlayLayout has been
implemented, the BoxLayout has been rewritten to
make use of the SizeRequirements utility class and
caching for more efficient layout.javax.swing.plaf.metal
package, with most UI delegates in a working state now.
Please test this with your own applications and provide feedback
that will help us to improve this package.gnu.classpath.examples.swing.Demo)
has been extended to highlight various features in our
Free Swing implementation. And it includes a look and feel
switcher for Metal (default), Ocean and GNU themes.javax.swing.plaf.multi package is now
implemented.JTree and
JTable were implemented.gnu.classpath.examples.swing.Demo) with:
-Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFeel
or
-Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeeljava.swing.text.DefaultMutableTreeNode pre-order, post-order,
depth-first and breadth-first traversal enumerations
implemented.JInternalFrame colors and titlebar draw
properly.JTree is working up to par (icons, selection and
keyboard traversal).JMenus were made more compatible in visual and
programmatic behavior.JTable changeSelection and
multiple selections implemented.JButton and JToggleButton change
states work properly now.JFileChooser fixes.revalidate() and repaint()
fixes which make Free Swing much more responsive.MetalIconFactory implemented.JFrame,
JDialog, JApplet,
JInternalFrame, and JWindow are now
1.5 compatible in the sense that you can call add()
and setLayout() directly on them, which will have
the same effect as calling getContentPane().add()
and getContentPane().setLayout().JTree interface has been completed.
JTrees now recognizes mouse clicks and selections
work.BoxLayout works properly now.GrayFilter to actually work.SplitPane implemented.0x47430
("GC") that will mark remote classpath-specific system
exceptions. Obtaining the VMCID means that GNU Classpath
now is a recogniseable type of node in a highly
interoperable CORBA world.