[PATCH] D68193: In openFileForRead don't cache erroneous entries if the error relates to them being directories. Add tests.
Kousik Kumar via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Oct 1 11:58:59 PDT 2019
kousikk added a comment.
In D68193#1688838 <https://reviews.llvm.org/D68193#1688838>, @dexonsmith wrote:
> Sorry for bouncing you around, but I just had a look at the other user of `createFileEntry` and I think the right thing to do is to somehow share the code between `DependencyScanningWorkerFilesystem::status` and this. I suggest splitting a function out of `status` (called `getOrCreateFileSystemEntry`?) that returns a `CachedFileSystemEntry` (or an error).
>
> The fix I just asked you to make (to only call `stat` once) could be done on `getOrCreateFileSystemEntry` as a follow-up, using `std::unique_ptr<llvm::vfs::File>` and changing `getFileEntry` to take that instead of a filename.
IIUC,
`DependencyScanningWorkerFilesystem::status()` and `DependencyScanningWorkerFilesystem::openFileForRead()` both inturn call into `CachedFileSystemEntry::createFileEntry()`.
Given that, I made `getOrCreateFileEntry()` a private-member of `DependencyScanningWorkerFilesystem` and made both these functions use it first.
In a subsequent step, I passed in `llvm::vfs::Status` object to `createFileEntry()` instead of `Filename`. I hope this aligns with the code-organization you are looking for. Let me know if this aligns with how you wanted the code to look (happy to re-write if not).
I also ran it against a canonical set of tests I'm maintaining internally and I didn't notice a difference in either performance and didn't get new crashes of the tool, so I think there should NOT be any regressions because of this change.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D68193/new/
https://reviews.llvm.org/D68193
More information about the cfe-commits
mailing list