forked from OSchip/llvm-project
Simplify a bit.
This follows from computeKeyFunction having: // Template instantiations don't have key functions,see Itanium C++ ABI 5.2.6. // Same behavior as GCC. TemplateSpecializationKind TSK = RD->getTemplateSpecializationKind(); if (TSK == TSK_ImplicitInstantiation || TSK == TSK_ExplicitInstantiationDefinition) return 0; llvm-svn: 189287
This commit is contained in:
parent
4ae7ea6745
commit
ef7fe1f6b2
|
@ -11936,19 +11936,14 @@ bool Sema::DefineUsedVTables() {
|
|||
// vtable even though we're using it.
|
||||
const CXXMethodDecl *KeyFunction = Context.getCurrentKeyFunction(Class);
|
||||
if (KeyFunction && !KeyFunction->hasBody()) {
|
||||
switch (KeyFunction->getTemplateSpecializationKind()) {
|
||||
case TSK_Undeclared:
|
||||
case TSK_ExplicitSpecialization:
|
||||
case TSK_ExplicitInstantiationDeclaration:
|
||||
// The key function is in another translation unit.
|
||||
DefineVTable = false;
|
||||
break;
|
||||
|
||||
case TSK_ExplicitInstantiationDefinition:
|
||||
case TSK_ImplicitInstantiation:
|
||||
// We will be instantiating the key function.
|
||||
break;
|
||||
}
|
||||
// The key function is in another translation unit.
|
||||
DefineVTable = false;
|
||||
TemplateSpecializationKind TSK =
|
||||
KeyFunction->getTemplateSpecializationKind();
|
||||
assert(TSK != TSK_ExplicitInstantiationDefinition &&
|
||||
TSK != TSK_ImplicitInstantiation &&
|
||||
"Instantiations don't have key functions");
|
||||
(void)TSK;
|
||||
} else if (!KeyFunction) {
|
||||
// If we have a class with no key function that is the subject
|
||||
// of an explicit instantiation declaration, suppress the
|
||||
|
|
Loading…
Reference in New Issue