[clang] [clang][modulemap] Lazily load module maps by header name (PR #181916)

Jan Svoboda via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 18 14:04:43 PST 2026


================
@@ -1619,15 +1619,116 @@ StringRef HeaderSearch::getIncludeNameForHeader(const FileEntry *File) const {
   return It->second;
 }
 
+void HeaderSearch::buildHeaderCache(DirectoryEntryRef Dir,
+                                    ModuleMapDirectoryState &MMState) {
+  if (!MMState.ModuleMapFile)
+    return;
+  const modulemap::ModuleMapFile *ParsedMM =
+      ModMap.getParsedModuleMap(*MMState.ModuleMapFile);
+  if (!ParsedMM)
+    return;
+  const modulemap::ModuleMapFile *ParsedPrivateMM = nullptr;
+  if (MMState.PrivateModuleMapFile)
+    ParsedPrivateMM = ModMap.getParsedModuleMap(*MMState.PrivateModuleMapFile);
+
+  std::function<void(const modulemap::ModuleMapFile &, DirectoryEntryRef,
+                     StringRef)>
----------------
jansvoboda11 wrote:

Can you please split these lambdas into separate functions? It's fairly difficult to keep track of function scopes here.

https://github.com/llvm/llvm-project/pull/181916


More information about the cfe-commits mailing list