comparison gcc/testsuite/gcc.dg/c2x-attr-syntax-5.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
comparison
equal deleted inserted replaced
131:84e7813d76e9 145:1830386684a0
1 /* Test C2x attribute syntax. Test unknown standard attributes
2 diagnosed with a pedwarn. */
3 /* { dg-do compile } */
4 /* { dg-options "-std=c2x -pedantic-errors" } */
5
6 [[unknown_attribute]]; /* { dg-error "attribute ignored" } */
7
8 [[unknown_attribute]] extern int a; /* { dg-error "attribute ignored" } */
9 extern int [[unknown_attribute(123)]] a; /* { dg-error "attribute ignored" } */
10 extern int a [[unknown_attribute("")]]; /* { dg-error "attribute ignored" } */
11
12 int f () [[unknown_attribute]]; /* { dg-error "attribute ignored" } */
13 int f (void) [[unknown_attribute(1)]]; /* { dg-error "attribute ignored" } */
14 int g ([[unknown_attribute]] int a); /* { dg-error "attribute ignored" } */
15 int g (int [[unknown_attribute]] a); /* { dg-error "attribute ignored" } */
16 int g (int a [[unknown_attribute]]); /* { dg-error "attribute ignored" } */
17 int g ([[unknown_attribute]] int); /* { dg-error "attribute ignored" } */
18 int g (int [[unknown_attribute]]); /* { dg-error "attribute ignored" } */
19 int g (int) [[unknown_attribute]]; /* { dg-error "attribute ignored" } */
20
21 int *[[unknown_attribute]] p; /* { dg-error "attribute ignored" } */
22 int b[3] [[unknown_attribute]]; /* { dg-error "attribute ignored" } */
23
24 int h (int () [[unknown_attribute]]); /* { dg-error "attribute ignored" } */
25
26 struct [[unknown_attribute]] s; /* { dg-error "attribute ignored" } */
27 union [[unknown_attribute]] u; /* { dg-error "attribute ignored" } */
28
29 struct [[unknown_attribute]] s2 { int a; }; /* { dg-error "attribute ignored" } */
30 union [[unknown_attribute(x)]] u2 { int a; }; /* { dg-error "attribute ignored" } */
31
32 struct s3 { [[unknown_attribute]] int a; }; /* { dg-error "attribute ignored" } */
33 struct s4 { int [[unknown_attribute]] a; }; /* { dg-error "attribute ignored" } */
34 union u3 { [[unknown_attribute]] int a; }; /* { dg-error "attribute ignored" } */
35 union u4 { int [[unknown_attribute]] a; }; /* { dg-error "attribute ignored" } */
36
37 int z = sizeof (int [[unknown_attribute]]); /* { dg-error "attribute ignored" } */
38
39 enum [[unknown_attribute]] { E1 }; /* { dg-error "attribute ignored" } */
40 enum { E2 [[unknown_attribute]] }; /* { dg-error "attribute ignored" } */
41 enum { E3 [[unknown_attribute]] = 4 }; /* { dg-error "attribute ignored" } */
42
43 void
44 func (void) [[unknown_attribute]] { /* { dg-error "attribute ignored" } */
45 [[unknown_attribute]] int var; /* { dg-error "attribute ignored" } */
46 [[unknown_attribute]] { } /* { dg-error "attribute ignored" } */
47 [[unknown_attribute(!)]]; /* { dg-error "attribute ignored" } */
48 [[unknown_attribute]] var = 1; /* { dg-error "attribute ignored" } */
49 [[unknown_attribute]] x: var = 2; /* { dg-error "attribute ignored" } */
50 for ([[unknown_attribute]] int zz = 1; zz < 10; zz++) ; /* { dg-error "attribute ignored" } */
51 }
52
53 /* nodiscard is not yet implemented, but is a standard attribute, so
54 its use is not a constraint violation and should only receive a
55 warning. */
56 [[nodiscard]] int ndfunc (void); /* { dg-warning "attribute directive ignored" } */