================
@@ -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
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to