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

Reply via email to