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