sammccall added a comment.

(Sorry, hit send too soon)

I suspect the answer for header modules is that we can study this patch and 
understand what the equivalents of graph nodes/deps/names/scanning look like 
for explicit header modules, and understand that we'll be able to abstractify 
some names and add some levels of indirection and it'll all work out.

For large project support, I suspect a bit more thought is needed.
We'll need some abstraction layer (like CompilationDatabase is to 
compile_commands.json) that exposes enough data to run the algorithms we need, 
without exposing so much that you have to hold the whole graph in memory. It 
could be backed by in-memory depscan results, or a build-system artifact, or a 
live query of the build system.
For "every time we update a file, all the affected files (e.g., we changed a 
header file) will be re-scanned" - we need a way to express this more 
abstractly than "re-scanned", and more narrowly than "all the affected files" - 
at least it needs to be limited to all the files that could themselves affect 
any open file.

(Going to dig into the design now and come back with more thoughts)


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

https://reviews.llvm.org/D153114

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

Reply via email to