<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/60060>60060</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [C++20] [Modules] We should deprecate and remove `-fmodules-ts` flag
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            c++20,
            clang:modules
      </td>
    </tr>

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

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

<pre>
    We'll remove `-fconcepts-ts` in Clang16 and we'll deprecate `-fmodules-ts` in Clang16 and remove it in Clang17 according to https://github.com/llvm/llvm-project/issues/59110. So it pretty makes sense to deprecate and remove `-fmodules-ts` flag too.

And the status of `-fmodules-ts` is different from `-fcoroutines-ts`:
(1) The `-fcoroutines-ts` is used widely. But according to the previous state of `-fmodules-ts`, it is hard to believe `-fmodules-ts` is used seriously.
(2) The implementation of `-fcoroutines-ts` is the same with the C++20 Coroutines in clang. However, the implementation of `-fmodules-ts` is different from the C++20 Modules in clang.

Personally, I prefer to remove `-fmodules-ts` flag directly. But given the example of `-fcoroutines-ts`, I suggest to follow the style:
deprecate `-fmodules-ts` in clang16 and remove it in clang17.

CC: @AaronBallman 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVEuPmzAQ_jXmYi0y5pHlwCFhFbWHSpVaaXs19gBujZ36kTT_vjKBZFdKtGovINsz833zzYM5JwcN0KByhyhtx8D0b_kj1IhSVL4kLPjR2OZ2n3RGnJtXQHSjFLYwmSNgVJGnnhvN4eDdk3eoIlhq3Cqmh6zCTAt8WjwEHCxw5henyYig4IHPEl3628MGM86NFVIP2Bs8en9wKN8iukd0P0g_hi7lZkJ0r9Rx_T0drPkJ3CO6l84FcIjuyzrLSIq_mRj-YMH7M57YL3DYgXYQg9-oviFzh3WvWCRjUkReENlevlstsB8BO898cNj0d_N1WMi-Bwva496aaVXSmuClXu1igpfQ9DlDtMbfR7hvGSMGBwKfpAB1TvEu-PeKRU4HC0dpgpvJwX1uiLaz8A6PzIro2YGScF-BFdWBjXHVOb3ypStfOR0UTKA989LoK-i9DGbd2AT4JP04n1pEd4juKMHt1T42BY9NkeJP5gRHsJGzfwz1kfbvgb5crG8ob6v7Fawzmil1jpifo6I92KjSB20ipAXu18oM8gh6xoU_LJJ-KMsFxoVhAOcjTm-UMqelxc4Krj3y0YDxRwN2edi8y7NtUb7FqCBbZo3eMaUmpnEimlzUec0SaLJqkz-XRVZkydhsapJ3Bc9ZAcCrDc-6jhacCFLldUmzPJENJTQnWVaRDa1JlmaM133d047konwWFSoITEyqNM5tauyQzBPbVIRUJFGsA-WWXcXXUsVVRdt4EzNA-XbJeVlhtpl3QBcGhwqipPPuFt1Lr-bldy08Kl8wKndL-ePpFbAbTVDinzZCEqxq_n8_zQn_DQAA__9twNEQ">