1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-c++0x-compat %s
2
3 // The auto or register specifiers can be applied only to names of objects
4 // declared in a block (6.3) or to function parameters (8.4).
5
6 auto int ao; // expected-error {{illegal storage class on file-scoped variable}}
7 auto void af(); // expected-error {{illegal storage class on function}}
8
9 register int ro; // expected-error {{illegal storage class on file-scoped variable}}
10 register void rf(); // expected-error {{illegal storage class on function}}
11
12 struct S {
13 auto int ao; // expected-error {{storage class specified for a member declaration}}
14 auto void af(); // expected-error {{storage class specified for a member declaration}}
15
16 register int ro; // expected-error {{storage class specified for a member declaration}}
17 register void rf(); // expected-error {{storage class specified for a member declaration}}
18 };
19
foo(auto int ap,register int rp)20 void foo(auto int ap, register int rp) {
21 auto int abo;
22 auto void abf(); // expected-error {{illegal storage class on function}}
23
24 register int rbo;
25 register void rbf(); // expected-error {{illegal storage class on function}}
26 }
27