Kale added a comment.

In D124816#3494243 <https://reviews.llvm.org/D124816#3494243>, @dexonsmith 
wrote:

> Two high-level comments:
>
> - Making these functions `virtual` makes it harder to reason about possible 
> implementations, but I don't think that's necessary for what you're doing 
> here. Why not expose `ToolFileManager` as a container of filemanagers which 
> ToolInvocation takes by parameter, then calls `getOrCreateFileManager()` on 
> at time of need passing relevant arguments (e.g., CWD)?
>   - This could also create/manage the relevant VFS instance, to which the 
> FileManager is fundamentally tied. See also below.
> - I don't think this goes far enough. The FileManager keeps state for any 
> accessed file, which can be wrong any time the VFS changes at all, not just 
> if the `CWD` is different. E.g., different `-ivfsoverlay` options are passed, 
> or someone is reading from an `InMemoryFileSystem` vs. from disk.
>   - AFAICT, every call to `FileManager::setVirtualFileSystem()` is 
> fundamentally unsound unless the new FS is equivalent to the old one or the 
> filemanager hasn't been used yet.

Thanks for your careful and useful suggestions. With your explanation, I 
realized that the change of VFS of course should be considered as well. I'll 
revise this patch and tries to cope with it.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D124816/new/

https://reviews.llvm.org/D124816

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to