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