dblaikie added a comment.

Looking pretty good to me FWIW



================
Comment at: lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp:1561
+std::string
+DWARFASTParserClang::GetCPlusPlusQualifiedName(const DWARFDIE &die) {
+  if (!die.IsValid())
----------------
Sorry, when I gave feedback on some pieces of this that were just moved around 
rather than new code written in this review - I don't mind the code moving 
around without changes (and optionally before/after the move making 
improvements, but not necessary).

If possible, might simplify the code review to move the code first/separately 
from this change, if the move isn't too meaningless independent of the rest of 
the changes?


================
Comment at: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:2498-2501
+        llvm::StringRef qualNameTemplateParams =
+            qualName.slice(it, qualName.size());
+        if (templateParams != qualNameTemplateParams)
+          return true;
----------------
aeubanks wrote:
> dblaikie wrote:
> > And this checks the stringified template params match exactly - so there's 
> > opportunity for improvement in the future to compare with more fuzzy 
> > matching (I guess we can't use clang's AST because that'd involve making 
> > two instances of the type somehow which doesn't make a lot of sense) so 
> > that users don't have to spell the template spec exactly the same way clang 
> > does (eg: `x<int, int>` versus `x<int,int>` - or other more complicated 
> > situations with function pointers, parentheses, casts, etc.
> lldb already requires exact name matching when looking up classes
> 
> e.g.
> ```
> $ cat /tmp/a.cc
> template<class T>struct Foo {};
> int main() {
>         Foo<int> a;
>         Foo<long> b;
>         Foo<float> c;
> }
> template<class T>struct Foo {};
> int main() {
>         Foo<int> a;
>         Foo<long> b;
>         Foo<float> c;
> }
> ~/repos/llvm-project/build/cmake$ ./bin/lldb /tmp/a
> (lldb) target create "/tmp/a"
> Current executable set to '/tmp/a' (x86_64).
> (lldb) im loo -t 'Foo< int>'
> (lldb) im loo -t 'Foo<int>'
> 1 match found in /tmp/a:
> id = {0x00000058}, name = "Foo<int>", byte-size = 1, decl = a.cc:1, 
> compiler_type = "template<> struct Foo<int> {
> }"
> ```
Yeah, sorry - I understand it requires exact matching currently (because the 
index has the exact string in it) - my comment was forward-looking/idle thought 
that now that with simplified template names we can/have to lookup by base 
name, we have the option to do fuzzier matching when filtering all the base 
name matches - not suggesting that it's a regression that this currently does 
exact matching.


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