diff --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp index 4d738e4bea41a..805409046cf54 100644 --- a/clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp +++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp @@ -241,6 +241,13 @@ DependencyScanningWorkerFilesystem::computeAndStoreResult( llvm::ErrorOr Stat = getUnderlyingFS().status(OriginalFilename); if (!Stat) { + // rdar://148027982 + // Negative caching directories can cause build failures. + // FIXME: we should remove the check below once we know + // the build failures' root causes. + if (llvm::sys::path::extension(OriginalFilename).empty()) + return Stat.getError(); + const auto &Entry = getOrEmplaceSharedEntryForFilename(FilenameForLookup, Stat.getError()); return insertLocalEntryForFilename(FilenameForLookup, Entry);