aboutsummaryrefslogtreecommitdiff
path: root/gcc/opts.c
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2015-10-13 10:08:50 +0000
committerTom de Vries <vries@gcc.gnu.org>2015-10-13 10:08:50 +0000
commitd78182cc0ce05104e2f1cd40c97de974f075479f (patch)
tree89563bd3c31401b7aa9c038829d9746e20a87a34 /gcc/opts.c
parent7fd103efccee2a5706df7ffafae9315995edd841 (diff)
downloadgcc-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.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/opts.c b/gcc/opts.c
index 896875b..89b3e79 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -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);
}
}