Verified identical binaries created and submitted. Mark
On Wed, May 18, 2011 at 11:37 AM, Xinliang David Li <davi...@google.com> wrote: > Ok with that change to google/main with some retesting. > > David > > On Wed, May 18, 2011 at 11:34 AM, Mark Heffernan <meh...@google.com> wrote: >> On Wed, May 18, 2011 at 10:52 AM, Xinliang David Li <davi...@google.com> >> wrote: >>> The new change won't help those. Your original place will be ok if you >>> test profile_arcs and branch_probability flags. >> >> Ah, yes. I see your point now. Reverted to the original change with >> condition profile_arc_flag and flag_branch_probabilities. >> >> Mark >> >>> >>> David >>> >>> >>> On Wed, May 18, 2011 at 10:39 AM, Mark Heffernan <meh...@google.com> wrote: >>>> On Tue, May 17, 2011 at 11:34 PM, Xinliang David Li <davi...@google.com> >>>> wrote: >>>>> >>>>> To make consistent inline decisions between profile-gen and >>>>> profile-use, probably better to check these two: >>>>> >>>>> flag_profile_arcs and flag_branch_probabilities. -fprofile-use >>>>> enables profile-arcs, and value profiling is enabled only when >>>>> edge/branch profiling is enabled (so no need to be checked). >>>> >>>> I changed the location where these parameters are set to someplace more >>>> appropriate (to where the flags are set when profile gen/use is indicated). >>>> Verified identical binaries are generated. >>>> OK as updated? >>>> >>>> Mark >>>> 2011-05-18 Mark Heffernan <meh...@google.com> >>>> * opts.c (set_profile_parameters): New function. >>>> Index: opts.c >>>> =================================================================== >>>> --- opts.c (revision 173666) >>>> +++ opts.c (working copy) >>>> @@ -1209,6 +1209,25 @@ print_specific_help (unsigned int includ >>>> opts->x_help_columns, opts, lang_mask); >>>> } >>>> >>>> + >>>> +/* Set parameters to more appropriate values when profile information >>>> + is available. */ >>>> +static void >>>> +set_profile_parameters (struct gcc_options *opts, >>>> + struct gcc_options *opts_set) >>>> +{ >>>> + /* With accurate profile information, inlining is much more >>>> + selective and makes better decisions, so increase the >>>> + inlining function size limits. */ >>>> + maybe_set_param_value >>>> + (PARAM_MAX_INLINE_INSNS_SINGLE, 1000, >>>> + opts->x_param_values, opts_set->x_param_values); >>>> + maybe_set_param_value >>>> + (PARAM_MAX_INLINE_INSNS_AUTO, 1000, >>>> + opts->x_param_values, opts_set->x_param_values); >>>> +} >>>> + >>>> + >>>> /* Handle target- and language-independent options. Return zero to >>>> generate an "unknown option" message. Only options that need >>>> extra handling need to be listed here; if you simply want >>>> @@ -1560,6 +1579,7 @@ common_handle_option (struct gcc_options >>>> opts->x_flag_unswitch_loops = value; >>>> if (!opts_set->x_flag_gcse_after_reload) >>>> opts->x_flag_gcse_after_reload = value; >>>> + set_profile_parameters (opts, opts_set); >>>> break; >>>> >>>> case OPT_fprofile_generate_: >>>> @@ -1580,6 +1600,7 @@ common_handle_option (struct gcc_options >>>> is done. */ >>>> if (!opts_set->x_flag_ipa_reference && in_lto_p) >>>> opts->x_flag_ipa_reference = false; >>>> + set_profile_parameters (opts, opts_set); >>>> break; >>>> >>>> case OPT_fshow_column: >>>> >>> >> >