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.
This commit is contained in:
parent
f6e33f02a8
commit
092f718fed
|
@ -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); \
|
||||
|
|
Loading…
Reference in New Issue