This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Make a warning for -Werror=wrong-language (PR driver/91172).


On 7/16/19 5:16 AM, Martin Liška wrote:
Hi.

I noticed in the PR that -Werror=argument argument is not verified
that the option is supported by a language we compile for.
That's changed in the patch. However, it's not ideal as I need to mark
the -Werror as the problematic option and one can't print a proper
list of valid languages for which the rejected option can be used.

Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

Ready to be installed?
Thanks,
Martin

gcc/ChangeLog:

2019-07-16  Martin Liska  <mliska@suse.cz>

	PR driver/91172
	* opts-common.c (decode_cmdline_option): Decode
	argument of -Werror and check it for a wrong language.
	* opts-global.c (complain_wrong_lang): Remove such case.

gcc/testsuite/ChangeLog:

2019-07-16  Martin Liska  <mliska@suse.cz>

	PR driver/91172
	* gcc.dg/pr91172.c: New test.
---
  gcc/opts-common.c              | 20 +++++++++++++++++++-
  gcc/opts-global.c              |  6 +++++-
  gcc/testsuite/gcc.dg/pr91172.c |  3 +++
  3 files changed, 27 insertions(+), 2 deletions(-)
  create mode 100644 gcc/testsuite/gcc.dg/pr91172.c

Nice catch!

@@ -745,6 +746,23 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
   /* Check if this is a switch for a different front end.  */
   if (!option_ok_for_language (option, lang_mask))
     errors |= CL_ERR_WRONG_LANG;
+  else if (strcmp (option->opt_text, "-Werror=") == 0
+	   && strchr (opt_value, ',') == NULL)
+    {
+      /* Verify that -Werror argument is a valid warning
+	 for a languages.  */

Typo: "for a language" (singular).

+  else
+    /* Happens for -Werror=warning_name.  */
+    warning (0, "command-line error argument %qs is not valid for %s",
+	     text, bad_lang);

It might be better phrased as something like

  "%<-Werror=%> argument %qs is not valid for %s"

The argument is not one of a "command-line error."  It's one
to the -Werror option (which can be specified in other places
besides the command line).

Martin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]