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

    <tr>
        <th>Summary</th>
        <td>
            Need a way to deprecate `__has_feature(X)` with a message to switch to `__has_extension(X)` instead
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    We have many "features" that should really be "extensions" but currently we have no way to report that the use of those features should be replaced with `__has_extension` tests instead.

At least a few of these features are low volume/constrained enough that issuing a deprecation warning and a direct devs from using `__has_feature` to `__has_extension` and then eventually removing the `__has_feature` path, or possibly making it an error at some point, something like

1. Add deprecation warning saying to switch from `__has_feature(X)` to `__has_extension(X)`
2. <wait some number of releases>
3. Make `__has_feature(X)` produce an error message rather than a warning

(1) and (2) allow for migration, (3) means that people don't silently have the `__has_feature` tests stop working.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEVM2SozYQfhr50rUUiMGGAwdnE9-Sa3KbalBjaUdIlNQy8dunBPZMqjKTPfmnW93fn4Qxmqsj6kXzi2h-PWBi7UPvf-jk-DB4de__JNB4I5jR3UFIORFyChSFlMAaGaL2ySoIhNbeYaDcRH8zuWi829qGxDCmEMixvcP6GOg8rHgH9hBo8YH3aawJUiTwE7D2keC577lnoNxvcSQFq2EN4li-vmqMr-9LxbEEpsgRjItMqApRnkV5PjNYwsiAMNG6r6B_r8BAYP0KN2_TTEJeRu8iBzSOFJDz6ap3lCbGZNwVEBQtgUZk4x2sGNz2r1O5YgKNDIpuEabgZ0gxF9_hPrZuYP0XLPIk1uSAbuQ4bQoHmv0tT8pSfTZtQdZCfgcfYPExmsHeYca3fMQwoAMKwQfI1vmZYPHGce7Pv1jnNmveaJesKuCs1KcsI943FB7ianjUO8n_AJLtX0J2X7N8r4vyLAsQ9fcVzQOaS_NAIRsVKDtHUdS_ifJcF_A7vn3C_mPZErxKI33QnSlGvBIEZE0h2-gAn2R2skK2lZDdprqQrdy-2xyIKQ8w17ApkLUSsq1zeSZ0cc_EQn6xBCo3nBiisXvet7B_5dUe08h-gdWH7FFxUH2turrDA_XVqWmq-ng6tQfdK1XiMKmuaRtZV1XbKOxO5XFSo5R1e5QH08tSNmVbvZRV09Vt0cluGlo1UNNO9FJO4qWkGY0trL3NhQ_XQw4y9VVTN1IeLA5k4_YWSOlo3WJOQsr8NIQ-H_o2pGsUL6U1kePHGDZsqf-DSG2abrf6mZn_tWm7wfhuzkeYfhKW580-pGB7zbxEUZ-FvAh5uRrWaShGPwt5yQgfH9-W4H_QyEJeNl5RyMuD-K2X_wQAAP__tH-y2g">