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

    <tr>
        <th>Summary</th>
        <td>
            UBSan (unsigned-integer-overflow) reports issue in libc++
        </td>
    </tr>

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

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

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

<pre>
    Compiler info:

```text
clang version 20.1.0 (https://github.com/llvm/llvm-project.git 24a30daaa559829ad079f2ff7f73eb4e18095f88)
Target: x86_64-unknown-linux-gnu
```

```cpp
#include <algorithm>
#include <functional>
#include <vector>

int main()
{
    std::vector primes{
 2,   3,   5,   7,  11,  13,  17,  19,
        23,  29,  31,  37,  41, 43,  47,  53,
        59,  61,  67,  71,  73,  79,  83,  89,
    };

 std::sort(primes.begin(), primes.end(), std::greater{});

    return 0;
}
```

Compile with `-stdlib=libc++ -fsanitize=unsigned-integer-overflow`

Output:

```text
/opt/compiler-explorer/clang-20.1.0/bin/../include/c++/v1/__bit/blsr.h:25:23: runtime error: negation of 1023 cannot be represented in type 'unsigned long'
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /opt/compiler-explorer/clang-20.1.0/bin/../include/c++/v1/__bit/blsr.h:25:23 
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8VM2O4zYMfhrlItiQKf8efHCS-rYo0OkcehpINu2oq0iGLGdm-_SFIs9k2u0eetnACCF-JEV-IinWVc0GsSXFkRTng9j8xbrWSrt91eog7fitPdnrojQ6qsxkCe8Iu38li5_HN09YN2hhZnpDtyprKLA0SxklUF-8X9bgBT2Bflb-ssl0sFcCvda3d5Eszv6Jg09n5SnkgrNRCFEUTQ2NGFnVTDBN1VRxlDlmNWuKqa4JNIR1vws3oye8o291-VLmyWa-GvtqEq3M9pbMZvuc7b-SH5YlHIErM-htREr4SejZOuUvV8J_-Q6cNjN4ZY3Q_4XecPDW7QjrlPH0KpQhsOdKqiNhHaWUrn4MpPAuutDFqSuuOw4ETpRSHkURRXUXWRZFxLJd2RA47YHDDyIKzV3w6MKjbX4_5dEij7qC_9O_iI5ldCyjURVPVfSsokkdT_WnBEh1JvwYCXiUuVrnCdSxzFTi_MEKnPbiUzTjQ_fhOTsUHl2gpjoH8CM4pdSh35yhbFdW5-_fem9f-qr8hZKSJasftZKEn7WSA4EjgSNNplUY5dVfSPh5M_ehGBNlPM7oEntDN2n7-hHz180vm__hLBDo7eIJ9MM-Ogm-Ldo6dEEXBiWJA0Kgl4GIPk0J9HsjBZuYFoH-lhHoX16kCuGkXl16IbyDIvzx0PRuM15dkaJzofM6anAWoUOpnWjGgNNBGGM9lUgdLg5XNB5Hqgz13xakBKr3eqm2ZiZQEdY9PX_50v32R4j3bEaclMHxiBdxU9Y97Uzdb9ve0UTuMP1Z1dPPzB_Glo8Nb8QB26wqsoZBxfnh0soJGzbyTA7QYFFPbGS1rGEsmBxKWY8H1QKDglWsygpeFzwd5FhiWWdjkQsQlSQ5w6tQOg2LKrVuPqh13bDN8opDedBCol7vCxTg0VIEICxU197Xm9zmleRMq9WvjzheeY3t8_FJmLAqf9x30IS3s86v9H53eL3HVYfN6fb_7dnAdwi0Euj3Om4t_B0AAP__zoLBKg">