diff options
author | Mark Mitchell <mark@codesourcery.com> | 2001-02-14 16:24:45 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2001-02-14 16:24:45 +0000 |
commit | c6d9a88cbc231b27539ebf4be3f0843cbf59841c (patch) | |
tree | 358938d277595e7cf94e5146dc0522239e45faf5 /gcc/toplev.c | |
parent | 4806765ec47c11611b78a58908db872b1600e45f (diff) | |
download | gcc-c6d9a88cbc231b27539ebf4be3f0843cbf59841c.zip gcc-c6d9a88cbc231b27539ebf4be3f0843cbf59841c.tar.gz gcc-c6d9a88cbc231b27539ebf4be3f0843cbf59841c.tar.bz2 |
Makefile.in (toplev.o): Depend on params.h.
* Makefile.in (toplev.o): Depend on params.h.
(intergate.o): Likewise.
(params.o): New target.
* flags.h (inline_max_insns): Remove.
* integrate.c: Include params.h.
Use MAX_INLINE_INSNS instead of inline_max_insns.
* params.c: New file.
* params.h: Likewise.
* params.def: Likewise.
* toplev.c: Include params.h.
(lang_independent_params): New variable.
(decode_f_option): Use the param machinery instead of setting
max_inline_insns.
(independent_decode_option): Handle "--param name=value".
(main): Register language-independent parameters.
From-SVN: r39683
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r-- | gcc/toplev.c | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c index 7c818bd..66c91d4 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -63,6 +63,7 @@ Boston, MA 02111-1307, USA. */ #include "timevar.h" #include "diagnostic.h" #include "ssa.h" +#include "params.h" #ifndef ACCUMULATE_OUTGOING_ARGS #define ACCUMULATE_OUTGOING_ARGS 0 @@ -958,6 +959,14 @@ int flag_leading_underscore = -1; /* The user symbol prefix after having resolved same. */ const char *user_label_prefix; +static const param_info lang_independent_params[] = { +#define DEFPARAM(ENUM, OPTION, HELP, DEFAULT) \ + { OPTION, DEFAULT }, +#include "params.def" +#undef DEFPARAM + { NULL, 0 } +}; + /* A default for same. */ #ifndef USER_LABEL_PREFIX #define USER_LABEL_PREFIX "" @@ -4034,8 +4043,12 @@ decode_f_option (arg) if ((option_value = skip_leading_substring (arg, "inline-limit-")) || (option_value = skip_leading_substring (arg, "inline-limit="))) - inline_max_insns = - read_integral_parameter (option_value, arg - 2, inline_max_insns); + { + int val = + read_integral_parameter (option_value, arg - 2, + MAX_INLINE_INSNS); + set_param_value ("max-inline-insns", val); + } #ifdef INSN_SCHEDULING else if ((option_value = skip_leading_substring (arg, "sched-verbose="))) fix_sched_param ("verbose", option_value); @@ -4321,6 +4334,40 @@ independent_decode_option (argc, argv) exit (0); } + /* Handle '--param <name>=<value>'. */ + if (strcmp (arg, "-param") == 0) + { + char *equal; + + if (argc == 1) + { + error ("-param option missing argument"); + return 1; + } + + /* Get the '<name>=<value' parameter. */ + arg = argv[1]; + /* Look for the `='. */ + equal = strchr (arg, '='); + if (!equal) + error ("invalid --param option: %s", arg); + else + { + int val; + + /* Zero out the `=' sign so that we get two separate strings. */ + *equal = '\0'; + /* Figure out what value is specified. */ + val = read_integral_parameter (equal + 1, NULL, INVALID_PARAM_VAL); + if (val != INVALID_PARAM_VAL) + set_param_value (arg, val); + else + error ("invalid parameter value `%s'", equal + 1); + } + + return 2; + } + if (*arg == 'Y') arg++; @@ -4562,6 +4609,9 @@ main (argc, argv) /* Initialize the diagnostics reporting machinery. */ initialize_diagnostics (); + /* Register the language-independent parameters. */ + add_params (lang_independent_params, LAST_PARAM); + /* Perform language-specific options intialization. */ if (lang_hooks.init_options) (*lang_hooks.init_options) (); |