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
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
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