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.MetalLookAndFeel
java.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.
JTree
s 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.org.omg.PortableInterceptor
and related
functionality in other packages is now implemented:
IOR
interceptor works as needed for
1.5.org.omg.DynamicAny
package is completed
and passes the prepared tests.cost.omg.org
.TimeZone
data against Olson
tzdata2005l.zip
and jar
packages UTF-8
clean.java.util.logging.FileHandler
now rotates
files.gnu/classpath/jdwp
. This is unfinished,
but feedback (at classpath@gnu.org
) from
runtime hackers is greatly appreciated. Although most of
the work is currently being done around gcj/gij
we want this framework to be as VM neutral as possible.
Early design is described in:
http://gcc.gnu.org/ml/java/2005-05/msg00260.html--enable-qt-peer
. Included, but not ready for
production yet. They are explicitly disabled and not supported.
But if you want to help with the development of these new
features we are interested in feedback. You will have to
explicitly enable them to try them out (and they will most
likely contain bugs).The ABI change results in partial incompatibility among medium model objects. Linking medium model libraries (or objects) compiled with new compiler into medium model program compiled with older will likely result in exceeding ranges of relocations.
Binutils 2.16.91 or newer are required for compiling medium model now.
<altivec.h>
are
now implemented in a way that puts a smaller burden on the
preprocessor, instead processing the "overloading" in the front ends.
This should benefit compilation speed on AltiVec vector code.-march=z9-109
option, the compiler will
generate code making use of instructions provided by the extended
immediate facility.-mlong-double-128
option, the compiler will map the
long double
data type to 128-bit IEEE floating point.
Using this option constitutes an ABI change, and requires glibc
support.%r13
(which is traditionally reserved as literal pool
pointer), can now be freely used for other purposes by the
compiler.SEARCH STRING
, COMPARE LOGICAL
STRING
, and MOVE STRING
instructions are now
used to implement C string functions.MOVE CHARACTER
instruction with single byte
overlap is now used to implement the memset
function
with non-zero fill byte.LOAD ZERO
instructions are now used where
appropriate.INSERT CHARACTERS UNDER MASK
, STORE
CHARACTERS UNDER MASK
, and INSERT IMMEDIATE
instructions are now used more frequently to optimize bitfield
operations.BRANCH ON COUNT
instruction is now used more
frequently. In particular, the fact that a loop contains a
subroutine call no longer prevents the compiler from using this
instruction.-fstack-protector
feature.--enable-tls
at configure time.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.
For questions related to the use of GCC, please consult these web pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org mailing list might help.Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA.
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
Last modified 2006-06-21 |