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

    <tr>
        <th>Summary</th>
        <td>
            SIGILL with new libc qsort_r implementation in BranchFolder::MergePotentialsElt
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc
      </td>
    </tr>

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

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

<pre>
    https://github.com/llvm/llvm-project/blob/7c1ad51e018c5a1517ca6fb58a4d7027a8bec64e/llvm/lib/CodeGen/BranchFolding.cpp#L491

Now glibc compares an object with itself, just like when _GLIBCXX_DEBUG is enabled therefore explicit unreachable triggers.  this breaks at least any rustc compiler available.

```
#0  0x000015129e40516a in int llvm::array_pod_sort_comparator<llvm::BranchFolder::MergePotentialsElt>(void const*, void const*) () from /home/crrodriguez/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/[libLLVM-17-rust-1.75.0-nightly.so](http://libllvm-17-rust-1.75.0-nightly.so/)

#1 0x00001512a0043779 in __GI___qsort_r (pbase=0x15128c90bd80, total_elems=<optimized out>, size=0x10, cmp=<optimized out>, arg=<optimized out>) at qsort.c:335

#2  0x000015129e4df6e6 in llvm::BranchFolder::TryTailMergeBlocks(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, unsigned int) () from /home/crrodriguez/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/../lib/../lib/[libLLVM-17-rust-1.75.0-nightly.so](http://libllvm-17-rust-1.75.0-nightly.so/)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzklUlv4zgThn8NfSEscNF68MFLFARwPnzA9Az6JlBUSWKHIjUkle3XDygnHU-AzHIewDBtsoqueuvxK-G9GgzADmUHlJ02YgmjdTvpnO2cGhZ43bS2e9mNIcwe8T1iNWL1oMK4tIm0E2K11o_vy3Z29gfIgFjdatsiVheSii6jQGgpM0EzWkiR921WirQrCCtE2YLMU7i6R8W8o-3gFgxi9cEJI8fa6k6ZIZHzjBg_pxVF5ITI_vL-P_uEB61aiaWdZuHAY2GwbWMt-EmFEavgQfeIHfGPxQes1QPgpxEMbm7Pd4fj9-_N6ebw6y1WHoMRrYYOhxEc9NYBhudZK6kCXowDIcd4joNTwwDOJxiHUXncOhAPHouANQgfsDAv2C0-XGpSGhwWj0LpmJxcF49y8va6fGWcYEyeCSGEZpRVkJKM5gIrg5UJeJWJ7xHfC-fESzPbrvHWhebSugjWIX78iPrQD9xl5x7cAP-3AUxQQvsbHRC_Qax8tKrD0hofENtHqT5tVBixMi69sxNGrB7tFAd3BQtidRKbXmbE6mCtlqNQxiNWGzWMQb9sn8u8ydPtYh6MfTJbrczyvB3MEpFRcd5J8hOCq48oO2jVns-_3W9psY0_saVJkSVk-3Zx4i3KToiVkdSfoGrVrlx-nRPDqj-Ng3F6Jb8gJOVFUUX5m-b2rmma31e5XVRjboUHxE_kOcaWsiJtV5KoXbBB6AY0TB7xE-JHOwc1qVfosF0ugh-xV69v2WuOnOavY4UbvjqsInVrVYlEfM959qkh9gmors8hjx39FSbf3Ms3ofRKy0Fb-eARKz8S7oUclYGD8Equx2_Q_H3EYlbP6SLO_wGq3v_em27Hu4pXYgM7mlcVLfM0zzfjri8Ihzanac-4LIquTPOelVL0XcurqucbtWOEcUpJRhlNWZ6wLJeVEFneZX1RkRylBCahdBLLSqwbNsr7BXYF5ZRttGhB-9XhGYsuiRiLXu92axftMniUEq188B8XBBU07H65u707ny8WauAJrx77zr-aZg0TmCCCstGc8D_xms3i9L9_nKz9xImvLf0RAAD__wOVHJs">