SymbolFileDWARF: Unconditionally scan through clang modules. NFCish
authorAdrian Prantl <aprantl@apple.com>
Thu, 8 Aug 2019 21:16:01 +0000 (21:16 +0000)
committerAdrian Prantl <aprantl@apple.com>
Thu, 8 Aug 2019 21:16:01 +0000 (21:16 +0000)
When looking up a type by name, also scan through any referenced Clang
modules regardsless of whether a type with this name has been
found. This is NFCish (= a potential performance regression) for Clang
projects, but necessary in mixed Swift and Objective-C projects (and
tested in swift-lldb).

This only affects projects compiled with -gmodules that were not run
through dsymutil.

llvm-svn: 368345

lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp

index 765982e70fa08da43f339d3bfe00fffd6a16cc5d..654ac82c5d465a30c99c9698e40eeb236c023bef 100644 (file)
@@ -2431,8 +2431,12 @@ uint32_t SymbolFileDWARF::FindTypes(
             name.GetCString(), append, max_matches, num_matches);
       }
     }
-    return num_matches;
-  } else {
+  }
+
+  // Next search through the reachable Clang modules. This only applies for
+  // DWARF objects compiled with -gmodules that haven't been processed by
+  // dsymutil.
+  if (num_die_matches < max_matches) {
     UpdateExternalModuleListIfNeeded();
 
     for (const auto &pair : m_external_type_modules) {
@@ -2450,7 +2454,7 @@ uint32_t SymbolFileDWARF::FindTypes(
     }
   }
 
-  return 0;
+  return num_die_matches;
 }
 
 size_t SymbolFileDWARF::FindTypes(const std::vector<CompilerContext> &context,