<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[clang][deps] Add module map describing compiled module to file dependencies. (#160226)</title>
<updated>2025-11-20T04:17:43+00:00</updated>
<author>
<name>Volodymyr Sapsai</name>
<email>vsapsai@apple.com</email>
</author>
<published>2025-11-20T04:17:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b39a9db3abc7abfa033a728ef29b5e5d3beb1cb5'/>
<id>b39a9db3abc7abfa033a728ef29b5e5d3beb1cb5</id>
<content type='text'>
When we add the module map describing the compiled module to the command
line, add it to the file dependencies as well.

Discovered while working on reproducers where a command line input was
missing in the captured files as it wasn't considered a dependency.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When we add the module map describing the compiled module to the command
line, add it to the file dependencies as well.

Discovered while working on reproducers where a command line input was
missing in the captured files as it wasn't considered a dependency.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][deps] Track VFS overlay files in file dependencies. (#167824)</title>
<updated>2025-11-13T22:51:16+00:00</updated>
<author>
<name>Volodymyr Sapsai</name>
<email>vsapsai@apple.com</email>
</author>
<published>2025-11-13T22:51:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=513232fb33569b054ec9763ffb512d5253f2f259'/>
<id>513232fb33569b054ec9763ffb512d5253f2f259</id>
<content type='text'>
rdar://164612831</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
rdar://164612831</pre>
</div>
</content>
</entry>
<entry>
<title>[clang] Extract `CompilerInvocation::visitPaths()` (#167420)</title>
<updated>2025-11-12T22:20:53+00:00</updated>
<author>
<name>Jan Svoboda</name>
<email>jan_svoboda@apple.com</email>
</author>
<published>2025-11-12T22:20:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=71763a51466c15de191ac530e5885ed015efd317'/>
<id>71763a51466c15de191ac530e5885ed015efd317</id>
<content type='text'>
This PR extracts visitation of paths stored in `CompilerInvocation` into
a member function. We already have a second copy of this downstream, and
I'm in the need of adding a third one.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This PR extracts visitation of paths stored in `CompilerInvocation` into
a member function. We already have a second copy of this downstream, and
I'm in the need of adding a third one.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][DependencyScanning] Implementation of `CompilerInstanceWithContext` to Improve By-Name Queries (#164345)</title>
<updated>2025-11-07T20:58:56+00:00</updated>
<author>
<name>Qiongsi Wu</name>
<email>qiongsiwu@gmail.com</email>
</author>
<published>2025-11-07T20:58:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=be0aa7b6c72bdb162f1f3fe251e469927118963e'/>
<id>be0aa7b6c72bdb162f1f3fe251e469927118963e</id>
<content type='text'>
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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][DependencyScanning] Reset options generated for named module compilations. (#161486)</title>
<updated>2025-10-06T17:11:52+00:00</updated>
<author>
<name>Naveen Seth Hanig</name>
<email>naveen.hanig@outlook.com</email>
</author>
<published>2025-10-06T17:11:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2f3bb7678182182e47b0ab5e23fa09edaa390414'/>
<id>2f3bb7678182182e47b0ab5e23fa09edaa390414</id>
<content type='text'>
The driver-generated -cc1 command-lines for C++ named module inputs
introduce some command-line options which affect the canonical module
build command (and therefore the context hash).
This resets those options.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The driver-generated -cc1 command-lines for C++ named module inputs
introduce some command-line options which affect the canonical module
build command (and therefore the context hash).
This resets those options.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][ScanDeps] Clear compilation directory if needed (#150129)</title>
<updated>2025-08-01T18:01:34+00:00</updated>
<author>
<name>Steven Wu</name>
<email>stevenwu@apple.com</email>
</author>
<published>2025-08-01T18:01:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=bda9272591c478d6fde6da66d10ad47fe8169360'/>
<id>bda9272591c478d6fde6da66d10ad47fe8169360</id>
<content type='text'>
During explicit module build, clear the compilation directory flags when
CWD optimization is on. Now clang CodeGen will not add compilation
directories to DIFile when the corresponding flags are not passed and
make debug info not dependent on CWD.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
During explicit module build, clear the compilation directory flags when
CWD optimization is on. Now clang CodeGen will not add compilation
directories to DIFile when the corresponding flags are not passed and
make debug info not dependent on CWD.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][scan-deps] Report a scanned TU's visible modules (#147969)</title>
<updated>2025-07-11T16:33:55+00:00</updated>
<author>
<name>Cyndy Ishida</name>
<email>cyndy_ishida@apple.com</email>
</author>
<published>2025-07-11T16:33:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=15c3793cdf947be16a4686d26998143fd6487641'/>
<id>15c3793cdf947be16a4686d26998143fd6487641</id>
<content type='text'>
Clients of the dependency scanning service may need to add dependencies
based on the visibility of importing modules, for example, when
determining whether a Swift overlay dependency should be brought in
based on whether there's a corresponding **visible** clang module for
it.
This patch introduces a new field `VisibleModules` that contains all the
visible top-level modules in a given TU.
Because visibility is determined by which headers or (sub)modules were
imported, and not top-level module dependencies, the scanner now
performs a separate DFS starting from what was directly imported for
this computation.

In my local performance testing, there was no observable performance
impact.

resolves: rdar://151416358

---------

Co-authored-by: Jan Svoboda &lt;jan@svoboda.ai&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Clients of the dependency scanning service may need to add dependencies
based on the visibility of importing modules, for example, when
determining whether a Swift overlay dependency should be brought in
based on whether there's a corresponding **visible** clang module for
it.
This patch introduces a new field `VisibleModules` that contains all the
visible top-level modules in a given TU.
Because visibility is determined by which headers or (sub)modules were
imported, and not top-level module dependencies, the scanner now
performs a separate DFS starting from what was directly imported for
this computation.

In my local performance testing, there was no observable performance
impact.

resolves: rdar://151416358

---------

Co-authored-by: Jan Svoboda &lt;jan@svoboda.ai&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][clang-scan-deps] Add named modules to format 'experimental-full' (#145221)</title>
<updated>2025-06-24T23:21:19+00:00</updated>
<author>
<name>Naveen Seth Hanig</name>
<email>naveen.hanig@outlook.com</email>
</author>
<published>2025-06-24T23:21:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=52fbefb281ea59f061d5ce3725d57ae60640c71f'/>
<id>52fbefb281ea59f061d5ce3725d57ae60640c71f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[Clang][Tooling][NFC] Use move to avoid copies of large objects (#143603)</title>
<updated>2025-06-11T17:24:19+00:00</updated>
<author>
<name>Shafik Yaghmour</name>
<email>shafik.yaghmour@intel.com</email>
</author>
<published>2025-06-11T17:24:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3e24dadee0d7ecc5f95fe0760afb7abdeb9a2dc5'/>
<id>3e24dadee0d7ecc5f95fe0760afb7abdeb9a2dc5</id>
<content type='text'>
Static analysis flagged these cases in which can use std::move and avoid
copies of large objects.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Static analysis flagged these cases in which can use std::move and avoid
copies of large objects.</pre>
</div>
</content>
</entry>
<entry>
<title>[Tooling] Remove unused includes (NFC) (#142257)</title>
<updated>2025-05-31T22:03:56+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-05-31T22:03:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2c855e629c9b56830d41fcc81e511e4361323d3b'/>
<id>2c855e629c9b56830d41fcc81e511e4361323d3b</id>
<content type='text'>
These are identified by misc-include-cleaner.  I've filtered out those
that break builds.  Also, I'm staying away from llvm-config.h,
config.h, and Compiler.h, which likely cause platform- or
compiler-specific build failures.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These are identified by misc-include-cleaner.  I've filtered out those
that break builds.  Also, I'm staying away from llvm-config.h,
config.h, and Compiler.h, which likely cause platform- or
compiler-specific build failures.</pre>
</div>
</content>
</entry>
</feed>
