On Thu, 2016-01-07 at 20:56 +0100, Bernhard Reutner-Fischer wrote:
> On January 7, 2016 12:23:49 PM GMT+01:00, Jonathan Wakely 
> <jwak...@redhat.com> wrote:
> >On 07/01/16 07:28 +0100, Marc Glisse wrote:
> >>On Wed, 6 Jan 2016, Jonathan Wakely wrote:
> >>
> >>>On 06/01/16 12:45 -0800, Steve Ellcey wrote:
> >>>>On Wed, 2016-01-06 at 20:34 +0000, Jonathan Wakely wrote:
> >>>>>On 05/01/16 14:43 -0800, Steve Ellcey  wrote:
> >>>>>>While trying to build GCC with uclibc instead of glibc I ran into
> >a build
> >>>>>>failure in libstdc++.  uclibc doesn't seem to provide the 
> >>>>>isfinite function
> 
> uClibc provides an infinite macro. Make sure to enable C99 math though.
> 
> OK?
> 
> TIA,

But is there any reason to use the infinite macro instead of the
__builtin_isfinite function?  I think that if I used the infinite macro
I would also have to check for NAN since NAN is neither finite nor
infinite.  Here is what I tested last night with no failures.  Is this
version OK to checkin?

Steve Ellcey
sell...@imgtec.com



2016-01-07  Steve Ellcey  <sell...@imgtec.com>

        * include/ext/random.tcc: Use __builtin_isfinite instead of
        std::isfinite.


diff --git a/libstdc++-v3/include/ext/random.tcc 
b/libstdc++-v3/include/ext/random.tcc
index a9c5a2b..52350e8 100644
--- a/libstdc++-v3/include/ext/random.tcc
+++ b/libstdc++-v3/include/ext/random.tcc
@@ -1570,7 +1570,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                              return __t; });
              __norm = std::sqrt(__sum);
            }
-         while (__norm == _RealType(0) || ! std::isfinite(__norm));
+         while (__norm == _RealType(0) || ! __builtin_isfinite(__norm));
 
          std::transform(__ret.begin(), __ret.end(), __ret.begin(),
                         [__norm](_RealType __val){ return __val / __norm; });


Reply via email to