Re: Keep compiler silence (clang 10, implicit conversion from 'long' to 'double' )
Kyotaro Horiguchi <horikyota.ntt@gmail.com>
From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
To: watari.yuya@gmail.com
Cc: andrew@tao11.riddles.org.uk, tgl@sss.pgh.pa.us, thomas.munro@gmail.com,
pgsql-hackers@postgresql.org
Date: 2019-11-07T06:09:44Z
Lists: 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
Commits
-
Fix integer-overflow edge case detection in interval_mul and pgbench.
- 8d380864a523 9.4.25 landed
- 84780d468023 9.5.20 landed
- 15783d057543 9.6.16 landed
- 5f794f7572e1 10.11 landed
- b49b7f94489a 11.6 landed
- f6e72dc9cc8b 12.1 landed
- a7145f6bc8b7 13.0 landed
-
Change floating-point output format for improved performance.
- 02ddd499322a 12.0 cited