[clang] [clang][deps] Cache `VFS::getRealPath()` (PR #68645)
Jan Svoboda via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 8 13:37:55 PDT 2024
================
@@ -230,6 +251,26 @@ class DependencyScanningFilesystemLocalCache {
assert(InsertedEntry == &Entry && "entry already present");
return *InsertedEntry;
}
+
+ /// Returns real path associated with the filename or nullptr if none is
+ /// found.
+ const CachedRealPath *findRealPathByFilename(StringRef Filename) const {
+ assert(llvm::sys::path::is_absolute_gnu(Filename));
+ auto It = RealPathCache.find(Filename);
+ return It == RealPathCache.end() ? nullptr : It->getValue();
+ }
+
+ /// Associates the given real path with the filename and returns the given
+ /// entry pointer (for convenience).
+ const CachedRealPath &
+ insertRealPathForFilename(StringRef Filename,
+ const CachedRealPath &RealPath) {
----------------
jansvoboda11 wrote:
I see your point. I used a reference here to be consistent with existing code in this file. I think the original motivation for using references was the "non-null pointer" aspect of it. I tried converting all uses of `const CachedFileSystemEntry &` in the existing code to pointers, but that's impossible to understand. Doing that just for arguments to insert-like functions is a bit better, but I'm not sure it's clear win in readability/understandability.
https://github.com/llvm/llvm-project/pull/68645
More information about the cfe-commits
mailing list