1 /* Test declaration specifiers. Test diagnosis of storage class
2 specifiers not at start. */
3 /* Origin: Joseph Myers <jsm@polyomino.org.uk> */
4 /* { dg-do compile } */
5 /* { dg-options "-Wold-style-declaration" } */
6
7 static int x0;
8 int static x1; /* { dg-warning "not at beginning" } */
9
10 extern int x2;
11 int extern x3; /* { dg-warning "not at beginning" } */
12
13 typedef int x4;
14 int typedef x5; /* { dg-warning "not at beginning" } */
15
16 void g (int);
17
18 void
f(void)19 f (void)
20 {
21 auto int x6 = 0;
22 int auto x7 = 0; /* { dg-warning "not at beginning" } */
23 register int x8 = 0;
24 int register x9 = 0; /* { dg-warning "not at beginning" } */
25 g (x6 + x7 + x8 + x9);
26 }
27
28 const static int x10; /* { dg-warning "not at beginning" } */
29
30 /* Attributes are OK before storage class specifiers, since some
31 attributes are like such specifiers themselves. */
32
33 __attribute__((format(printf, 1, 2))) static void h (const char *, ...);
34 __attribute__((format(printf, 1, 2))) void static i (const char *, ...); /* { dg-warning "not at beginning" } */
35