diff options
-rw-r--r-- | Parse/ParseDecl.cpp | 5 | ||||
-rw-r--r-- | include/clang/Basic/TokenKinds.def | 3 |
2 files changed, 8 insertions, 0 deletions
diff --git a/Parse/ParseDecl.cpp b/Parse/ParseDecl.cpp index d9ec4ddcf6..bed3d966a6 100644 --- a/Parse/ParseDecl.cpp +++ b/Parse/ParseDecl.cpp @@ -441,6 +441,10 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS) { Diag(Tok, diag::ext_thread_before, "extern"); isInvalid = DS.SetStorageClassSpec(DeclSpec::SCS_extern, Loc, PrevSpec); break; + case tok::kw___private_extern__: + // FIXME: Implement private extern. + isInvalid = DS.SetStorageClassSpec(DeclSpec::SCS_extern, Loc, PrevSpec); + break; case tok::kw_static: if (DS.isThreadSpecified()) Diag(Tok, diag::ext_thread_before, "static"); @@ -917,6 +921,7 @@ bool Parser::isDeclarationSpecifier() const { // storage-class-specifier case tok::kw_typedef: case tok::kw_extern: + case tok::kw___private_extern__: case tok::kw_static: case tok::kw_auto: case tok::kw_register: diff --git a/include/clang/Basic/TokenKinds.def b/include/clang/Basic/TokenKinds.def index ca9beea886..a3485f4fb8 100644 --- a/include/clang/Basic/TokenKinds.def +++ b/include/clang/Basic/TokenKinds.def @@ -298,6 +298,9 @@ KEYWORD(__label__ , EXTC90|EXTC99|EXTCPP|EXTCPP0x) KEYWORD(__real , EXTC90|EXTC99|EXTCPP|EXTCPP0x) KEYWORD(__thread , EXTC90|EXTC99|EXTCPP|EXTCPP0x) +// Apple Extension. +KEYWORD(__private_extern__ , EXTC90|EXTC99|NOTCPP) + // Alternate spelling for various tokens. There are GCC extensions in all // languages, but should not be disabled in strict conformance mode. ALIAS("__attribute__", __attribute) |