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 6auto int ao; // expected-error {{illegal storage class on file-scoped variable}} 7auto void af(); // expected-error {{illegal storage class on function}} 8 9register int ro; // expected-error {{illegal storage class on file-scoped variable}} 10register void rf(); // expected-error {{illegal storage class on function}} 11 12struct 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 20void 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