On Tue, 2019-03-05 at 15:14 +0100, Martin Liška wrote:
> Hi.
> 
> The patch extends option suggestion for both -Werror and
> corresponding
> pragram.
> 
> Patch can bootstrap on x86_64-linux-gnu and survives regression
> tests.
> 
> Ready to be installed after stage1 opens?
> Thanks,
> Martin
> 
> gcc/ChangeLog:
> 
> 2019-03-05  Martin Liska  <mli...@suse.cz>
> 
>       * opts.c (enable_warning_as_error): Provide hints
>       for unknown options.
> 
> gcc/c-family/ChangeLog:
> 
> 2019-03-05  Martin Liska  <mli...@suse.cz>
> 
>       * c-pragma.c (handle_pragma_diagnostic): Provide hints
>       for unknown options.
> 
> gcc/testsuite/ChangeLog:
> 
> 2019-03-05  Martin Liska  <mli...@suse.cz>
> 
>       * gcc.dg/Werror-13.c: Add new tests for it.
>       * gcc.dg/pragma-diag-6.c: Likewise.
> ---
>  gcc/c-family/c-pragma.c              | 13 +++++++++++--
>  gcc/opts.c                           | 17 ++++++++++++++---
>  gcc/testsuite/gcc.dg/Werror-13.c     | 12 +++++++-----
>  gcc/testsuite/gcc.dg/pragma-diag-6.c |  3 +++
>  4 files changed, 35 insertions(+), 10 deletions(-)

> diff --git a/gcc/testsuite/gcc.dg/Werror-13.c 
> b/gcc/testsuite/gcc.dg/Werror-13.c
> index e8aa99261f8..9f221c303ba 100644
> --- a/gcc/testsuite/gcc.dg/Werror-13.c
> +++ b/gcc/testsuite/gcc.dg/Werror-13.c
> @@ -1,8 +1,10 @@
>  /* { dg-do compile } */
> -/* { dg-options "-Werror=error -Werror=p, -Werror=l, -Werror=fatal-errors" } 
> */
> -/* { dg-error "-Wp, is not an option that controls warnings" "" { target 
> *-*-* } 0 } */
> -/* { dg-error "-Wl, is not an option that controls warnings" "" { target 
> *-*-* } 0 } */
> -/* { dg-error "-Werror is not an option that controls warnings" "" { target 
> *-*-* } 0 } */
> -/* { dg-error "-Wfatal-errors is not an option that controls warnings" "" { 
> target *-*-* } 0 } */
> +/* { dg-options "-Werror=error -Werror=p, -Werror=l, -Werror=fatal-errors 
> -Werror=vla2 -Wno-error=misleading-indentation2" } */
> +/* { dg-error ".-Wp,. is not an option that controls warnings" "" { target 
> *-*-* } 0 } */
> +/* { dg-error ".-Wl,. is not an option that controls warnings" "" { target 
> *-*-* } 0 } */
> +/* { dg-error ".-Werror. is not an option that controls warnings" "" { 
> target *-*-* } 0 } */
> +/* { dg-error ".-Wfatal-errors. is not an option that controls warnings" "" 
> { target *-*-* } 0 } */
> +/* { dg-error ".-Werror=vla2.: no option .-Wvla2.; did you mean .-Wvla." "" 
> { target *-*-* } 0 } */
> +/* { dg-error ".-Wno-error=misleading-indentation2.: no option 
> .-Wmisleading-indentation2.; did you mean .-Wmisleading-indentation." "" { 
> target *-*-* } 0 } */

A minor nit here: I don't like the approach of using "." for quotes in
dg- directives, as this will match any character.  The testsuite runs
in LANG=C, so the quotes appear as the "'" character, so it's safe to
just use the "'" character in these directives.  It's also more
precise: we want the test to fail if it isn't a quote.

So e.g. the last line might be better as:

/* { dg-error "'-Wno-error=misleading-indentation2': no option 
'-Wmisleading-indentation2'; did you mean '-Wmisleading-indentation'" "" { 
target *-*-* } 0 } */

which I think is also much more readable.

[But let's not go back and change this in existing testcases; I just
thought it worth mentioning because you fixed the quoting here]

Dave

Reply via email to