diff options
-rw-r--r-- | lib/msun/src/e_pow.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/msun/src/e_pow.c b/lib/msun/src/e_pow.c index d54af9d..66480d1 100644 --- a/lib/msun/src/e_pow.c +++ b/lib/msun/src/e_pow.c @@ -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 */ |