Add more C2x attributes tests
diff mbox series

Message ID alpine.DEB.2.21.1911181741560.14474@digraph.polyomino.org.uk
State New
Headers show
Series
  • Add more C2x attributes tests
Related show

Commit Message

Joseph Myers Nov. 18, 2019, 5:42 p.m. UTC
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.  Applied to mainline.

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__]].

Patch
diff mbox series

Index: gcc/testsuite/gcc.dg/c11-attr-syntax-1.c
===================================================================
--- gcc/testsuite/gcc.dg/c11-attr-syntax-1.c	(nonexistent)
+++ gcc/testsuite/gcc.dg/c11-attr-syntax-1.c	(working copy)
@@ -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" } */
Index: gcc/testsuite/gcc.dg/c11-attr-syntax-2.c
===================================================================
--- gcc/testsuite/gcc.dg/c11-attr-syntax-2.c	(nonexistent)
+++ gcc/testsuite/gcc.dg/c11-attr-syntax-2.c	(working copy)
@@ -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" } */
Index: gcc/testsuite/gcc.dg/c11-attr-syntax-3.c
===================================================================
--- gcc/testsuite/gcc.dg/c11-attr-syntax-3.c	(nonexistent)
+++ gcc/testsuite/gcc.dg/c11-attr-syntax-3.c	(working copy)
@@ -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);
Index: gcc/testsuite/gcc.dg/c2x-attr-deprecated-1.c
===================================================================
--- gcc/testsuite/gcc.dg/c2x-attr-deprecated-1.c	(revision 278406)
+++ gcc/testsuite/gcc.dg/c2x-attr-deprecated-1.c	(working copy)
@@ -89,3 +89,11 @@ 
 {
   return y.b; /* { dg-warning "deprecated" } */
 }
+
+struct [[deprecated]] s { int x; };
+
+void
+f12 (void)
+{
+  struct s var; /* { dg-warning "deprecated" } */
+}
Index: gcc/testsuite/gcc.dg/c2x-attr-fallthrough-1.c
===================================================================
--- gcc/testsuite/gcc.dg/c2x-attr-fallthrough-1.c	(revision 278406)
+++ gcc/testsuite/gcc.dg/c2x-attr-fallthrough-1.c	(working copy)
@@ -16,6 +16,12 @@ 
     case 3:
       b += 7;
       break;
+    case 4:
+      b = 5;
+      [[__fallthrough__]];
+    case 5:
+      b += 1;
+      break;
     }
   return b;
 }
Index: gcc/testsuite/gcc.dg/c2x-attr-syntax-4.c
===================================================================
--- gcc/testsuite/gcc.dg/c2x-attr-syntax-4.c	(nonexistent)
+++ gcc/testsuite/gcc.dg/c2x-attr-syntax-4.c	(working copy)
@@ -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" } */