[clang] Make PCH's respect any VFS specified. (PR #106577)
Neil Henning via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 2 07:22:24 PDT 2024
sheredom wrote:
> It looks like it almost works: if I create a module in a virtual path and use `use-external-names: false`, then the module stores the virtual path for its input files.
>
> E.g.
>
> ```
> {
> "version": 0,
> "use-external-names": false,
> "roots": [
> {
> "contents": [
> {
> "external-contents": "/tmp/a/t.h",
> "name": "t.h",
> "type": "file"
> },
> {
> "external-contents": "/tmp/b/prefix.h",
> "name": "prefix.h",
> "type": "file"
> },
> {
> "external-contents": "/tmp/a/module.modulemap",
> "name": "module.modulemap",
> "type": "file"
> }
> ],
> "name": "/root",
> "type": "directory"
> },
> ]
> }
> ```
>
> Compiled with
>
> ```
> clang -x c-header /tmp/b/prefix.h -I/root -ivfsoverlay vfs -fmodules -o prefix.h.pch
> ```
>
> The references to t.h and module.modulemap seem to be stored with `/root` (the virtual path).
>
> However, I can't remap the prefix header itself
>
> ```
> clang -x c-header /root/prefix.h -I/root -ivfsoverlay vfs -fmodules -o prefix.h.pch
> clang: error: no such file or directory: '/root/prefix.h'
> clang: error: no input files
> ```
>
> I guess it's resolving that path outside the VFS. Maybe that's fixable though?
Ok I tried to change my test over like you suggested, and it fails with:
https://github.com/llvm/llvm-project/pull/106577
More information about the cfe-commits
mailing list