<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/84985>84985</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
algorithms.cpp doesn't compile with c++17
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
niranjanyardi
</td>
</tr>
</table>
<pre>
This line in libcxx/src/algortihms.cpp
auto depth_limit = 2 * std::__bit_log2(static_cast<size_t>(last - first));
is not able to compile when c++ standard is set to 17
The root cause seems to be that definition in libcxx/include/__bit/bit_log2.h is gaurded by a c++20 version check like this:
#if _LIBCPP_STD_VER >= 20
template <__libcpp_unsigned_integer _Tp>
_LIBCPP_HIDE_FROM_ABI constexpr _Tp __bit_log2(_Tp __t) noexcept {
return numeric_limits<_Tp>::digits - 1 - std::countl_zero(__t);
}
#endif // _LIBCPP_STD_VER >= 20
a) How do we substitute the std::__bit_log2() call for C++17
b) IF this is a bug when will this be fixed ?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMlN-L2zgQx_8a5WXYYMtO4zz4Idms6cIdV3rLvRpZmtjTypKRxk22f_0he5dsDw4KQQFpfn4_M1YxUu8Qa7E7id15o2YefKgdBeW-KfeqgqFN581r_TJQBEsOgRxY6vTtJmQTgxayUbb3gWkY41ZPk8jOIjuup5rZg8GJh9bSSAyiOIMEIY8Q2YjiKIpj23bErfW9FLKKrJh0q1VkUTxG-okti-JJyMqqyPAAFwqRhTykX3H6mGs9KYLzDKqzCOxB-3Eii3Ad0IEW8iTkCSIrZ1QwQBEicrLL9_AxysuAELxn0GqOCBFxjMmsQ-BBMRi8kCMm75Icdz3IaTsbFLJZuhKyee9tO6RsvZqDQQPdK6j3cmQGPzDEFEsPqL-Dpe8pDcWkz8cGZUEXaP94Pj1--dL-_XJu_3n6CkmdJGr20ZRxnKxiBFE8tm0qb5ra2S2wTUuOsccA7cuUvBeP97Cfn89PbfP1rz_b4-kZtHeR8TYttvALqfUioQDn8aZxYhD7NyIAAXkODtw8YiC90o-pmjXnQt5QTxzhAXJ4uM-D9rNj2_7E4FOaJcUd9f78H0nQGbqAkI2Qze-J88uApvo_-ysYD1eEOHeRiWdOAPB_ZjS5aGUtXHyAxxVivl_jdenxuVnwJeAKurlfp-9K1q73HcKFbmhAFM3G1IU5FAe1wTrf55ncV2VVbYa6KowxZbczqjyUMt-h6YpCXQ561ynUB7mhWmayzIpcylzmcrdVuckLWZU79Uke8ssnUWY4KrJba3-MWx_6DcU4Y12Vh2q3sapDG5fFl9LhFZZHIWX6DoQ6-Tx0cx9FmVmKHO9RmNhivSw98dvSg_EYnZB7vq8c8fA-4_l-MwdbD8zTMtULrZ54mLut9qOQTYr-9vcwBf8NddqepaYoZLPU_G8AAAD___iQcwU">