From 6f0a14f9ab424fcc3d4c97bf155af8fd92e14e93 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 22 Mar 2010 18:10:25 +0000 Subject: [PATCH] revert r99174. It caused PR6677. Will try to debug why tonight. llvm-svn: 99188 --- clang/lib/Sema/SemaDeclCXX.cpp | 2 +- clang/lib/Sema/SemaTemplate.cpp | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 1522d6399a2b..13a7ead76bdf 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -5889,7 +5889,7 @@ static bool needsVtable(CXXMethodDecl *MD, ASTContext &Context) { break; case TSK_ExplicitInstantiationDeclaration: - return false; + return true; //FIXME: This looks wrong. case TSK_ExplicitInstantiationDefinition: // This is method of a explicit instantiation; mark all of the virtual diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 5951549d9d15..434d5563e1b3 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -4388,12 +4388,8 @@ Sema::ActOnExplicitInstantiation(Scope *S, // Instantiate the members of this class template specialization. Def = cast_or_null( Specialization->getDefinition()); - if (Def) { - // Fix a TSK_ExplicitInstantiationDeclaration followed by a - // TSK_ExplicitInstantiationDefinition - Def->setTemplateSpecializationKind(TSK); + if (Def) InstantiateClassTemplateSpecializationMembers(TemplateNameLoc, Def, TSK); - } return DeclPtrTy::make(Specialization); }