/* Test declaration specifiers.  Test checks on storage class
   specifiers and function specifiers in empty declarations.  */
/* Origin: Joseph Myers <jsm@polyomino.org.uk> */
/* { dg-do compile } */
/* { dg-options "" } */

/* The constraints on storage class specifiers and function specifiers
   must be met for empty declarations where they are useless.  Thus
   there may be only one storage class specifier (C90 6.5.1, C99
   6.7.1#2) and "inline" must not be used because the declaration is
   not that of an identifier for a function (C99 6.7.4#1), and
   "register" and "auto" must not be used at file scope (C90 6.7, C99
   6.9#2).  */

static static struct s; /* { dg-error "error: duplicate 'static'" } */
/* { dg-warning "warning: useless storage class specifier in empty declaration" "static static" { target *-*-* } 15 } */

static extern struct t; /* { dg-error "error: multiple storage classes in declaration specifiers" } */
/* { dg-warning "warning: useless storage class specifier in empty declaration" "static extern" { target *-*-* } 18 } */

inline union u; /* { dg-error "error: 'inline' in empty declaration" } */

auto struct v; /* { dg-error "error: 'auto' in file-scope empty declaration" } */

register struct w; /* { dg-error "error: 'register' in file-scope empty declaration" } */

void
f (void)
{
  auto union p; /* { dg-warning "warning: useless storage class specifier in empty declaration" } */
  register struct q; /* { dg-warning "warning: useless storage class specifier in empty declaration" } */
}
