This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Update x86 fix-fp-int-compare-invalid.h for GCC 8 [committed]
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Joseph Myers <joseph at codesourcery dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Thu, 26 Oct 2017 04:28:27 -0700
- Subject: Re: Update x86 fix-fp-int-compare-invalid.h for GCC 8 [committed]
- Authentication-results: sourceware.org; auth=none
- References: <alpine.DEB.2.20.1710240033380.19664@digraph.polyomino.org.uk>
On Mon, Oct 23, 2017 at 5:33 PM, Joseph Myers <joseph@codesourcery.com> wrote:
> The glibc implementation of iseqsig relies on ordered comparison
> operators raising the "invalid" exception for quiet NaN operands, with
> a workaround on platforms where a GCC bug means that exception is not
> raised. For x86, that bug has now been fixed for GCC 8, so this patch
> disables the workaround in that case. If and when the corresponding
> bugs for powerpc and s390 are fixed, the headers for those platforms
> should of course be updated similarly.
>
> Tested for x86_64 and x86, including with GCC mainline. Note that
> other failures appear with GCC mainline because of spurious use of
> ordered comparison instructions for unordered operations
> <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82692>. Committed.
>
> 2017-10-24 Joseph Myers <joseph@codesourcery.com>
>
> * sysdeps/x86/fpu/fix-fp-int-compare-invalid.h
> (FIX_COMPARE_INVALID): Define to 0 if [__GNUC_PREREQ (8, 0)].
>
> diff --git a/sysdeps/x86/fpu/fix-fp-int-compare-invalid.h b/sysdeps/x86/fpu/fix-fp-int-compare-invalid.h
> index bda247d..842c945 100644
> --- a/sysdeps/x86/fpu/fix-fp-int-compare-invalid.h
> +++ b/sysdeps/x86/fpu/fix-fp-int-compare-invalid.h
> @@ -20,9 +20,13 @@
> #ifndef FIX_FP_INT_COMPARE_INVALID_H
> #define FIX_FP_INT_COMPARE_INVALID_H 1
>
> -/* As of GCC 5, both x87 and SSE comparisons use unordered comparison
> +/* Before GCC 8, both x87 and SSE comparisons use unordered comparison
> instructions when they should use ordered comparisons
> <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52451>. */
> -#define FIX_COMPARE_INVALID 1
> +#if __GNUC_PREREQ (8, 0)
> +# define FIX_COMPARE_INVALID 0
> +#else
> +# define FIX_COMPARE_INVALID 1
> +#endif
>
> #endif /* fix-fp-int-compare-invalid.h */
>
> --
> Joseph S. Myers
> joseph@codesourcery.com
Does this fix
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82733
--
H.J.