On Sat, Oct 18, 2014 at 3:27 PM, Jan Hubicka <hubi...@ucw.cz> wrote: >> The difference in instrumentation runtime is huge -- as topn profiler >> is pretty expensive to run. >> >> With FDO, it is probably better to make early inlining more aggressive >> in order to get more context sensitive profiling. > > I agree with that, I just would like to understand where increasing the > iterations > helps and if we can handle it without iterating (because Richi originally > requested to > drop the iteration for correcness issues) > Do you have some examples?
We can do FDO experiment by shutting down einline. (Note that increasing iteration to 2 did not actually improve performance with our benchmarks). David > Honza >> >> David >> >> On Sat, Oct 18, 2014 at 10:05 AM, Jan Hubicka <hubi...@ucw.cz> wrote: >> >> Increasing the number of early inliner iterations from 1 to 2 enables more >> >> indirect calls to be promoted/inlined before instrumentation. This in turn >> >> reduces the instrumentation overhead, particularly for more expensive >> >> indirect >> >> call topn profiling. >> > >> > How much difference you get here? One posibility would be also to run >> > specialized >> > ipa-cp before profile instrumentation. >> > >> > Honza >> >> >> >> Passes internal testing and regression tests. Ok for google/4_9? >> >> >> >> 2014-10-18 Teresa Johnson <tejohn...@google.com> >> >> >> >> Google ref b/17934523 >> >> * opts.c (finish_options): Increase max-early-inliner-iterations >> >> to 2 >> >> for profile-gen and profile-use builds. >> >> >> >> Index: opts.c >> >> =================================================================== >> >> --- opts.c (revision 216286) >> >> +++ opts.c (working copy) >> >> @@ -870,6 +869,14 @@ finish_options (struct gcc_options *opts, struct g >> >> opts->x_param_values, opts_set->x_param_values); >> >> } >> >> >> >> + if (opts->x_profile_arc_flag >> >> + || opts->x_flag_branch_probabilities) >> >> + { >> >> + maybe_set_param_value >> >> + (PARAM_EARLY_INLINER_MAX_ITERATIONS, 2, >> >> + opts->x_param_values, opts_set->x_param_values); >> >> + } >> >> + >> >> if (!(opts->x_flag_auto_profile >> >> || (opts->x_profile_arc_flag || >> >> opts->x_flag_branch_probabilities))) >> >> { >> >> >> >> >> >> -- >> >> Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413