<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">