[PATCH] D37474: [PCH] Allow VFS to be used for tests that generate PCH files
Ilya Biryukov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 8 05:17:44 PDT 2017
ilya-biryukov added a comment.
In https://reviews.llvm.org/D37474#863335, @cameron314 wrote:
> Looking at the way remapped buffers are handled, I just remembered that they must exist on the file system (at the very least, in a directory that exists) or the remapping is not taken into account. So that pretty much rules out the other approach, I think.
You are right, thanks for pointing this out. Fiddling with `VFS` seems like an only option.
================
Comment at: lib/Frontend/ASTUnit.cpp:1014
+/// with another virtual file system.
+class PCHOverlayFileSystem : public vfs::FileSystem
+{
----------------
Maybe create a combination of `InMemoryFileSystem` and `OverlayFileSystem` instead of custom filtering implementation?
We really need to read only a single file given that `ASTUnit` never creates directory PCHs.
I bet it would make the code simpler and less error-prone.
================
Comment at: lib/Frontend/ASTUnit.cpp:1090
+ IntrusiveRefCntPtr<vfs::FileSystem> RealFS = vfs::getRealFileSystem();
+ if (OverrideMainBuffer && VFS && RealFS && VFS != RealFS) {
+ // We have a slight inconsistency here -- we're using the VFS to
----------------
Maybe create a PCH overlay only when `!VFS->exists(/*PreamblePath...*/)`?
This seems like a good enough indication that `RealFS` is underneath the `vfs::FileSystem` instance, even if pointer equality does not hold (i.e. in case of overlays over `RealFS`).
================
Comment at: unittests/Frontend/CMakeLists.txt:9
CodeGenActionTest.cpp
+ PchPreambleTest.cpp
)
----------------
Maybe rename to `PCHPreambleTest`?
LLVM code generally capitalizes all letters in abbreviations.
https://reviews.llvm.org/D37474
More information about the cfe-commits
mailing list