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: >>> >> >