Re: Keep compiler silence (clang 10, implicit conversion from'long' to 'double' ) - Mailing list pgsql-hackers

From Kyotaro Horiguchi
Subject Re: Keep compiler silence (clang 10, implicit conversion from'long' to 'double' )
Date
Msg-id 20191107.150944.889761811766014411.horikyota.ntt@gmail.com
Whole thread Raw
In response to Re: Keep compiler silence (clang 10, implicit conversion from 'long'to 'double' )  (Yuya Watari <watari.yuya@gmail.com>)
Responses Re: Keep compiler silence (clang 10, implicit conversion from 'long'to 'double' )
List pgsql-hackers
At Wed, 6 Nov 2019 13:56:46 +0900, Yuya Watari <watari.yuya@gmail.com> wrote in 
> Hello Tom, Thomas, and Andrew,
> 
> >  Tom> That commit presumes that floats follow the IEEE bitwise
> >  Tom> representation, I think;
> >
> > Correct. (It notably does _not_ make any assumptions about how floating
> > point arithmetic or comparisons work - all the computation is done in
> > integers.)
> >
> >  Tom> but it's a long way from there to assuming that float comparisons
> >  Tom> do something that is explicitly *not* promised by C99.
> >
> > I agree.
> 
> Thank you for your comments. I agree that we should not assume
> anything that is not guaranteed in the language specification. The
> modified patch (attached in the previous e-mail) checks NaN explicitly
> if needed.

Mmm? See the bit in the patch cited below (v5).

+    /* Range check */
+    if (unlikely(!FLOAT8_FITS_IN_INT32(num)) || isnan(num))

If compiler doesn't any fancy, num is fed to an arithmetic before
checking if it is NaN. That seems have a chance of exception.

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



pgsql-hackers by date:

Previous
From: Pavel Stehule
Date:
Subject: Re: dropdb --force
Next
From: Ashutosh Sharma
Date:
Subject: Re: tableam vs. TOAST