Fix member function call with null 'this' pointer.

llvm-svn: 300653
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index 9b5ba81..5fe0706 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -2253,6 +2253,7 @@
 
 template<typename DeclT>
 static DeclT *getDefinitionOrSelf(DeclT *D) {
+  assert(D);
   if (auto *Def = D->getDefinition())
     return Def;
   return D;
@@ -3202,9 +3203,12 @@
    
 FunctionDecl *FunctionDecl::getTemplateInstantiationPattern() const {
   // Handle class scope explicit specialization special case.
-  if (getTemplateSpecializationKind() == TSK_ExplicitSpecialization)
-    return getDefinitionOrSelf(getClassScopeSpecializationPattern());
-  
+  if (getTemplateSpecializationKind() == TSK_ExplicitSpecialization) {
+    if (auto *Spec = getClassScopeSpecializationPattern())
+      return getDefinitionOrSelf(Spec);
+    return nullptr;
+  }
+
   // If this is a generic lambda call operator specialization, its 
   // instantiation pattern is always its primary template's pattern
   // even if its primary template was instantiated from another