<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60825>60825</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[C++20] [Modules] Backport 1782e8f9e882
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang:modules
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ChuanqiXu9
</td>
</tr>
</table>
<pre>
1782e8f9e882 allows the BMI for implementation module unit to be loaded conditionally, which solves https://github.com/llvm/llvm-project/issues/57293. Now we are trying to deprecate the form `-fmodule-file=<BMI>` and prefer `-fmodule-file=<module-name>=<BMI>` (See https://github.com/llvm/llvm-project/issues/60824 and https://gitlab.kitware.com/cmake/cmake/-/issues/18355).
If we don't backport this, it will add unnecessary burdens to build systems which want to make clang16 a usable version for C++20 modules.
/cherry-pick 1782e8f9e882
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykkz9vpDoUxT-Naa5mZAzmT0ERZt5IKfKa17z2gi-Dd4zN2iZovv0KMtlNdrVVGiwh-_gc_87FEPTVEjVMtkyeE1zi6HxzGhe03_X_S510Tt2btKwEVUNNVSUAjXFrgDgStC_PMDgPepoNTWQjRu0sTE4thmCxOkJ00BEYh4oU9M4qvW1BY-5MnGAddT9CcOaVAowxzoFlT0xcmLhcdRyX7ti7iYmLMa_vy2H27hv1kYmLDmGhwMRFlqLOjvCvW2ElQE8Q_V3b63a7otlTj5F2x4PzE7CCH4Y3k4dBG2LZmWWn9uWZZf-wggNaBbOngfxftj5-WJxoO_LbcSaq_4i-EKfglch3F39oGOyONx1X9PTQ6ie80Yf18FEprTIpmaiPjJ8Zf3r7Pg_bKylnmSgjdNjfZucjxFGHjYmOsGpjAJWCxVrqKQT0d-gWr8iGneiijYJwD5Gm8IC4ot1pbzagN2ivaQEIS8DOELySD1s1tracmGiZaAV_FCV8crdFGcn7-2HW_Q0-Vi9RTabqrMaEmrQoi4LLsqySsZFCdIVMh7qWFSpeYKGqvCvTIRe14HWW6EZwkXGRljzL66w68kGVVZH3OFBZ846znNOE2hw3Jkfnr8n-hs2GQiYGOzJhHxIh9mwse3qYZ0Jsk-ObnWa3XAPLudEhhl9aUUezz9jP6Eyegcn25aEhz9C-c_iUePGm-VqR5I8AAAD__31OPPg">