Commit 092508a0 by Joseph Myers Committed by Joseph Myers

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
parent 9d2b80ea
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.
......
/* 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" } */
/* 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" } */
/* 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);
......@@ -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" } */
}
......@@ -16,6 +16,12 @@ f (int a)
case 3:
b += 7;
break;
case 4:
b = 5;
[[__fallthrough__]];
case 5:
b += 1;
break;
}
return b;
}
/* 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" } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment