I've just submitted a patch for this too :-P. Sorry about that.

What is your nick in IRC, Wilco?


On 02/21, Wilco Dijkstra wrote:
> Fix PR89437. Fix the sinatan-1.c testcase to not run without
> a C99 target system.  Use nextafterl for long double initialization.
> 
> Fix an issue with sinl (atanl (sqrtl (LDBL_MAX)) returning 0.0
> instead of 1.0 by using x < sqrtl (LDBL_MAX) in match.pd.
> 
> OK for commit?
> 
> ChangeLog:
> 2019-02-21  Wilco Dijkstra  <wdijk...@arm.com>
> 
>     gcc/
>       * match.pd: Use lt in sin(atan(x)) and cos(atan(x)) simplifications.
> 
>     testsuite/
>       * gcc.dg/sinatan-1.c: Fix testcase.
> --
> diff --git a/gcc/match.pd b/gcc/match.pd
> index 
> bccf4df05a2f94785446719b3097b3f912fafe96..c9af2e59441c4fe19e88d94c9d138ae35dfe673f
>  100644
> --- a/gcc/match.pd
> +++ b/gcc/match.pd
> @@ -4407,7 +4407,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
>        tree t_one = build_one_cst (type);
>       }
>      (if (SCALAR_FLOAT_TYPE_P (type))
> -     (cond (le (abs @0) { t_cst; })
> +     (cond (lt (abs @0) { t_cst; })
>        (rdiv @0 (sqrts (plus (mult @0 @0) { t_one; })))
>        (copysigns { t_one; } @0))))))
>  
> @@ -4427,7 +4427,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
>        tree t_zero = build_zero_cst (type);
>       }
>      (if (SCALAR_FLOAT_TYPE_P (type))
> -     (cond (le (abs @0) { t_cst; })
> +     (cond (lt (abs @0) { t_cst; })
>        (rdiv { t_one; } (sqrts (plus (mult @0 @0) { t_one; })))
>        (copysigns { t_zero; } @0))))))
>  
> diff --git a/gcc/testsuite/gcc.dg/sinatan-1.c 
> b/gcc/testsuite/gcc.dg/sinatan-1.c
> index 
> 6a3995ae07949a423e416592276171b6e6f8c816..cfbb771a018d3175c680dce88e0121e469716edc
>  100644
> --- a/gcc/testsuite/gcc.dg/sinatan-1.c
> +++ b/gcc/testsuite/gcc.dg/sinatan-1.c
> @@ -1,4 +1,4 @@
> -/* { dg-do run } */
> +/* { dg-do run { target c99_runtime } } */
>  /* { dg-options "-Ofast" } */
>  /* { dg-add-options ieee } */
>  
> @@ -62,7 +62,7 @@ main()
>      /* Get first x such that 1 + x*x will overflow */
>      float fc = nextafterf (sqrtf (__FLT_MAX__ - 1), __FLT_MAX__);
>      double c = nextafter (sqrt (__DBL_MAX__ - 1), __DBL_MAX__);
> -    long double lc = nextafter (sqrtl (__LDBL_MAX__ - 1), __LDBL_MAX__);
> +    long double lc = nextafterl (sqrtl (__LDBL_MAX__ - 1), __LDBL_MAX__);
>  
>      /*  Force move from FPU to memory, otherwise comparison may
>          fail due to possible more accurate registers (see 387)  */

Reply via email to