Parse extern templates, pass that information all the way to Sema,
then drop it on the floor.

llvm-svn: 80989
diff --git a/clang/lib/Sema/Sema.h b/clang/lib/Sema/Sema.h
index f1e4968..78e71bc 100644
--- a/clang/lib/Sema/Sema.h
+++ b/clang/lib/Sema/Sema.h
@@ -2454,7 +2454,9 @@
                                                     Declarator &D);
   
   virtual DeclResult
-  ActOnExplicitInstantiation(Scope *S, SourceLocation TemplateLoc,
+  ActOnExplicitInstantiation(Scope *S, 
+                             SourceLocation ExternLoc,
+                             SourceLocation TemplateLoc,
                              unsigned TagSpec, 
                              SourceLocation KWLoc,
                              const CXXScopeSpec &SS,
@@ -2467,7 +2469,9 @@
                              AttributeList *Attr);
 
   virtual DeclResult
-  ActOnExplicitInstantiation(Scope *S, SourceLocation TemplateLoc,
+  ActOnExplicitInstantiation(Scope *S, 
+                             SourceLocation ExternLoc,
+                             SourceLocation TemplateLoc,
                              unsigned TagSpec, 
                              SourceLocation KWLoc,
                              const CXXScopeSpec &SS,
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index 8eaa9fb..76b6d7e 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -2849,8 +2849,11 @@
 }
 
 // Explicit instantiation of a class template specialization
+// FIXME: Implement extern template semantics
 Sema::DeclResult
-Sema::ActOnExplicitInstantiation(Scope *S, SourceLocation TemplateLoc,
+Sema::ActOnExplicitInstantiation(Scope *S, 
+                                 SourceLocation ExternLoc,
+                                 SourceLocation TemplateLoc,
                                  unsigned TagSpec, 
                                  SourceLocation KWLoc,
                                  const CXXScopeSpec &SS,
@@ -3034,8 +3037,11 @@
 }
 
 // Explicit instantiation of a member class of a class template.
+// FIXME: Implement extern template semantics.
 Sema::DeclResult
-Sema::ActOnExplicitInstantiation(Scope *S, SourceLocation TemplateLoc,
+Sema::ActOnExplicitInstantiation(Scope *S, 
+                                 SourceLocation ExternLoc,
+                                 SourceLocation TemplateLoc,
                                  unsigned TagSpec, 
                                  SourceLocation KWLoc,
                                  const CXXScopeSpec &SS,