Hi All, This fixes the superfluous assignment that Coverity reported in add_params, and changes the starting index from 0 to num_params - n in order for it to work properly if add_params is called multiple times.
validate_params calls error so it doesn't matter that we don't check the results here. The results is checked in individual parameter updates after front-end initialization. bootstrapped and reg-tested on aarch64-none-linux-gnu and no issues. bootstrapped x86_64-pc-linux-gnu and no issues. Manually modified params.def to contain invalid values and code still works as expected. Manually passed invalid params and still errors out doing target specific validations. Testsuite also has existing validation tests. Ok for trunk? Thanks, Tamar gcc/: 2018-10-02 Tamar Christina <tamar.christ...@arm.com> * params.c (add_params): Fix initialization. --
diff --git a/gcc/params.c b/gcc/params.c index b6a33dfd6bf8c4df43fdac91e30ac6d082f39071..af473968e0b65a99d9ee179356c96bbfdadb46e7 100644 --- a/gcc/params.c +++ b/gcc/params.c @@ -87,12 +87,10 @@ add_params (const param_info params[], size_t n) if (!diagnostic_ready_p ()) diagnostic_initialize (global_dc, 0); - /* Now perform some validation and set the value if it validates. */ - for (size_t i = 0; i < n; i++) - { - if (validate_param (dst_params[i].default_value, dst_params[i], (int)i)) - dst_params[i].default_value = dst_params[i].default_value; - } + /* Now perform some validation and validation failures trigger an error so + initialization will stop. */ + for (size_t i = num_compiler_params - n; i < n; i++) + validate_param (params[i].default_value, params[i], (int)i); } /* Add all parameters and default values that can be set in both the