16c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne// RUN: %clang_cc1 -fsyntax-only -verify -Wno-c++0x-compat %s
26c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne
36c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne// The auto or register specifiers can be applied only to names of objects
46c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne// declared in a block (6.3) or to function parameters (8.4).
56c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne
66c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourneauto int ao; // expected-error {{illegal storage class on file-scoped variable}}
76c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourneauto void af(); // expected-error {{illegal storage class on function}}
86c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne
96c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourneregister int ro; // expected-error {{illegal storage class on file-scoped variable}}
106c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourneregister void rf(); // expected-error {{illegal storage class on function}}
116c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne
126c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbournestruct S {
136c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne  auto int ao; // expected-error {{storage class specified for a member declaration}}
146c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne  auto void af(); // expected-error {{storage class specified for a member declaration}}
156c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne
166c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne  register int ro; // expected-error {{storage class specified for a member declaration}}
176c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne  register void rf(); // expected-error {{storage class specified for a member declaration}}
186c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne};
196c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne
206c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbournevoid foo(auto int ap, register int rp) {
216c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne  auto int abo;
226c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne  auto void abf(); // expected-error {{illegal storage class on function}}
236c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne
246c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne  register int rbo;
256c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne  register void rbf(); // expected-error {{illegal storage class on function}}
266c4e3d30399c1e11228e845e568ea8395f549653Peter Collingbourne}
27