[Lldb-commits] [lldb] [lldb/DWARF] Fix type definition search with simple template names (PR #95905)

Michael Buch via lldb-commits lldb-commits at lists.llvm.org
Tue Jun 18 04:36:40 PDT 2024


================
@@ -3073,14 +3073,43 @@ SymbolFileDWARF::FindDefinitionTypeForDWARFDeclContext(const DWARFDIE &die) {
 
     // See comments below about -gsimple-template-names for why we attempt to
     // compute missing template parameter names.
-    ConstString template_params;
-    if (type_system) {
-      DWARFASTParser *dwarf_ast = type_system->GetDWARFParser();
-      if (dwarf_ast)
-        template_params = dwarf_ast->GetDIEClassTemplateParams(die);
+    std::vector<std::string> template_params;
+    DWARFDeclContext die_dwarf_decl_ctx;
+    DWARFASTParser *dwarf_ast = type_system ? type_system->GetDWARFParser() : nullptr;
+    for (DWARFDIE ctx_die = die; ctx_die && !isUnitType(ctx_die.Tag());
+         ctx_die = ctx_die.GetParentDeclContextDIE()) {
+      die_dwarf_decl_ctx.AppendDeclContext(ctx_die.Tag(), ctx_die.GetName());
+      template_params.push_back(
+          (ctx_die.IsStructUnionOrClass() && dwarf_ast)
+              ? dwarf_ast->GetDIEClassTemplateParams(ctx_die)
+              : "");
----------------
Michael137 wrote:

Would the following be more readable?
```suggestion
      if (ctx_die.IsStructUnionOrClass() && dwarf_ast)
        template_params.push_back(dwarf_ast->GetDIEClassTemplateParams(ctx_die));
```

https://github.com/llvm/llvm-project/pull/95905


More information about the lldb-commits mailing list