svn commit: r286421 - projects/clang-trunk/lib/msun/src
Dimitry Andric
dim at FreeBSD.org
Fri Aug 7 20:13:05 UTC 2015
Author: dim
Date: Fri Aug 7 20:13:04 2015
New Revision: 286421
URL: https://svnweb.freebsd.org/changeset/base/286421
Log:
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.
Modified:
projects/clang-trunk/lib/msun/src/e_pow.c
Modified: projects/clang-trunk/lib/msun/src/e_pow.c
==============================================================================
--- projects/clang-trunk/lib/msun/src/e_pow.c Fri Aug 7 19:56:22 2015 (r286420)
+++ projects/clang-trunk/lib/msun/src/e_pow.c Fri Aug 7 20:13:04 2015 (r286421)
@@ -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 */
More information about the svn-src-projects
mailing list