Apply an atrocious hack to libm's pow() implementation, to work around
LLVM PR 24343. This fixes the graphics/png build on i386, which otherwise failed during its tests because of floating point exceptions, leading to >5000 skipped other ports.
This commit is contained in:
parent
5f78ec1c9f
commit
a9b1b57bd5
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/projects/clang-trunk/; revision=286421
@ -162,7 +162,13 @@ __ieee754_pow(double x, double y)
|
||||
if(lx==0) {
|
||||
if(ix==0x7ff00000||ix==0||ix==0x3ff00000){
|
||||
z = ax; /*x is +-0,+-inf,+-1*/
|
||||
if(hy<0) z = one/z; /* z = (1/|x|) */
|
||||
if(hy<0) {
|
||||
#ifdef __i386__
|
||||
/* XXX: Work around llvm PR 24343: */
|
||||
__compiler_membar();
|
||||
#endif
|
||||
z = one/z; /* z = (1/|x|) */
|
||||
}
|
||||
if(hx<0) {
|
||||
if(((ix-0x3ff00000)|yisint)==0) {
|
||||
z = (z-z)/(z-z); /* (-1)**non-int is NaN */
|
||||
|
Loading…
Reference in New Issue
Block a user