public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH 0/6] Cgraph changes and various devirtualizations
@ 2010-02-13 18:03 Martin Jambor
  2010-02-13 18:03 ` [PATCH 1/6] Clarify edge redirection for inline clones Martin Jambor
                   ` (5 more replies)
  0 siblings, 6 replies; 23+ messages in thread
From: Martin Jambor @ 2010-02-13 18:03 UTC (permalink / raw)
  To: GCC Patches; +Cc: Jan Hubicka

Hi,

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
pretty-ipa).

Thanks,

Martin

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2010-03-11 13:20 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-13 18:03 [PATCH 0/6] Cgraph changes and various devirtualizations Martin Jambor
2010-02-13 18:03 ` [PATCH 1/6] Clarify edge redirection for inline clones Martin Jambor
2010-02-22 14:23   ` Jan Hubicka
2010-02-13 18:04 ` [PATCH 3/6] Folding of virtual calls Martin Jambor
2010-02-13 18:12   ` Richard Guenther
2010-02-13 18:04 ` [PATCH 5/6] Indirect inlining " Martin Jambor
2010-02-22 16:49   ` Jan Hubicka
2010-03-10 13:45     ` Martin Jambor
2010-03-10 15:24       ` Jan Hubicka
2010-02-13 18:04 ` [PATCH 6/6] Devirtualization in ipa-cp Martin Jambor
2010-02-22 16:37   ` Jan Hubicka
2010-03-11 13:42     ` Martin Jambor
2010-02-13 18:04 ` [PATCH 4/6] Remove unused ipa_note_param_call.called flag (approved) Martin Jambor
2010-02-13 18:14   ` Richard Guenther
2010-03-05 16:19     ` Martin Jambor
2010-02-22 15:04   ` Jan Hubicka
2010-02-13 18:04 ` [PATCH 2/6] Indirect call graph edges Martin Jambor
2010-02-13 18:17   ` Richard Guenther
2010-02-13 18:25     ` Richard Guenther
2010-03-05 17:06       ` Martin Jambor
2010-02-22 15:52   ` Jan Hubicka
2010-02-22 16:05     ` Richard Guenther
2010-02-22 16:06       ` Jan Hubicka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).