On Sun, 17 Jan 2021, Uecker, Martin wrote: > I did not add tests for c11 for warnings because we already > had warnings before and the tests for these exist. (I removed > -Wdiscarded-array-qualifiers from the old tests as this flag > is not needed.) Or should there be additional warnings > with -Wc11-c2x-compat for c11? But warning twice about > the same issue does not seem ideal...
If something is already warned about by default in C11 mode, -Wc11-c2x-compat doesn't need to produce extra warnings. > + int (*x)[3]; > + const int (*p)[3] = x; /* { dg-warning "pointers to arrays with > different qualifiers are > incompatible in ISO C before C2X" } */ "incompatible" doesn't seem the right wording for the diagnostic. The types are incompatible (i.e. not compatible types) regardless of standard version; the issue in this case is the rules for assignment. > diff --git a/gcc/testsuite/gcc.dg/c2x-qual-6.c > b/gcc/testsuite/gcc.dg/c2x-qual-6.c > new file mode 100644 > index 00000000000..dca50ac014f > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/c2x-qual-6.c > @@ -0,0 +1,9 @@ > +/* Test related to qualifiers and pointers to arrays in C2X, PR98397 */ > +/* { dg-do compile } */ > +/* { dg-options "-std=c2x -pedantic-errors -Wc11-c2x-compat" } */ > + > +void f(void) > +{ > + const void* x; > + const int (*p)[3] = x; /* { dg-error "array with qualifier on the > element is not qualified > before C2X" } */ This is showing a bug in the compiler implementation. In C2X mode, this message should be a warning not a pedwarn because the code is not a constraint violation. -Wc11-c2x-compat should produce a warning (independent of -pedantic), but -pedantic-errors should not turn it into an error. -- Joseph S. Myers jos...@codesourcery.com