On Wed, Oct 19, 2011 at 11:59 PM, Maxim Kuvyrkov <ma...@codesourcery.com> wrote: > On 28/09/2011, at 4:56 PM, Maxim Kuvyrkov wrote: > >> Jan, >> >> The following patch starts a series of patches which improve >> devirtualization optimizations in GCC. >> >> This patch builds on ipa-cp.c and ipa-prop.c infrastructure for analyzing >> parameters and jump functions and adds basic estimation of devirtualization >> benefit from inlining an edge. E.g., if inlining A across edge E into B >> will allow some of the indirect edges of A to be resolved, then inlining >> cost of edge E is reduced. >> >> The patch was bootstrapped and regtested on x86_64-linux-gnu on both -m32 >> and -m64 multilibs. >> >> OK to commit? > > Ping. > > The primary change of this patch is to make evaluate_conditions_for_edge to > output KNOWN_VALS and KNOWN_BINFOS arrays in addition to conditions for a > callsite. KNOWN_VALS and KNOWN_BINFOS are then passed on to a subroutine of > estimate_calls_size_and_time, which uses ipa-prop.c infrastructure to check > if it will be possible to devirtualize any of the indirect edged within > callee. If possible, then *size and *time returned by > estimate_calls_size_and_time are reduced to account for the devirtualization > benefits. > > OK for trunk?
I miss testcase(s). Any assesment on how this improves devirtualization in practice (for example for Mozilla)? Thanks, Richard. > -- > Maxim Kuvyrkov > CodeSourcery / Mentor Graphics > >