Ok. Do consider generalize it with 1) more inline hints (how the parameters are used in callee); and 2) more parameter type (such as addr_k, non_null_k, range_k etc you have proposed before) in the future.
thanks, David On Thu, Aug 29, 2013 at 11:24 AM, Easwaran Raman <era...@google.com> wrote: > On Tue, Aug 20, 2013 at 9:35 PM, Xinliang David Li <davi...@google.com> wrote: >> Do you need to guard the jump function access with check if >> (ipa_node_params_vector.exists ())? > I believe it is not necessary since, for example, ipa_analyze_node > calls ipa_check_create_node_params that calls create. But I see it is > used in ipa-inline-analysis.c everywhere. So I have added a check and > conservatively return false. > >> >> Ideally, useful_cold_callee should be folded into the inline hints >> estimation. Question about the heuristic: why filtering out >> PASS_THROUGH parameter cases completely? Passing 'this' parameter in >> many cases can result in good PRE opportunities. Why not skip the >> unknown type? > > The rationale is it is useful to inline bar into foo in the snippet below: > > void foo () > { > A a; > bar(&a); > ... > } > > Capturing this requires UNKNOWN and KNOWN_TYPE jump functions. I have > changed the check accordingly. I have attached the new patch. > > - Easwaran > >> David >> >> On Tue, Aug 20, 2013 at 12:26 PM, Easwaran Raman <era...@google.com> wrote: >>> The current hot caller heuristic simply promotes edges whose caller is >>> hot. This patch does the following: >>> * Turn it off for applications with large footprint since the size >>> increase hurts them >>> * Be more selective by considering arguments to callee when the >>> heuristic is enabled. >>> >>> This performs well on internal benchmarks. Ok for google/4_8 branch if >>> all tests pass? >>> >>> - Easwaran