Module Name: src Committed By: dsl Date: Fri Mar 14 22:21:32 UTC 2014
Modified Files: src/lib/libm/src: math_private.h Log Message: There is some very odd code in s_exp2.c that only works if 'double' values are rounded to 53 bit mantissa in teh x87 registers. This hasn't been true since Nov 11 2013. Forcing a store-load for 'double' in STRICT_ASSIGN() seems to fix things (at least enough for the few random test cases). I suspect the code could be changed so that the number of mantissa bits didn't matter. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/lib/libm/src/math_private.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libm/src/math_private.h diff -u src/lib/libm/src/math_private.h:1.20 src/lib/libm/src/math_private.h:1.21 --- src/lib/libm/src/math_private.h:1.20 Tue Nov 19 19:24:34 2013 +++ src/lib/libm/src/math_private.h Fri Mar 14 22:21:31 2014 @@ -11,7 +11,7 @@ /* * from: @(#)fdlibm.h 5.1 93/09/24 - * $NetBSD: math_private.h,v 1.20 2013/11/19 19:24:34 joerg Exp $ + * $NetBSD: math_private.h,v 1.21 2014/03/14 22:21:31 dsl Exp $ */ #ifndef _MATH_PRIVATE_H_ @@ -185,7 +185,7 @@ do { \ #define STRICT_ASSIGN(type, lval, rval) do { \ volatile type __lval; \ \ - if (sizeof(type) >= sizeof(double)) \ + if (sizeof(type) >= sizeof(long double)) \ (lval) = (rval); \ else { \ __lval = (rval); \