diff --git a/clang/lib/Serialization/ModuleManager.cpp b/clang/lib/Serialization/ModuleManager.cpp --- a/clang/lib/Serialization/ModuleManager.cpp +++ b/clang/lib/Serialization/ModuleManager.cpp @@ -470,6 +470,12 @@ Optional FileOrErr = expectedToOptional(FileMgr.getFileRef(FileName, /*OpenFile=*/true, /*CacheFailure=*/false)); + if (FileOrErr) { + // On Linux ext4 FileManager's inode caching system does not + // provide us correct behaviour for ModuleCache directories. + // inode can be reused after PCM delete resulting in cache misleading. + FileOrErr = FileMgr.getBypassFile(*FileOrErr); + } if (!FileOrErr) return false;