This is the mail archive of the
mailing list for the GCC project.
[PATCH 0/6] Cgraph changes and various devirtualizations
- From: Martin Jambor <mjambor at suse dot cz>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: Jan Hubicka <hubicka at ucw dot cz>
- Date: Sat, 13 Feb 2010 19:01:36 +0100
- Subject: [PATCH 0/6] Cgraph changes and various devirtualizations
this patch series introduces a number of changes to the call graph
handling, improves how we fold calls to OBJ_TYPE_REFs and then uses
these structural improvements to implement inlining of virtual calls
which have a known callee because of previous inlining and
devirtualization as a part of IPA-CP.
The individual patches have comments describing them in detail in
their separate emails. All of them - with a potential exception of
the first one - are intended for 4.6 and even though that means they
are in an RFC stage I consider them rather complete.
As far as performance impact is concerned, I expect to find out what
exactly it is from pretty-ipa branch automated tester. Nevertheless,
today I have manually measured ~3.5% improvement in 483.xalancbmk run
time. In the same benchmark, these changes bring about 96 new call
graph edges created by indirect inlining (and so potentially inlined)
and IPA-CP devirtualizes further 70 calls. In our libstdc++ testsuite
there are 70 devirtualizations, 96 new indirect inlining edges for
virtual functions and 2603 more OBJ_TYPE_REF calls are folded in
fold_gimple_call in tree-ssa-ccp.c.
I have seen no change in DLV and tramp3D, which I more or less
expected, and none in xpdf as well, which surprised me a bit. On the
whole, however, I do believe that at least the ability to inline
virtual calls is very important for quite a lot of applications.
I'll be grateful for any comments (and approval to commit to