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? -- Maxim Kuvyrkov CodeSourcery / Mentor Graphics
fsf-gcc-devirt-account.ChangeLog
Description: Binary data
fsf-gcc-devirt-account.patch
Description: Binary data