llvm-project
be0aa7b6 - [clang][DependencyScanning] Implementation of `CompilerInstanceWithContext` to Improve By-Name Queries (#164345)

Commit
3 days ago
[clang][DependencyScanning] Implementation of `CompilerInstanceWithContext` to Improve By-Name Queries (#164345) This PR implements `CompilerInstanceWithContext` to improve by-name dependency queries. Cases exist where we query the dependency of different names, with otherwise identical working directory and compile command line inputs. In these cases, we can create one `CompilerInstance`, whose lifetime is the same as the dependency scanning worker, and reuse the same compiler instance to complete the queries. This way we reduce the amount of header search we need to perform per query, since the already completed header search results are cached in the compiler instance. Using a microbenchmark on a prototype of this implementation, we are seeing a scanning performance improvement of about 20%. The microbenchmark scans a Swift file that imports everything importable. When measuring against a set of internal project builds, the geo mean of total build time improvement is around 1.02x to 1.04x depending on whether the module caches are populated or not. Part of work for rdar://136303612.
Author
Parents
Loading