https://github.com/jcsxky updated https://github.com/llvm/llvm-project/pull/78400
>From 08382e9f909bace4dbaf1f0c5d62d4e17978e3aa Mon Sep 17 00:00:00 2001 From: huqizhi <huqi...@feysh.com> Date: Wed, 17 Jan 2024 14:16:34 +0800 Subject: [PATCH] fix --- clang/lib/Sema/SemaTemplateInstantiate.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index fc80515b45e35b..ab3ac2d7dc0806 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -201,8 +201,16 @@ Response HandleFunction(const FunctionDecl *Function, // If this function was instantiated from a specialized member that is // a function template, we're done. assert(Function->getPrimaryTemplate() && "No function template?"); - if (Function->getPrimaryTemplate()->isMemberSpecialization()) + if (Function->getPrimaryTemplate()->isMemberSpecialization()) { + if (Function->isOutOfLine()) { + FunctionDecl *PatternFD = + Function->getTemplateInstantiationPattern(/*ForDefinition*/ false); + unsigned Depth = PatternFD->getTemplateDepth(); + if (Depth > 0) + Result.addOuterRetainedLevels(Depth - 1); + } return Response::Done(); + } // If this function is a generic lambda specialization, we are done. if (!ForConstraintInstantiation && _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits