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? > > Thanks, > Tamar > > gcc/ > 2018-07-11 Tamar Christina <tamar.christ...@arm.com> > > * 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.