@@ -441,14 +441,20 @@ ModuleSP ModuleList::GetModuleAtIndexUnlocked(size_t idx) const {
441441void ModuleList::FindFunctions (ConstString name,
442442 FunctionNameType name_type_mask,
443443 const ModuleFunctionSearchOptions &options,
444+ const SymbolContext &sc,
444445 SymbolContextList &sc_list) const {
445446 const size_t old_size = sc_list.GetSize ();
446447
447448 if (name_type_mask & eFunctionNameTypeAuto) {
448449 Module::LookupInfo lookup_info (name, name_type_mask, eLanguageTypeUnknown);
449450
450451 std::lock_guard<std::recursive_mutex> guard (m_modules_mutex);
452+ if (sc.module_sp )
453+ sc.module_sp ->FindFunctions (lookup_info, CompilerDeclContext (), options,
454+ sc_list);
451455 for (const ModuleSP &module_sp : m_modules) {
456+ if (module_sp == sc.module_sp )
457+ continue ;
452458 module_sp->FindFunctions (lookup_info, CompilerDeclContext (), options,
453459 sc_list);
454460 }
@@ -459,7 +465,12 @@ void ModuleList::FindFunctions(ConstString name,
459465 lookup_info.Prune (sc_list, old_size);
460466 } else {
461467 std::lock_guard<std::recursive_mutex> guard (m_modules_mutex);
468+ if (sc.module_sp )
469+ sc.module_sp ->FindFunctions (name, CompilerDeclContext (), name_type_mask,
470+ options, sc_list);
462471 for (const ModuleSP &module_sp : m_modules) {
472+ if (module_sp == sc.module_sp )
473+ continue ;
463474 module_sp->FindFunctions (name, CompilerDeclContext (), name_type_mask,
464475 options, sc_list);
465476 }
@@ -494,10 +505,14 @@ void ModuleList::FindFunctionSymbols(ConstString name,
494505
495506void ModuleList::FindFunctions (const RegularExpression &name,
496507 const ModuleFunctionSearchOptions &options,
508+ const SymbolContext &sc,
497509 SymbolContextList &sc_list) {
498510 std::lock_guard<std::recursive_mutex> guard (m_modules_mutex);
511+ if (sc.module_sp )
512+ sc.module_sp ->FindFunctions (name, options, sc_list);
499513 for (const ModuleSP &module_sp : m_modules)
500- module_sp->FindFunctions (name, options, sc_list);
514+ if (module_sp != sc.module_sp )
515+ module_sp->FindFunctions (name, options, sc_list);
501516}
502517
503518void ModuleList::FindCompileUnits (const FileSpec &path,
@@ -526,10 +541,14 @@ void ModuleList::FindGlobalVariables(const RegularExpression ®ex,
526541
527542void ModuleList::FindSymbolsWithNameAndType (ConstString name,
528543 SymbolType symbol_type,
544+ const SymbolContext &sc,
529545 SymbolContextList &sc_list) const {
530546 std::lock_guard<std::recursive_mutex> guard (m_modules_mutex);
547+ if (sc.module_sp )
548+ sc.module_sp ->FindSymbolsWithNameAndType (name, symbol_type, sc_list);
531549 for (const ModuleSP &module_sp : m_modules)
532- module_sp->FindSymbolsWithNameAndType (name, symbol_type, sc_list);
550+ if (module_sp != sc.module_sp )
551+ module_sp->FindSymbolsWithNameAndType (name, symbol_type, sc_list);
533552}
534553
535554void ModuleList::FindSymbolsMatchingRegExAndType (
0 commit comments