Fix a bug where an explicit instantiation declaration of a class template

specialization would make us think it might have a key function.

llvm-svn: 204686
This commit is contained in:
Richard Smith
2014-03-24 23:54:09 +00:00
parent 6f228bf965
commit 750f511f11
2 changed files with 21 additions and 6 deletions

View File

@@ -1957,10 +1957,11 @@ static const CXXMethodDecl *computeKeyFunction(ASTContext &Context,
if (!RD->isExternallyVisible())
return 0;
// Template instantiations don't have key functions,see Itanium C++ ABI 5.2.6.
// Template instantiations don't have key functions per Itanium C++ ABI 5.2.6.
// Same behavior as GCC.
TemplateSpecializationKind TSK = RD->getTemplateSpecializationKind();
if (TSK == TSK_ImplicitInstantiation ||
TSK == TSK_ExplicitInstantiationDeclaration ||
TSK == TSK_ExplicitInstantiationDefinition)
return 0;