================
@@ -652,6 +652,134 @@ 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
+---------------------------------
+
+Starting with clang19.x, we introduced an experimental feature: the
non-transitive
+change for modules, aimed at reducing unnecessary recompilations. For example,
----------------
ChuanqiXu9 wrote:
Done. The suggestion looks good. What do you mean for `an example`? There are a
following example. Do you mean a example that makes the BMI change but actually
it can avoid that?
An example may be:
```
// A.cppm
export module A;
export int a();
```
```
// B.cppm
export module B;
import A;
export inline int b() { return a(); }
```
and we add a unrelated function to A:
```
// A.cppm
export module A;
export int a0();
export int a();
```
Now the users may think the change is unrelated to B and the BMI of B should
keep unchanged. But we can't do that since the used DeclID for `a` in module B
become to `<1, 1>` instead of `<1, 0>` since the new declaration changes the
DeclID.
Is this the example you want? I didn't post this since I feel it has too many
implementation details.
https://github.com/llvm/llvm-project/pull/96453
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits