Re: Keep compiler silence (clang 10, implicit conversion from 'long' to 'double' )
Yuya Watari <watari.yuya@gmail.com>
From: Yuya Watari <watari.yuya@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>, pgsql-hackers@postgresql.org
Date: 2019-11-06T02:32:38Z
Lists: pgsql-hackers
Attachments
- v5-keep-compiler-silence.patch (application/octet-stream) patch v5
Hello Tom, Thank you for replying. On Wed, Nov 6, 2019 at 12:04 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Yuya Watari <watari.yuya@gmail.com> writes: > > The added macro FLOAT8_FITS_IN_INT32() does not check NaN explicitly, > > but it sufficiently handles the case. > > Really? I don't think anything is guaranteed about how a NaN will > compare when using C's non-NaN-aware comparison operators. > > My thought about this was to annotate the macros with a reminder > to also check for NaN if there's any possibility that the value > is NaN. I agree with your opinion. Thank you for pointing it out. If the platform satisfies IEEE-754 standard, all comparisons (except for "not equals") between NaN and other floating values are "false". [1] In this case, the proposed FLOAT8_FITS_IN_INT32() macro handles NaN. [1] https://en.wikipedia.org/wiki/NaN#Comparison_with_NaN However, this behavior depends on the platform architecture. As you have said, C language does not always follow IEEE-754. I think adding explicit checking of NaN is necessary. I modified the patch and attached it. Best regards, Yuya Watari NTT Software Innovation Center watari.yuya@gmail.com
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