On Mon, Nov 20, 2023 at 10:56:03AM +0100, Florian Weimer wrote:
> The dg-error directives for gcc.dg/permerror-system.c can be generated
> using (for the most part at least):
> 
> perl -ne 'print if s,.*(/\* \{ dg-error .*) } \*/$,$1 "" { target *-*-* } $. 
> } */,' \
>   < gcc/testsuite/gcc.dg/permerror-default.c
> 
> gcc/testsuite/
> 
>       * gcc.dg/permerror-default.c: New test.
>       * gcc.dg/permerror-fpermissive.c: Likewise.
>       * gcc.dg/permerror-fpermissive-nowarning.c: Likewise.
>       * gcc.dg/permerror-gnu89-nopermissive.c: Likewise.
>       No permerrors yet, so this matches gcc.dg/permerror-gnu89.c
>       for now.
>       * gcc.dg/permerror-gnu89-pedantic.c: New test.
>       * gcc.dg/permerror-gnu89.c: Likewise.
>       * gcc.dg/permerror-noerror.c: Likewise.
>       * gcc.dg/permerror-nowarning.c: Likewise.
>       * gcc.dg/permerror-pedantic.c: Likewise.
>       * gcc.dg/permerror-system.c: Likewise.
> ---
>  gcc/testsuite/gcc.dg/permerror-default.c      | 85 +++++++++++++++++++
>  .../gcc.dg/permerror-fpermissive-nowarning.c  | 11 +++
>  gcc/testsuite/gcc.dg/permerror-fpermissive.c  | 85 +++++++++++++++++++
>  .../gcc.dg/permerror-gnu89-nopermissive.c     | 85 +++++++++++++++++++
>  .../gcc.dg/permerror-gnu89-pedantic.c         | 85 +++++++++++++++++++
>  gcc/testsuite/gcc.dg/permerror-gnu89.c        | 85 +++++++++++++++++++
>  gcc/testsuite/gcc.dg/permerror-noerror.c      | 85 +++++++++++++++++++
>  gcc/testsuite/gcc.dg/permerror-nowarning.c    | 10 +++
>  gcc/testsuite/gcc.dg/permerror-pedantic.c     | 85 +++++++++++++++++++
>  gcc/testsuite/gcc.dg/permerror-system.c       |  9 ++
>  10 files changed, 625 insertions(+)
>  create mode 100644 gcc/testsuite/gcc.dg/permerror-default.c
>  create mode 100644 gcc/testsuite/gcc.dg/permerror-fpermissive-nowarning.c
>  create mode 100644 gcc/testsuite/gcc.dg/permerror-fpermissive.c
>  create mode 100644 gcc/testsuite/gcc.dg/permerror-gnu89-nopermissive.c
>  create mode 100644 gcc/testsuite/gcc.dg/permerror-gnu89-pedantic.c
>  create mode 100644 gcc/testsuite/gcc.dg/permerror-gnu89.c
>  create mode 100644 gcc/testsuite/gcc.dg/permerror-noerror.c
>  create mode 100644 gcc/testsuite/gcc.dg/permerror-nowarning.c
>  create mode 100644 gcc/testsuite/gcc.dg/permerror-pedantic.c
>  create mode 100644 gcc/testsuite/gcc.dg/permerror-system.c
> 
> diff --git a/gcc/testsuite/gcc.dg/permerror-default.c 
> b/gcc/testsuite/gcc.dg/permerror-default.c
> new file mode 100644
> index 00000000000..ea0be1dc89f
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/permerror-default.c
> @@ -0,0 +1,85 @@
> +/* { dg-options "" } */
> +
> +/* Overview test for C permerrors.  This test should be kept in sync with the
> +   other permerror-* tests.  If new permerrors are added, test cases should 
> be
> +   added to this and the other files.  */
> +
> +void
> +implicit_function_declaration (void)
> +{
> +  f1 (); /* { dg-warning "'f1' \\\[-Wimplicit-function-declaration\\\]" } */
> +}
> +
> +extern implicit_int_1; /* { dg-warning "'implicit_int_1' 
> \\\[-Wimplicit-int\\\]" } */

Oy, these \ tend to get unwieldy.  You could probably just say
{ dg-warning {-Wimplicit-int} }

> +    return incompatible_pointer_types; /* { dg-error "returning 'int \\\* 
> \\\(\\\*\\\)\\\(int\\\)' from a function with incompatible return type 'int 
> \\\*' \\\[-Wincompatible-pointer-types\\\]" } */

And here maybe
{ dg-error {returning 'int \* \(\*\)\(int\)' from a function with incompatible 
return type 'int \*' \[-Wincompatible-pointer-types\]} }
could work the same.  But you don't have to go and change it; I don't
want to make more work for you.

> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/permerror-system.c
> @@ -0,0 +1,9 @@
> +/* { dg-options "-isystem ${srcdir}" } */
> +
> +/* Test that permerrors appear in system headers.  */
> +
> +/* The dg-* directives in the header file are ignored.  No warnings are
> +   expected.  */
> +#include <gcc.dg/permerror-default.c>

Why not just #include "permerror-default.c"?

I think this patch is OK.

Marek

Reply via email to