On Tue, Nov 5, 2019 at 4:22 PM Martin Liška <mli...@suse.cz> wrote:
>
> On 11/5/19 3:13 PM, Richard Biener wrote:
> > On Thu, Oct 31, 2019 at 2:17 PM Martin Liška <mli...@suse.cz> wrote:
> >>
> >> On 10/31/19 2:16 PM, Martin Liška wrote:
> >>> On 10/31/19 2:01 PM, Martin Liška wrote:
> >>>> Hi.
> >>>>
> >>>> Based on the discussion with Honza and Richard I'm sending a proposal
> >>>> for conversion of param machinery into the existing option machinery.
> >>>> Our motivation for the change is to provide per function param values,
> >>>> similarly what 'Optimization' keyword does for options.
> >>>>
> >>>> Right now, we support the following format:
> >>>> gcc --param=lto-partitions=4 /tmp/main.c -c
> >>>>
> >>>> And so that I decided to name newly the params like:
> >>>>
> >>>> -param=ipa-sra-ptr-growth-factor=
> >>>> Common Joined UInteger Var(param_ipa_sra_ptr_growth_factor) Init(2) 
> >>>> Param Optimization
> >>>> Maximum allowed growth of number and total size of new parameters
> >>>> that ipa-sra replaces a pointer to an aggregate with.
> >>>>
> >>>> And I learnt decoder to parse '--param' 'name=value' as 
> >>>> '--param=name=value'. Doing that
> >>>> the transformation works. Help provides reasonable output as well:
> >>>>
> >>>> $ ./xgcc -B. --param predictable-branch-outcome=5  /tmp/main.c -c -Q 
> >>>> --help=param
> >>>> The --param option recognizes the following as parameters:
> >>>>    --param=ipa-sra-ptr-growth-factor=         2
> >>>>    --param=predictable-branch-outcome=<0,50>  5
> >>>>
> >>>> Thoughts?
> >>>> Thanks,
> >>>> Martin
> >>>>
> >>>> ---
> >>>>   gcc/common.opt        | 18 +++++++++++-------
> >>>>   gcc/ipa-sra.c         |  3 +--
> >>>>   gcc/opt-functions.awk |  3 ++-
> >>>>   gcc/opts-common.c     |  9 +++++++++
> >>>>   gcc/opts.c            | 36 ------------------------------------
> >>>>   gcc/params.def        | 10 ----------
> >>>>   gcc/predict.c         |  4 ++--
> >>>>   7 files changed, 25 insertions(+), 58 deletions(-)
> >>>>
> >>>>
> >>>
> >>> I forgot to add gcc-patches to To.
> >>>
> >>> Martin
> >>>
> >>
> >> + the patch.
> >
> > Nice.
>
> Thanks.
>
> >
> > I wonder if we can auto-generate params.h so that
> > PARAM_VALUE (...) can continue to "work"?  But maybe that's too much
> > and against making them first-class (but "unsupported") options.  At least
> > it would make the final patch _much_ smaller... (one could think of
> > auto-generating an enum and using an array of params for the storage
> > again - but then possibly split for [non-]Optimization - ugh).  If we
> > (auto-)name
> > the variables all-uppercase like PARAM_IPA_SRA_PTR_GROWTH_FACTOR
> > we could have
> >
> > #define PARAM_VALUE (x) x
> >
> > ... (that said, everything that helps making the transition hit GCC 10
> > is appreciated ;))
>
> Well, to be honest I would like to get rid of the current syntax:
> PARAM_VALUE (PARAM_PREDICTABLE_BRANCH_OUTCOME) and replace it with something
> what we have for normal options: param_predictable_branch_outcome.
> It will require a quite big mechanical change in usage, but I can do
> the replacement almost automatically.

OK, the more interesting uses are probably maybe_set_param_value ...

> >
> > For
> >
> > +-param=ipa-sra-ptr-growth-factor=
> > +Common Joined UInteger Var(param_ipa_sra_ptr_growth_factor) Init(2)
> > Param Optimization
> >
> > I wonder if both Var(...) and Param can be "autodetected" (aka
> > actually required)?
>
> Right now, Var is probably not required. Param can be handled by putting all
> the params into a new param.opt file.

Param could be also autodetected from the name of the option (so could Var).
Why is Var not required?

> >
> > At least the core of the patch looks nicely small!  How do the OPT_ enum 
> > values
> > for a --param look like?
>
> Yep, I also like how small it is.
>
>    OPT__param_ipa_sra_ptr_growth_factor_ = 62,/* 
> --param=ipa-sra-ptr-growth-factor= */
>    OPT__param_predictable_branch_outcome_ = 63,/* 
> --param=predictable-branch-outcome= */

OK, looks fine.

So I guess go ahead unless somebody objects over the next weekend?  (in case not
you have another week to do the mechanical change?)  Maybe post a final patch
earlier w/o the mechanical work.

Richard.

> Martin
>
> >
> > Thanks,
> > Richard.
> >
> >> Martin
>

Reply via email to