From 94d22b09bbb212773a226726ee03a44edbbe98c7 Mon Sep 17 00:00:00 2001 From: Jan Svoboda Date: Mon, 15 May 2023 14:26:10 -0700 Subject: [PATCH] [clang][deps] Do not cache PCM files On incremental scan, caching an out-of-date PCM on the VFS layer causes each TU and each module to recompile the PCM again. This is huge performance problem. Stop caching ".pcm" files. Reviewed By: Bigcheese Differential Revision: https://reviews.llvm.org/D150615 --- .../lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp index 0ddb5c2..3140485 100644 --- a/clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp +++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp @@ -262,6 +262,9 @@ DependencyScanningWorkerFilesystem::status(const Twine &Path) { SmallString<256> OwnedFilename; StringRef Filename = Path.toStringRef(OwnedFilename); + if (Filename.endswith(".pcm")) + return getUnderlyingFS().status(Path); + llvm::ErrorOr Result = getOrCreateFileSystemEntry(Filename); if (!Result) return Result.getError(); @@ -319,6 +322,9 @@ DependencyScanningWorkerFilesystem::openFileForRead(const Twine &Path) { SmallString<256> OwnedFilename; StringRef Filename = Path.toStringRef(OwnedFilename); + if (Filename.endswith(".pcm")) + return getUnderlyingFS().openFileForRead(Path); + llvm::ErrorOr Result = getOrCreateFileSystemEntry(Filename); if (!Result) return Result.getError(); -- 2.7.4