<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJylVE1v2zAM_TX2hZjhyEmaHHxoU3ToYcCwFuiuskXbWmXJ00ey_PtRSuI0Q28DBFm06MfHR9KNEcf6xYwIDkeuvWwdmA52GXugxUoYjQgKHXCLIMdJ4YjaowCp4f7l9QdygTZjT3R-s9KjLeDZg0UXlHfgB-5pQ2hw4HtpLBxMUIJMELLr0BIWyC65BIcWWjNOUiFk7L5op2kkN4utV0cwn1x6k85TO0IXLzppnQeuRQTUN_6zz_kbk6xEdqbkgp2sdFL3RVY-ZuX9aX8mNKnfIyZpEHVg4IwKXhrtsurstSjggeuUySkuj_dRy5lujOiuBC6pFfBKHwnLDw1v3690tDncaidwQsrNnKKkbFzoOvmHQgcfK9Lx1mdsB89UgRHHhhTd8z4g6TeXog02yT7DDtydoTGBfwAGrixV-HjWg5FelxZIWNeeAd5zIhAzjjrBpHiLroA3hFH2gweNhE65D1Qewpf-3EHUOy-EQo-dEfgVNcUgbkriPnnNcnDKKYpKrxvZQ0tAPd4U6jtaZzRX6njSYLJILXYWK3bGpWpFLupKbKstz3nwg7H1bghc_5Y_wzYPVtWD91MqLXui1Us_hKagspKh1P7y-DJZ8wuj4k_SuYCODqtqU23yoV4t17jdlOyupR15I5ZrtrrbsNWyW_LlpswVpyRdna1ozlh7GTc6Z6vH_P8ZyJqVjNZiVVasKhdFucZ1S_1RLTYVsRHZsiTZpSoiTmFsn9s6QTahd3SppPPuesmdkz3VMBEmhl56lYz5T0Fvgexvp_9FtB7nEZ97rUF_wA-jeR2MTyed6k8t88-A5ynVOuX5F4qBlw4>53838</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [C++20] [Modules] Different behavior between compile .cppm file directly or compile it to .pcm file first
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            c++20
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ChuanqiXu9
      </td>
    </tr>
</table>

<pre>
    Some semantics of C++20 modules are implemented in ASTReader/ASTWriter. It results that the behavior would be different if the user compile *.cppm directly or compile *.cppm to *.pcm file first and then compile *.pcm file to *.o file. It would be surprising.

I think there are 2 solutions:
1. Ban the compilation of *.cppm files to *.o directly. The drawback would be now the behavior depend on the file suffix. But in fact, I remember vaguely that the current behavior has depended on file suffix already.
2. Implement the semantics  again on other places. We might need to handle it in AST/Sema/CodeGen. I believe it would be a relative big change.

Personally, I prefer the first solution.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxtUltvmzAU_jXwcjRETGiTBx7aVJn6MGlaK22vBh_Aq7GZL8ny73fsJKSdKlmA8fF3zndpjTg1L2ZCcDhx7WXnwPSwy9gjLVbCZERQ6IBbBDnNCifUHgVIDQ8vrz-QC7QZ29P3Tys92gKePVh0QXkHfuSeHggtjvwgjYWjCUrQFoTse7SEBbJPJcGhhc5Ms1QIGXsounmeqMxi59UJzCeH3qTvuZugjwe9tM4D1yIC6g_1S83ljkm7NOwykgt2ttJJPRRZ-ZSVD-fnM6FJ_RYxSYOoAwNnVPDSaJdVl6pVAY9cJybnvjyeRy2XcWNHdxvgSq2AV7okLD-2vHu7jaPN8aN2AmckbubcJbFxoe_lX2odfHSk553P2A6eyYEJp5YUPfAhIOm3WNEFm2RfYEfuLtCYwN8BA1eWHD5d9GCk1zUCCeuWGeADpwEi46gTzIp36Ar4iTDJYfSgkdCJ-0j2EL70lwRRdl4IhV47I_AraupBsymJh1S1yMGJUxSVfrdygI6ABvxg1He0zmiu1OmswWyRInYRKybj6lqRi6YS22rLcy-9wiarH5fEZ_UT0P7bOfdx97REddGsRX_EdxG7GfxpYokHUf8vqHmwqhm9n1OI2J7WIP0Y2oKu0Uapw_X1ZbbmN0Zv99K5QGOxfV1tqk0-NhuO9yhWbbddbTdY1_flel32bNMzrNl6hbniJKeLHDPGuoUmY8Qtlw0rGa1VXVasKldFeYd3HeWoWm2qVqxFti7JHqmKOEdh7JDbJo3UhsHRoZLOu9shd04O5HVqR_g8-NHYZjcGrv_IX2GbJwJNmv4fIz2CHw">