[PATCH] D146328: [clang][deps] Only cache files with specific extension
Michael Spencer via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Mar 17 13:47:37 PDT 2023
Bigcheese accepted this revision.
Bigcheese added a comment.
This revision is now accepted and ready to land.
This doesn't appear to behave as expected for `PP_CacheFailure` or `PP_ScanFile` without `PP_CacheSuccess`. Looks like that will still cache. Should probably just assert that's not the computed policy.
Looks good with those changes.
================
Comment at: clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp:161
-/// Whitelist file extensions that should be minimized, treating no extension as
-/// a source file that should be minimized.
+/// Whitelist file extensions that should be cached/scanned.
///
----------------
ributzka wrote:
> s/Whitelist/Allowlist
I think we can just change this comment to something like:
> Determine caching and scanning behavior based on file extension.
================
Comment at: clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp:168
if (Ext.empty())
- return true; // C++ standard library
- return llvm::StringSwitch<bool>(Ext)
- .CasesLower(".c", ".cc", ".cpp", ".c++", ".cxx", true)
- .CasesLower(".h", ".hh", ".hpp", ".h++", ".hxx", true)
- .CasesLower(".m", ".mm", true)
- .CasesLower(".i", ".ii", ".mi", ".mmi", true)
- .CasesLower(".def", ".inc", true)
- .Default(false);
-}
-
-static bool shouldCacheStatFailures(StringRef Filename) {
- StringRef Ext = llvm::sys::path::extension(Filename);
- if (Ext.empty())
- return false; // This may be the module cache directory.
- // Only cache stat failures on files that are not expected to change during
- // the build.
- StringRef FName = llvm::sys::path::filename(Filename);
- if (FName == "module.modulemap" || FName == "module.map")
- return true;
- return shouldScanForDirectivesBasedOnExtension(Filename);
-}
-
-bool DependencyScanningWorkerFilesystem::shouldScanForDirectives(
- StringRef Filename) {
- return shouldScanForDirectivesBasedOnExtension(Filename);
+ return (PathPolicy)(PP_CacheSuccess | PP_ScanFile);
+ return (PathPolicy)llvm::StringSwitch<int>(Ext)
----------------
If you use `LLVM_MARK_AS_BITMASK_ENUM` I think you can remove these casts.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146328/new/
https://reviews.llvm.org/D146328
More information about the cfe-commits
mailing list