This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH][GCC][front-end][opt-framework] Update options framework for parameters to properly handle and validate configure time params. [Patch (2/3)]
- From: Jeff Law <law at redhat dot com>
- To: Tamar Christina <tamar dot christina at arm dot com>, gcc-patches at gcc dot gnu dot org
- Cc: nd at arm dot com, joseph at codesourcery dot com
- Date: Wed, 11 Jul 2018 13:24:24 -0600
- Subject: Re: [PATCH][GCC][front-end][opt-framework] Update options framework for parameters to properly handle and validate configure time params. [Patch (2/3)]
- References: <20180711112437.GA16063@arm.com>
On 07/11/2018 05:24 AM, Tamar Christina wrote:
> Hi All,
> This patch builds on a previous patch to pass param options down from configure
> by adding more expansive validation and correctness checks.
> These are set very early on and allow the target to validate or reject the
> values as they see fit.
> To do this compiler_param has been extended to hold a value set at configure
> time, this value is used to be able to distinguish between
> 1) default value
> 2) configure value
> 3) back-end default
> 4) user specific value.
> The priority of the values should be 4 > 2 > 3 > 1. The compiler will now also
> validate the values in params.def after setting them. This means invalid values
> will no longer be accepted.
> This also changes it so that default parameters are validated during
> initialization. This change is needed to ensure parameters set via configure
> or by the target specific common initialization routines still keep the
> parameters within the valid range.
> Bootstrapped Regtested on aarch64-none-linux-gnu, x86_64-pc-linux-gnu and no issues.
> Both targets were tested with stack clash on and off by default.
> Ok for trunk?
> 2018-07-11 Tamar Christina <firstname.lastname@example.org>
> * params.h (struct param_info): Add configure_value.
> * params.c (DEFPARAMCONF): New.
> (DEFPARAM, DEFPARAMENUM5): Set configure_value.
> (validate_param): New.
> (add_params): Use it.
> (set_param_value): Refactor param validation into validate_param.
> (maybe_set_param_value): Don't override value from configure.
> (diagnostic.h): Include.
> * params-enum.h (DEFPARAMCONF): New.
> * params-list.h: Likewise.
> * params-options.h: Likewise.
> * params.def (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE): Use it.
> * diagnostic.h (diagnostic_ready_p): New.
Generally OK, though probably should depend on what we decide WRT
configurability. ie, I'm not convinced we need to be able to set the
default via a configure time option. And if we don't support that this
patch gets somewhat simpler.