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.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 |
|