Modules: introduce the __module_private__ declaration specifier, which
indicates that a declaration is only visible within the module it is
declared in.

llvm-svn: 139348
diff --git a/clang/lib/Parse/ParseTentative.cpp b/clang/lib/Parse/ParseTentative.cpp
index f0f4c2c..9b2ea90 100644
--- a/clang/lib/Parse/ParseTentative.cpp
+++ b/clang/lib/Parse/ParseTentative.cpp
@@ -553,7 +553,7 @@
           Tok.is(tok::kw___stdcall) ||
           Tok.is(tok::kw___fastcall) ||
           Tok.is(tok::kw___thiscall) ||
-          Tok.is(tok::kw___unaligned))

+          Tok.is(tok::kw___unaligned))
         return TPResult::True(); // attributes indicate declaration
       TPResult TPR = TryParseDeclarator(mayBeAbstract, mayHaveIdentifier);
       if (TPR != TPResult::Ambiguous())
@@ -712,7 +712,7 @@
   case tok::kw___stdcall:
   case tok::kw___fastcall:
   case tok::kw___thiscall:
-  case tok::kw___unaligned:

+  case tok::kw___unaligned:
   case tok::kw___vector:
   case tok::kw___pixel:
     return TPResult::False();
@@ -871,6 +871,9 @@
   case tok::kw_virtual:
   case tok::kw_explicit:
 
+    // Modules
+  case tok::kw___module_private__:
+      
     // type-specifier:
     //   simple-type-specifier
     //   class-specifier
@@ -906,7 +909,7 @@
   case tok::kw___ptr64:
   case tok::kw___ptr32:
   case tok::kw___forceinline:
-  case tok::kw___unaligned:

+  case tok::kw___unaligned:
     return TPResult::True();
 
     // Borland