<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/211032>211032</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[arm] __builtin_trap should emit udf not brk
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:ARM
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nickdesaulniers
</td>
</tr>
</table>
<pre>
```c
void foo () {
__builtin_trap();
}
```
emits with clang:
```asm
_foo:
brk #0x1
```
but with gcc:
```asm
_foo:
udf #255
```
This makes handling traps from ubsan in the linux kernel compiler dependent, which sucks.
https://lore.kernel.org/llvm/CAD++jLk549ZcSjpRN0G27i1C-n-k-dOpmgvfZBgmHQ5s0F6dJg@mail.gmail.com/
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEksuO2zoMhp-G3hAJZMqX8cILZ4Kcg6IXdNrVbAJZkm2NZcmw5Mz07QsnU7TNpoDAhSh-_En9IgTTO61ryA-QHxOxxsEvtTNyVDqI1Tqjl5C0Xv2ooWC3I4E1F28Udt4j0ANQhVAegDWIiOdzuxobjTvHRcy3NPAtC-Vxi78wwBo9mRjw1cQBpRWuB978-UKECVhz7ry_JbBdRgTi7C29A7VrvGF6Kf8FWVUHrALilOd3mO-DCTiJUQcchFPWuB63KQJ2i59wbYNwaBzGQaM1bn3DUS9OW5R-mo3VCyo9a6e0i0CP-DoYOWBY5Rj2wJohxjlsIugEdLJ-0ftb-d4v_XZjLxPQ6bE5Ah2ADi8fxzyrnuW3l_npM_uPSpM-7txu3Kkv89RfuudDP_3_NQ_sVKgPPWRsEsbu-2uUfkMlquaq4pVIdJ2WD1mRs4x4MtRdXpZMC5IVLzvNNKW8LITu2rTKu4dSJqYmRgUrKU2LlGd8z7JWCNWKolWd7ngBGdPXTpvqbYDEhLDqmtKUcUqsaLUNV1sRtUKO2ingTfP0CYg2py31Vrhr1z5AxqwJMfxGRRPt1ZNimSA_3nkKw-BXq3Bzz_ab6HzcrJGsi63_XnJv4rC279t43--177z4Fy0j0OkqOwCd3pVfavoZAAD__-SC8XM">