local-asin-acos-raise-invalid
authorGNU Libc Maintainers <debian-glibc@lists.debian.org>
Sun, 10 Jul 2022 20:29:34 +0000 (21:29 +0100)
committerAurelien Jarno <aurel32@debian.org>
Sun, 10 Jul 2022 20:29:34 +0000 (21:29 +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 ae5344f720055ef31b01c4af2e1228b79b821430..1e484a10a162bd561fad52096feac601fdf0d19e 100644 (file)
@@ -298,11 +298,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
@@ -591,11 +587,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