mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 00:59:15 +08:00
Avoid extra work in global_symbol_searcher::expand_symtabs
I noticed that global_symbol_searcher::expand_symtabs always passes a file matcher to expand_symtabs_matching. However, if 'filenames' is empty, then this always returns true. It's slightly more efficient to pass a null file matcher in this case, because that lets the "quick" symbol implementations skip any filename checks. Regression tested on x86-64 Fedora 34.
This commit is contained in:
11
gdb/symtab.c
11
gdb/symtab.c
@ -4678,11 +4678,16 @@ global_symbol_searcher::expand_symtabs
|
|||||||
enum search_domain kind = m_kind;
|
enum search_domain kind = m_kind;
|
||||||
bool found_msymbol = false;
|
bool found_msymbol = false;
|
||||||
|
|
||||||
objfile->expand_symtabs_matching
|
auto do_file_match = [&] (const char *filename, bool basenames)
|
||||||
([&] (const char *filename, bool basenames)
|
|
||||||
{
|
{
|
||||||
return file_matches (filename, filenames, basenames);
|
return file_matches (filename, filenames, basenames);
|
||||||
},
|
};
|
||||||
|
gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher = nullptr;
|
||||||
|
if (!filenames.empty ())
|
||||||
|
file_matcher = do_file_match;
|
||||||
|
|
||||||
|
objfile->expand_symtabs_matching
|
||||||
|
(file_matcher,
|
||||||
&lookup_name_info::match_any (),
|
&lookup_name_info::match_any (),
|
||||||
[&] (const char *symname)
|
[&] (const char *symname)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user