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; });