Add more C2x attributes tests.

This patch adds more tests of C2x attributes, where I found cases that
were handled correctly by my patches but missing from the original
tests.  Tests are added for -std=c11 -pedantic handling of C2x
attribute syntax and corresponding -Wc11-c2x-compat handling; for
struct [[deprecated]]; and for the [[__fallthrough__]] spelling of
[[fallthrough]] in the case of valid fallthrough attributes.

Tested for x86_64-pc-linux-gnu.

	* gcc.dg/c11-attr-syntax-1.c, gcc.dg/c11-attr-syntax-2.c,
	gcc.dg/c11-attr-syntax-3.c, gcc.dg/c2x-attr-syntax-4.c: New tests.
	* gcc.dg/c2x-attr-deprecated-1.c: Also test struct [[deprecated]].
	* gcc.dg/c2x-attr-fallthrough-1.c: Also test [[__fallthrough__]].

From-SVN: r278418
This commit is contained in:
Joseph Myers 2019-11-18 17:41:40 +00:00 committed by Joseph Myers
parent 9d2b80ea51
commit 092508a079
7 changed files with 50 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2019-11-18 Joseph Myers <joseph@codesourcery.com>
* gcc.dg/c11-attr-syntax-1.c, gcc.dg/c11-attr-syntax-2.c,
gcc.dg/c11-attr-syntax-3.c, gcc.dg/c2x-attr-syntax-4.c: New tests.
* gcc.dg/c2x-attr-deprecated-1.c: Also test struct [[deprecated]].
* gcc.dg/c2x-attr-fallthrough-1.c: Also test [[__fallthrough__]].
2019-11-18 Marek Polacek <polacek@redhat.com>
PR c++/91962 - ICE with reference binding and qualification conversion.

View File

@ -0,0 +1,7 @@
/* Test C2x attribute syntax: rejected in C11. */
/* { dg-do compile } */
/* { dg-options "-std=c11 -pedantic-errors" } */
[[]]; /* { dg-error "attributes before C2X" } */
void f [[]] (void); /* { dg-error "attributes before C2X" } */

View File

@ -0,0 +1,7 @@
/* Test C2x attribute syntax: rejected in C11. */
/* { dg-do compile } */
/* { dg-options "-std=c11 -pedantic" } */
[[]]; /* { dg-warning "attributes before C2X" } */
void f [[]] (void); /* { dg-warning "attributes before C2X" } */

View File

@ -0,0 +1,8 @@
/* Test C2x attribute syntax: rejected in C11, but warning disabled
with -Wno-c11-c2x-compat. */
/* { dg-do compile } */
/* { dg-options "-std=c11 -pedantic -Wno-c11-c2x-compat" } */
[[]];
void f [[]] (void);

View File

@ -89,3 +89,11 @@ f11 (void)
{
return y.b; /* { dg-warning "deprecated" } */
}
struct [[deprecated]] s { int x; };
void
f12 (void)
{
struct s var; /* { dg-warning "deprecated" } */
}

View File

@ -16,6 +16,12 @@ f (int a)
case 3:
b += 7;
break;
case 4:
b = 5;
[[__fallthrough__]];
case 5:
b += 1;
break;
}
return b;
}

View File

@ -0,0 +1,7 @@
/* Test C2x attribute syntax: diagnosed with -Wc11-c2x-compat. */
/* { dg-do compile } */
/* { dg-options "-std=c2x -pedantic-errors -Wc11-c2x-compat" } */
[[]]; /* { dg-warning "attributes before C2X" } */
void f [[]] (void); /* { dg-warning "attributes before C2X" } */