aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Parse/ParseDecl.cpp5
-rw-r--r--include/clang/Basic/TokenKinds.def3
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)