diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 339a084d7afbab7b91509644b4ae6bcf81f2bfb0..9d3efa60b06861a12edc7e331c50c9971853c3c2 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -3651,11 +3651,6 @@ Sema::DeclResult Sema::ActOnExplicitInstantiation(Scope *S, InstantiateFunctionDefinition(D.getIdentifierLoc(), Specialization, false); - // FIXME: setTemplateSpecializationKind doesn't (yet) work for - // non-templated member functions. - if (!Specialization->getPrimaryTemplate()) - break; - Specialization->setTemplateSpecializationKind(TSK); break; } diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index e0ffca9d2d12e9655b858f67eeb90e7971b21bb1..ee6600adc6a8937ed3a72021190ffc2bf028d904 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -996,9 +996,9 @@ Sema::InstantiateClassMembers(SourceLocation PointOfInstantiation, Record->getInstantiatedFromMemberClass(), TemplateArgs, TSK); - else - InstantiateClassMembers(PointOfInstantiation, Record, TemplateArgs, - TSK); + + InstantiateClassMembers(PointOfInstantiation, Record, TemplateArgs, + TSK); } } } diff --git a/clang/test/SemaTemplate/extern-templates.cpp b/clang/test/SemaTemplate/extern-templates.cpp index 7154c7e32f9cf039758608f93a17c885471cfc84..28fda1a11e6bb94ff852b466d70490eab472451f 100644 --- a/clang/test/SemaTemplate/extern-templates.cpp +++ b/clang/test/SemaTemplate/extern-templates.cpp @@ -62,6 +62,5 @@ void g_X1(X1 x1, void *ptr) { extern template void X1::g(const void*); void g_X1_2(X1 x1, const void *ptr) { - // FIXME: This should not instantiate of x1::g -// x1.g(ptr); + x1.g(ptr); }