]> gcc.gnu.org Git - gcc.git/commit - libstdc++-v3/libsupc++/compare
libstdc++: Fix std::strong_order to handle NaN on VAX
authorJonathan Wakely <jwakely@redhat.com>
Thu, 10 Mar 2022 14:17:03 +0000 (14:17 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 10 Mar 2022 14:25:46 +0000 (14:25 +0000)
commit73f3b8a53e6664c079731c2a183c16621481d039
tree2699289256ab4cb281f0c9c534a3c1d0a8fb1713
parentc65d3c7f9dade18826d1a28d71b98c7cdc3e4300
libstdc++: Fix std::strong_order to handle NaN on VAX

I mistakenly believed that VAX floats do not support NaN, but with GCC
__builtin_isnan(__builtin_nan("")) is true. That means my previous
change to <compare> is wrong, because it fails to handle NaN.

When std::numeric_limits<floating-point-type>::is_iec559 is false, as on
VAX, the standard only requires an ordering that is consistent with the
ordering observed by comparison operators. With this change the ordering
is -NaN < numbers < +NaN, and there is no support for different NaN bit
patterns (as I'm not even sure if GCC supports any for VAX).

libstdc++-v3/ChangeLog:

* libsupc++/compare (_Strong_order::_S_fp_cmp) [__vax__]:
Handle NaN.
libstdc++-v3/libsupc++/compare
This page took 0.059894 seconds and 5 git commands to generate.