diff options
Diffstat (limited to 'lib/Sema/SemaTemplateInstantiateDecl.cpp')
-rw-r--r-- | lib/Sema/SemaTemplateInstantiateDecl.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp index 0c13027864..c08841abaa 100644 --- a/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -574,7 +574,8 @@ TemplateDeclInstantiator::InitMethodInstantiation(CXXMethodDecl *New, /// /// \param Function the already-instantiated declaration of a /// function. -void Sema::InstantiateFunctionDefinition(FunctionDecl *Function) { +void Sema::InstantiateFunctionDefinition(SourceLocation PointOfInstantiation, + FunctionDecl *Function) { // FIXME: make this work for function template specializations, too. if (Function->isInvalidDecl()) @@ -590,7 +591,9 @@ void Sema::InstantiateFunctionDefinition(FunctionDecl *Function) { if (!Pattern) return; - // FIXME: add to the instantiation stack. + InstantiatingTemplate Inst(*this, PointOfInstantiation, Function); + if (Inst) + return; ActOnStartOfFunctionDef(0, DeclPtrTy::make(Function)); |