dblaikie added a comment. In D77598#3035591 <https://reviews.llvm.org/D77598#3035591>, @v.g.vassilev wrote:
> In D77598#3035449 <https://reviews.llvm.org/D77598#3035449>, @dblaikie wrote: > >> Came across this while trying to do "simplified template names" - producing >> template names in DWARF without template parameter lists as part of the >> textual name, then rebuilding that name from the structural representation >> of template parameters in DWARF (DW_TAG_template_*_parameter, etc). The >> roundtripping is implemented to ensure that the simplified names are >> non-lossy - that all the data is still available through the structural >> representation. (some names are harder or not currently possible to rebuild) >> >> The selective use of suffixes, especially contextually (overloading) seems >> like something I'll probably want to avoid entirely for DWARF to keep the >> names consistent across different contexts - but I am also just a bit >> confused about some things I'm seeing with this change. >> >> For instance, it looks like >> https://github.com/llvm/llvm-project/blob/fcdefc8575866a36e80e91024b876937ae6a9965/clang/lib/AST/Decl.cpp#L2900 >> doesn't pass the list of template parameters, so function template names >> always get suffixes on their integer parameters. >> >> Whereas the equivalent calls for printing class template specialization >> names here: >> https://github.com/llvm/llvm-project/blob/fcdefc8575866a36e80e91024b876937ae6a9965/clang/lib/AST/DeclTemplate.cpp#L949-L959 >> - is that just a minor bug/missing functionality? >> >> I'm testing a fix for that: >> >> diff --git clang/lib/AST/Decl.cpp clang/lib/AST/Decl.cpp >> index 60ca8633224b..11cf068d2c4c 100644 >> --- clang/lib/AST/Decl.cpp >> +++ clang/lib/AST/Decl.cpp >> @@ -2897,7 +2897,7 @@ void FunctionDecl::getNameForDiagnostic( >> NamedDecl::getNameForDiagnostic(OS, Policy, Qualified); >> const TemplateArgumentList *TemplateArgs = >> getTemplateSpecializationArgs(); >> if (TemplateArgs) >> - printTemplateArgumentList(OS, TemplateArgs->asArray(), Policy); >> + printTemplateArgumentList(OS, TemplateArgs->asArray(), Policy, >> getPrimaryTemplate()->getTemplateParameters()); >> } >> >> bool FunctionDecl::isVariadic() const { >> >> I've sent out a patch with ^ applied/cleanups applied: D77598 >> <https://reviews.llvm.org/D77598> > > This seems an oversight on our end, thanks! You probably meant to link > https://reviews.llvm.org/D110898 Yep, thanks for the correction! Do you have any interest/bandwidth to look into the one with nested namespaces (the other code I pointed to, in NestedNameSpecifier.cpp, above) case? At a quick glance I wasn't able to quite figure out how to get the template parameters from the TemplateSpecializationType or DependentTemplateSpecializationType to pass in. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77598/new/ https://reviews.llvm.org/D77598 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits