aeubanks added inline comments.

================
Comment at: lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp:1551
+    }
+    if (!all_template_names.empty()) {
+      all_template_names.append(">");
----------------
labath wrote:
> When can this be empty? Should we still include the `<>` in those cases?
it was empty when we're working with a non-templated die, so a lot of cases. 
I've added an early exit and changed this to an assert


================
Comment at: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:2500
+    const llvm::StringRef nameRef = name.GetStringRef();
+    auto it = nameRef.find('<');
+    if (it != llvm::StringRef::npos) {
----------------
labath wrote:
> Michael137 wrote:
> > Is there some other way to determine whether the debug-info was generated 
> > from `-gsimple-template-names`? Then we wouldn't have to check the 
> > existence of a `<` in the name in multiple places and wouldn't have to do 
> > this lookup speculatively. With this change, if we fail to find a template 
> > type in the index, we would do the lookup all over again, only to not find 
> > it again. Could that get expensive? Just trying to figure out if we can 
> > avoid doing this `GetTypes` call twice.
> > 
> > There have been [talks](https://github.com/llvm/llvm-project/issues/58362) 
> > about doing a base-name search by default followed by fuzzy matching on 
> > template parameters (though in the context of function names). The 
> > `simple-template-names` came up as a good motivator/facilitator for doing 
> > so. But for that idea to work here we'd have to be able to retrieve from 
> > the index by basename, so perhaps out of the scope of what we're trying to 
> > do here
> > 
> > tagging people involved in that discussion: @dblaikie @aprantl @jingham 
> > @labath
> > 
> > Other than this, generally LGTM
> Negative matches should be fast, and since typically only one of the branches 
> will produce any results, I think this should be fine. Filtering matches in 
> the simplified case would be slower, since you'd have build the full name of 
> all potential candidates (and that could be thousands of instantiations), but 
> I don't know how slow. But that's the price we pay for better filtering 
> (which we don't do right now, but we could start doing afterwards).
Done.

I believe the only difference with `-gsimple-template-names` is that the name 
doesn't contain the template parameters, so I don't think there's any other way 
of determining if the debug info was generated from `-gsimple-template-names`.


================
Comment at: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:2577
 
   ConstString name = pattern.back().name;
 
----------------
labath wrote:
> Do we need to do something similar in this FindTypes overload as well?
I was wondering when this code path is even taken, turns out it's only called 
from lldb-test, and only in two tests:
```
  lldb-shell :: SymbolFile/DWARF/x86/compilercontext.ll
  lldb-shell :: SymbolFile/DWARF/x86/module-ownership.mm
```
so probably doesn't need to be updated?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D134378/new/

https://reviews.llvm.org/D134378

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to