From c5a9fcdfeea5e961b8f73417c213fa570c8affb6 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 6 Dec 2021 12:20:28 -0700 Subject: [PATCH] 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. --- gdb/symtab.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/gdb/symtab.c b/gdb/symtab.c index 3f2eb64a7c4..68b6267f878 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -4678,11 +4678,16 @@ global_symbol_searcher::expand_symtabs enum search_domain kind = m_kind; bool found_msymbol = false; + auto do_file_match = [&] (const char *filename, bool basenames) + { + return file_matches (filename, filenames, basenames); + }; + gdb::function_view file_matcher = nullptr; + if (!filenames.empty ()) + file_matcher = do_file_match; + objfile->expand_symtabs_matching - ([&] (const char *filename, bool basenames) - { - return file_matches (filename, filenames, basenames); - }, + (file_matcher, &lookup_name_info::match_any (), [&] (const char *symname) { -- 2.30.2