]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Support VAX floats in std::strong_order
authorJonathan Wakely <jwakely@redhat.com>
Tue, 8 Mar 2022 12:15:55 +0000 (12:15 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 10 Mar 2022 11:49:00 +0000 (11:49 +0000)
The VAX float and double format does not support NaN, so the
std::partial_ordering returned by <=> will never be 'unordered'. We can
just use the partial_ordering value as the strong_ordering.

libstdc++-v3/ChangeLog:

* libsupc++/compare (_Strong_ordering::_S_fp_cmp) [__vax__]: Use
<=> comparison.

libstdc++-v3/libsupc++/compare

index 050cf7ed20d10cba3558806584758a675253bd7e..3c22d9addf178407086908f2fc547f5305417220 100644 (file)
@@ -843,6 +843,11 @@ namespace std
        static constexpr strong_ordering
        _S_fp_cmp(_Tp __x, _Tp __y) noexcept
        {
+#ifdef __vax__
+         // VAX format has no NaN, only "excess" for Inf, so totally ordered.
+         return __builtin_bit_cast(strong_ordering, __x <=> __y);
+#endif
+
          auto __ix = _S_fp_bits(__x);
          auto __iy = _S_fp_bits(__y);