================
@@ -652,6 +652,141 @@ in the future. The expected roadmap for Reduced BMIs as
of Clang 19.x is:
comes, the term BMI will refer to the Reduced BMI and the Full BMI will only
be meaningful to build systems which elect to support two-phase compilation.
+Experimental No Transitive Change
+---------------------------------
+
+This section is primarily for build system vendors. For end compiler users,
----------------
ilya-biryukov wrote:
That's what I thought is happening, thanks for confirming my intuition.
I think it'd be great to spell this out in the documentation, because I believe
this mode of operation is something that the build system vendors might need to
infer from the whole text right now.
Adding something like the following should do the trick:
```
We encourage build systems to add an experimental mode that
reuses the cached BMI when **direct** dependencies did not change,
even if **transitive** dependencies did change.
```
PS My 2 cents on Bazel: I suspect this actually goes against its design. Bazel
has very strong capabilities to avoid recompilations when inputs don't change,
but it relies on stable hashes for all inputs (including transitive
dependencies).
At the same time I suspect that other build systems (`CMake` + `ccache` /
`sccache`) are more flexible in that regard.
PPS I am not a build system expert, so take that with a grain of salt. I'm also
happy to loop in Bazel folks I work with to confirm or rebut my claims about
Bazel's design, if that's useful.
https://github.com/llvm/llvm-project/pull/96453
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits