diff options
author | Tom de Vries <tom@codesourcery.com> | 2015-10-13 10:08:50 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2015-10-13 10:08:50 +0000 |
commit | d78182cc0ce05104e2f1cd40c97de974f075479f (patch) | |
tree | 89563bd3c31401b7aa9c038829d9746e20a87a34 /gcc/opts.c | |
parent | 7fd103efccee2a5706df7ffafae9315995edd841 (diff) | |
download | gcc-d78182cc0ce05104e2f1cd40c97de974f075479f.zip gcc-d78182cc0ce05104e2f1cd40c97de974f075479f.tar.gz gcc-d78182cc0ce05104e2f1cd40c97de974f075479f.tar.bz2 |
Support DEFPARAMENUM in params.def
2015-10-13 Tom de Vries <tom@codesourcery.com>
* Makefile.in (PARAMS_H, PLUGIN_HEADERS): Add params-enum.h.
* params-enum.h: New file.
* opts.c (handle_param): Handle case that param arg is a string.
* params-list.h: Handle DEFPARAMENUM5 in params.def.
* params.c (find_param): New function, factored out of ...
(set_param_value): ... here.
(param_string_value_p): New function.
* params.h (struct param_info): Add value_names field.
(find_param, param_string_value_p): Declare.
From-SVN: r228755
Diffstat (limited to 'gcc/opts.c')
-rw-r--r-- | gcc/opts.c | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -2128,14 +2128,21 @@ handle_param (struct gcc_options *opts, struct gcc_options *opts_set, arg); else { - value = integral_argument (equal + 1); - if (value == -1) - error_at (loc, "invalid --param value %qs", equal + 1); + *equal = '\0'; + + enum compiler_param index; + if (!find_param (arg, &index)) + error_at (loc, "invalid --param name %qs", arg); else { - *equal = '\0'; - set_param_value (arg, value, - opts->x_param_values, opts_set->x_param_values); + if (!param_string_value_p (index, equal + 1, &value)) + value = integral_argument (equal + 1); + + if (value == -1) + error_at (loc, "invalid --param value %qs", equal + 1); + else + set_param_value (arg, value, + opts->x_param_values, opts_set->x_param_values); } } |