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

    <tr>
        <th>Summary</th>
        <td>
            Sema should check and warn for invalid register for  __builtin_arm_rsr with -mattr=-dit (Data Independent Timing feature in ARM)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang,
            backend:ARM,
            crash-on-invalid,
            clang:diagnostics
      </td>
    </tr>

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

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

<pre>
    https://clang.godbolt.org/z/rr77MPbYd

__attribute__((target("dit")))
int with_attr(void) {
    return (__builtin_arm_rsr64("dit") >> 24) & 1;
}

int without_attr(void) {
    return (__builtin_arm_rsr64("dit") >> 24) & 1;
}

llvm crashes in `without_attr` because we codegen’d for an invalid register with -mattr=-dit. Sema needs to check this and diagnose much earlier.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEk89unEAMxp_GXKxdgYEFDhw23azUQ6Sq7aUnZBgvTAMz0cyQKH36ism2aZPeKyH-2Nj-_OODvdejEWmhvIHylPAaJuvaC0-sDD8_s0t6q57bKYQHD_kR6Ax0HmY24360qrdz2Fs3Ap1_AJ2dq6q7T_03BekJ0uPLues4BKf7NUjXAdVAdWA3Soj3pHQAIqDmesQabQI-6TDFUqD60WoF1CBUNy8vICI6CaszCFR3Xb_qOWjTsVs6592heNMcIb-F_BapiA90wAzyay-oTn_q_TXbruF_jJ_nxwUHx34Sj9ogHNK_1BxS7GXg1Qs-CQ5WySgGbgnqFJpG4cU6ZIPaPPKsFToZtQ_i4kq4W2KP_LRTOuzxiyyMRkR5DBaHSYZ7DJP2yEah0jwa6wWXdZhQ2M1a3D5Rba6avOFE2qzKqK6ypsmTqa2q8pCX0rDKqFJ935Nk1NeX8tJcBmFJdEspFWmRZZQVByr3lzRVWSkqrZhVmikoUllYz_sNweaqRHu_SlvXRVEmM_cy--hTomjAiPYDEPU83ItRkB-Pn-9-RyPDnTW7K4rXRCzOj9cFgx78litPiWu30bt-HT0U6ax98K9igg6ztBGZn-w6qyuwjdUTOxPJv8O-BfGdQf7xNTYjnTgwfjRKHsQoMQG_6kWbES_CYXWy2SFu2CSrm9_8k6MO09rvB7sAnTfR18vuwdnvMgSgc8Tpgc6R6M8AAAD__wpFPc0">