r300653 - Fix member function call with null 'this' pointer.
Richard Smith via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 18 19:19:21 PDT 2017
Author: rsmith
Date: Tue Apr 18 21:19:21 2017
New Revision: 300653
URL: http://llvm.org/viewvc/llvm-project?rev=300653&view=rev
Log:
Fix member function call with null 'this' pointer.
Modified:
cfe/trunk/lib/AST/Decl.cpp
Modified: cfe/trunk/lib/AST/Decl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Decl.cpp?rev=300653&r1=300652&r2=300653&view=diff
==============================================================================
--- cfe/trunk/lib/AST/Decl.cpp (original)
+++ cfe/trunk/lib/AST/Decl.cpp Tue Apr 18 21:19:21 2017
@@ -2253,6 +2253,7 @@ bool VarDecl::checkInitIsICE() const {
template<typename DeclT>
static DeclT *getDefinitionOrSelf(DeclT *D) {
+ assert(D);
if (auto *Def = D->getDefinition())
return Def;
return D;
@@ -3202,9 +3203,12 @@ bool FunctionDecl::isTemplateInstantiati
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
More information about the cfe-commits
mailing list