jarin created this revision.
jarin added a reviewer: labath.
jarin added a project: LLDB.
Herald added subscribers: lldb-commits, arphaman, aprantl.
In the spirit of https://reviews.llvm.org/D70846, we only return non-methods in
Apple/DebugNamesDWARFIndex::GetFunction if eFunctionNameTypeFull is requested.
This speeds up lookup in the presence of large amount of methods of the same
name (a typical examples would be constructors of templates with many
instantiations or overloaded operators).
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D73191
Files:
lldb/source/Plugins/SymbolFile/DWARF/DWARFIndex.cpp
lldb/test/Shell/SymbolFile/DWARF/find-basic-function.cpp
Index: lldb/test/Shell/SymbolFile/DWARF/find-basic-function.cpp
===================================================================
--- lldb/test/Shell/SymbolFile/DWARF/find-basic-function.cpp
+++ lldb/test/Shell/SymbolFile/DWARF/find-basic-function.cpp
@@ -58,14 +58,11 @@
// METHOD-DAG: name = "sbar::foo(int)", mangled = "_ZN4sbar3fooEi"
// METHOD-DAG: name = "ffbar()::sbaz::foo()", mangled =
"_ZZ5ffbarvEN4sbaz3fooEv"
-// FULL-INDEXED: Found 7 functions:
+// FULL-INDEXED: Found 4 functions:
// FULL-INDEXED-DAG: name = "foo()", mangled = "_Z3foov"
// FULL-INDEXED-DAG: name = "foo(int)", mangled = "_Z3fooi"
// FULL-INDEXED-DAG: name = "bar::foo()", mangled = "_ZN3bar3fooEv"
// FULL-INDEXED-DAG: name = "bar::baz::foo()", mangled = "_ZN3bar3baz3fooEv"
-// FULL-INDEXED-DAG: name = "sbar::foo()", mangled = "_ZN4sbar3fooEv"
-// FULL-INDEXED-DAG: name = "sbar::foo(int)", mangled = "_ZN4sbar3fooEi"
-// FULL-INDEXED-DAG: name = "ffbar()::sbaz::foo()", mangled =
"_ZZ5ffbarvEN4sbaz3fooEv"
// FULL: Found 0 functions:
Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFIndex.cpp
===================================================================
--- lldb/source/Plugins/SymbolFile/DWARF/DWARFIndex.cpp
+++ lldb/source/Plugins/SymbolFile/DWARF/DWARFIndex.cpp
@@ -39,8 +39,8 @@
if (!SymbolFileDWARF::DIEInDeclContext(&parent_decl_ctx, die))
return;
- // In case of a full match, we just insert everything we find.
- if (name_type_mask & eFunctionNameTypeFull) {
+ // In case of a full match, we insert all non-methods we find.
+ if (name_type_mask & eFunctionNameTypeFull && !die.IsMethod()) {
dies.push_back(die);
return;
}
Index: lldb/test/Shell/SymbolFile/DWARF/find-basic-function.cpp
===================================================================
--- lldb/test/Shell/SymbolFile/DWARF/find-basic-function.cpp
+++ lldb/test/Shell/SymbolFile/DWARF/find-basic-function.cpp
@@ -58,14 +58,11 @@
// METHOD-DAG: name = "sbar::foo(int)", mangled = "_ZN4sbar3fooEi"
// METHOD-DAG: name = "ffbar()::sbaz::foo()", mangled = "_ZZ5ffbarvEN4sbaz3fooEv"
-// FULL-INDEXED: Found 7 functions:
+// FULL-INDEXED: Found 4 functions:
// FULL-INDEXED-DAG: name = "foo()", mangled = "_Z3foov"
// FULL-INDEXED-DAG: name = "foo(int)", mangled = "_Z3fooi"
// FULL-INDEXED-DAG: name = "bar::foo()", mangled = "_ZN3bar3fooEv"
// FULL-INDEXED-DAG: name = "bar::baz::foo()", mangled = "_ZN3bar3baz3fooEv"
-// FULL-INDEXED-DAG: name = "sbar::foo()", mangled = "_ZN4sbar3fooEv"
-// FULL-INDEXED-DAG: name = "sbar::foo(int)", mangled = "_ZN4sbar3fooEi"
-// FULL-INDEXED-DAG: name = "ffbar()::sbaz::foo()", mangled = "_ZZ5ffbarvEN4sbaz3fooEv"
// FULL: Found 0 functions:
Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFIndex.cpp
===================================================================
--- lldb/source/Plugins/SymbolFile/DWARF/DWARFIndex.cpp
+++ lldb/source/Plugins/SymbolFile/DWARF/DWARFIndex.cpp
@@ -39,8 +39,8 @@
if (!SymbolFileDWARF::DIEInDeclContext(&parent_decl_ctx, die))
return;
- // In case of a full match, we just insert everything we find.
- if (name_type_mask & eFunctionNameTypeFull) {
+ // In case of a full match, we insert all non-methods we find.
+ if (name_type_mask & eFunctionNameTypeFull && !die.IsMethod()) {
dies.push_back(die);
return;
}
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits