================ @@ -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