[clang] [Doc] Update documentation for no-transitive-change (PR #96453)
Chuanqi Xu via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 25 19:39:45 PDT 2024
================
@@ -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
More information about the cfe-commits
mailing list