================ @@ -4698,7 +4698,22 @@ void Sema::InstantiateExceptionSpec(SourceLocation PointOfInstantiation, // Enter the scope of this instantiation. We don't use // PushDeclContext because we don't have a scope. Sema::ContextRAII savedContext(*this, Decl); + + FunctionDecl *Source = Proto->getExtProtoInfo().ExceptionSpec.SourceTemplate; + FunctionTemplateDecl *SourceTemplate = Source->getDescribedFunctionTemplate(); + llvm::SmallDenseMap<clang::Decl *, clang::Decl *> InstTemplateParams; + if (CurrentInstantiationScope && SourceTemplate) + if (TemplateParameterList *TPL = SourceTemplate->getTemplateParameters()) + for (NamedDecl *TemplateParam : *TPL) + if (auto *Found = + CurrentInstantiationScope->findInstantiationOf(TemplateParam)) + if (auto *InstTemplateParam = Found->dyn_cast<clang::Decl *>()) + InstTemplateParams[TemplateParam] = InstTemplateParam; + ---------------- sdkrystian wrote:
Yeah, we should wait until I reland #106585 and then we can fix this. What we can then do is normalize the exception specification the same way we normalize constraints prior to comparing them. https://github.com/llvm/llvm-project/pull/102267 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits