local-asin-acos-raise-invalid
authorGNU Libc Maintainers <debian-glibc@lists.debian.org>
Sat, 1 May 2021 20:56:06 +0000 (21:56 +0100)
committerAurelien Jarno <aurel32@debian.org>
Sat, 1 May 2021 20:56:06 +0000 (21:56 +0100)
This workarounds GCC bug PR 95115 introduced in GCC 10. This is similar to
what is done in the float version.

Gbp-Pq: Topic riscv64
Gbp-Pq: Name local-asin-acos-raise-invalid.diff

sysdeps/ieee754/dbl-64/e_asin.c

index eac3d27fda9213f9664839947e4668f2877613e9..6f4a3f8b4c500fd42f1cb094000d730bdcdea2b4 100644 (file)
@@ -327,11 +327,7 @@ __ieee754_asin(double x){
   else
   if (k>0x7ff00000 || (k == 0x7ff00000 && u.i[LOW_HALF] != 0)) return x + x;
   else {
-    u.i[HIGH_HALF]=0x7ff00000;
-    v.i[HIGH_HALF]=0x7ff00000;
-    u.i[LOW_HALF]=0;
-    v.i[LOW_HALF]=0;
-    return u.x/v.x;  /* NaN */
+    return (x-x)/(x-x);  /* NaN */
  }
 }
 #ifndef __ieee754_asin
@@ -637,11 +633,7 @@ __ieee754_acos(double x)
   else
   if (k>0x7ff00000 || (k == 0x7ff00000 && u.i[LOW_HALF] != 0)) return x + x;
   else {
-    u.i[HIGH_HALF]=0x7ff00000;
-    v.i[HIGH_HALF]=0x7ff00000;
-    u.i[LOW_HALF]=0;
-    v.i[LOW_HALF]=0;
-    return u.x/v.x;
+    return (x-x)/(x-x);
   }
 }
 #ifndef __ieee754_acos