Param to options conversion.
authorMartin Liska <mliska@suse.cz>
Tue, 12 Nov 2019 10:07:37 +0000 (11:07 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Tue, 12 Nov 2019 10:07:37 +0000 (10:07 +0000)
2019-11-12  Martin Liska  <mliska@suse.cz>

* common.opt: Remove --param and --param= options.
* opt-functions.awk: Mark CL_PARAMS for options
that have Param keyword.
* opts-common.c (decode_cmdline_options_to_array):
Replace --param key=value with --param=key=value.
* opts.c (print_filtered_help): Remove special
printing of params.
(print_specific_help): Update title for params.
(common_handle_option): Do not handle OPT__param.
opts.h (SET_OPTION_IF_UNSET): New macro.
* doc/options.texi: Document Param keyword.

From-SVN: r278083

gcc/ChangeLog
gcc/common.opt
gcc/doc/options.texi
gcc/opt-functions.awk
gcc/opts-common.c
gcc/opts.c
gcc/opts.h

index 008e0db21de44513f55996122e087f29224a67e0..a1a3c8b5c5c9d2c9d9452df3ad780235d39eebbb 100644 (file)
@@ -1,3 +1,17 @@
+2019-11-12  Martin Liska  <mliska@suse.cz>
+
+       * common.opt: Remove --param and --param= options.
+       * opt-functions.awk: Mark CL_PARAMS for options
+       that have Param keyword.
+       * opts-common.c (decode_cmdline_options_to_array):
+       Replace --param key=value with --param=key=value.
+       * opts.c (print_filtered_help): Remove special
+       printing of params.
+       (print_specific_help): Update title for params.
+       (common_handle_option): Do not handle OPT__param.
+       opts.h (SET_OPTION_IF_UNSET): New macro.
+       * doc/options.texi: Document Param keyword.
+
 2019-11-12  Maciej W. Rozycki  <macro@codesourcery.com>
            Frederik Harwath  <frederik@codesourcery.com>
            Thomas Schwinge  <thomas@codesourcery.com>
index 12c0083964ec2e192ba739e23cea53e4df85f869..8c6acabb1fcb6643485865e0bd4e5019d68f7f02 100644 (file)
@@ -437,13 +437,6 @@ Common Driver Alias(-target-help)
 fversion
 Common Driver Alias(-version)
 
--param
-Common Separate
---param <param>=<value>        Set parameter <param> to value.  See below for a complete list of parameters.
-
--param=
-Common Joined Alias(-param)
-
 -sysroot
 Driver Separate Alias(-sysroot=)
 
index b59f4d39aef8a416b8dd799f84a9e03f6524ac25..c7c70acd52616ba18cf128198e4ffab44a08f570 100644 (file)
@@ -475,6 +475,9 @@ affect executable code generation may use this flag instead, so that the
 option is not taken into account in ways that might affect executable
 code generation.
 
+@item Param
+This is an option that is a parameter.
+
 @item Undocumented
 The option is deliberately missing documentation and should not
 be included in the @option{--help} output.
index c1da80c648c31bbbef2724388b9e1ec33e0199a7..4f02b74e97c3a5fe1dab7f894cd53ef188293ed8 100644 (file)
@@ -105,7 +105,8 @@ function switch_flags (flags)
          test_flag("Undocumented", flags,  " | CL_UNDOCUMENTED") \
          test_flag("NoDWARFRecord", flags,  " | CL_NO_DWARF_RECORD") \
          test_flag("Warning", flags,  " | CL_WARNING") \
-         test_flag("(Optimization|PerFunction)", flags,  " | CL_OPTIMIZATION")
+         test_flag("(Optimization|PerFunction)", flags,  " | CL_OPTIMIZATION") \
+         test_flag("Param", flags,  " | CL_PARAMS")
        sub( "^0 \\| ", "", result )
        return result
 }
index b4ec1bd25ac3414eac6e3e391283aa92ffe412bc..d55dc93e165a150e5aa7cc62295c46fd022659bf 100644 (file)
@@ -961,6 +961,15 @@ decode_cmdline_options_to_array (unsigned int argc, const char **argv,
          continue;
        }
 
+      /* Interpret "--param" "key=name" as "--param=key=name".  */
+      const char *needle = "--param";
+      if (i + 1 < argc && strcmp (opt, needle) == 0)
+       {
+         const char *replacement
+           = opts_concat (needle, "=", argv[i + 1], NULL);
+         argv[++i] = replacement;
+       }
+
       n = decode_cmdline_option (argv + i, lang_mask,
                                 &opt_array[num_decoded_options]);
       num_decoded_options++;
index f46b468a968e717b216cbb612d38497df563a9c5..394cbfd1c5642fbdb5fadb504bc222b74a96e2d0 100644 (file)
@@ -1278,38 +1278,6 @@ print_filtered_help (unsigned int include_flags,
   bool displayed = false;
   char new_help[256];
 
-  if (include_flags == CL_PARAMS)
-    {
-      for (i = 0; i < LAST_PARAM; i++)
-       {
-         const char *param = compiler_params[i].option;
-
-         help = compiler_params[i].help;
-         if (help == NULL || *help == '\0')
-           {
-             if (exclude_flags & CL_UNDOCUMENTED)
-               continue;
-             help = undocumented_msg;
-           }
-
-         /* Get the translation.  */
-         help = _(help);
-
-         if (!opts->x_quiet_flag)
-           {
-             snprintf (new_help, sizeof (new_help),
-                       _("default %d minimum %d maximum %d"),
-                       compiler_params[i].default_value,
-                       compiler_params[i].min_value,
-                       compiler_params[i].max_value);
-             help = new_help;
-           }
-         wrap_help (help, param, strlen (param), columns);
-       }
-      putchar ('\n');
-      return;
-    }
-
   if (!opts->x_help_printed)
     opts->x_help_printed = XCNEWVAR (char, cl_options_count);
 
@@ -1679,7 +1647,7 @@ print_specific_help (unsigned int include_flags,
          description = _("The following options are language-independent");
          break;
        case CL_PARAMS:
-         description = _("The --param option recognizes the following as parameters");
+         description = _("The following options control parameters");
          break;
        default:
          if (i >= cl_lang_count)
@@ -2241,10 +2209,6 @@ common_handle_option (struct gcc_options *opts,
 
   switch (code)
     {
-    case OPT__param:
-      handle_param (opts, opts_set, loc, arg);
-      break;
-
     case OPT__help:
       {
        unsigned int all_langs_mask = (1U << cl_lang_count) - 1;
index 472232293881beb17d5771f35b416c0628ee192d..0de8e4269db94c26a2a83bbba24f52303ec6ffa9 100644 (file)
@@ -461,4 +461,14 @@ extern bool parse_and_check_align_values (const char *flag,
                                          bool report_error,
                                          location_t loc);
 
+/* Set OPTION in OPTS to VALUE if the option is not set in OPTS_SET.  */
+
+#define SET_OPTION_IF_UNSET(OPTS, OPTS_SET, OPTION, VALUE) \
+  do \
+  { \
+    if (!(OPTS_SET)->x_ ## OPTION) \
+      (OPTS)->x_ ## OPTION = VALUE; \
+  } \
+  while (false)
+
 #endif