There's no need to explicitly check for the maximum value, because the
function we call handles it correctly anyway.

libstdc++-v3/ChangeLog:

        PR libstdc++/98226
        * include/std/bit (__countl_one, __countr_one): Remove redundant
        branches.

Tested powerpc64le-linux. Committed to trunk.

commit 2ea62857a3fbdf091ba38cbb62e98dc76b198e2e
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Dec 10 21:57:42 2020

    libstdc++: Remove redundant branches in countl_one and countr_one [PR 98226]
    
    There's no need to explicitly check for the maximum value, because the
    function we call handles it correctly anyway.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/98226
            * include/std/bit (__countl_one, __countr_one): Remove redundant
            branches.

diff --git a/libstdc++-v3/include/std/bit b/libstdc++-v3/include/std/bit
index 1d99c807c4a..6f47f89ab03 100644
--- a/libstdc++-v3/include/std/bit
+++ b/libstdc++-v3/include/std/bit
@@ -141,8 +141,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     constexpr int
     __countl_one(_Tp __x) noexcept
     {
-      if (__x == __gnu_cxx::__int_traits<_Tp>::__max)
-       return __gnu_cxx::__int_traits<_Tp>::__digits;
       return std::__countl_zero<_Tp>((_Tp)~__x);
     }
 
@@ -184,8 +182,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     constexpr int
     __countr_one(_Tp __x) noexcept
     {
-      if (__x == __gnu_cxx::__int_traits<_Tp>::__max)
-       return __gnu_cxx::__int_traits<_Tp>::__digits;
       return std::__countr_zero((_Tp)~__x);
     }
 

Reply via email to