[clang] [clang][modules] Cache failures for explicit modules (PR #215968)
Jan Svoboda via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 12 23:35:08 PDT 2026
https://github.com/jansvoboda11 created https://github.com/llvm/llvm-project/pull/215968
Explicit module files are a (binary) input to the compilation. Just like any other input file they are expected to not change during compilation. There's no reason to disable failure caching in the `FileManager` for them.
>From 2a5c2ff9a202d29466206374da0feb4abd141e3f Mon Sep 17 00:00:00 2001
From: Jan Svoboda <jan_svoboda at apple.com>
Date: Thu, 13 Aug 2026 08:31:52 +0200
Subject: [PATCH] [clang][modules] Cache failures for explicit modules
Explicit module files are a (binary) input to the compilation. Just like any other input file they are expected to not change during compilation. There's no reason to disable failure caching in the `FileManager` for them.
---
clang/lib/Serialization/ModuleManager.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/clang/lib/Serialization/ModuleManager.cpp b/clang/lib/Serialization/ModuleManager.cpp
index 920cf07736407..cbb9de32f2b15 100644
--- a/clang/lib/Serialization/ModuleManager.cpp
+++ b/clang/lib/Serialization/ModuleManager.cpp
@@ -56,7 +56,7 @@ ModuleManager::makeKey(const ModuleFileName &Name) const {
return ModuleFileKey(Buf);
} else {
if (auto ModuleFile = FileMgr.getOptionalFileRef(Name, /*OpenFile=*/true,
- /*CacheFailure=*/false,
+ /*CacheFailure=*/true,
/*IsText=*/false))
return ModuleFileKey(*ModuleFile);
}
@@ -206,7 +206,7 @@ AddModuleResult ModuleManager::addModule(
FileName == StringRef("-")
? FileMgr.getSTDIN()
: FileMgr.getFileRef(FileName, /*OpenFile=*/true,
- /*CacheFailure=*/false,
+ /*CacheFailure=*/true,
/*IsText=*/false);
if (!Entry)
return Entry.takeError();
More information about the cfe-commits
mailing list