diff options
author | andreas_kupries <akupries@shaw.ca> | 2008-04-01 20:11:51 (GMT) |
---|---|---|
committer | andreas_kupries <akupries@shaw.ca> | 2008-04-01 20:11:51 (GMT) |
commit | 34773bb3d6ac57ffe23e44eca050ece02e64d0e4 (patch) | |
tree | b1260f9a971cc8a091695057472dc1488f2be0fe /generic/tclStrToD.c | |
parent | df8fdd376c3d6ba74d0403061f6d27cf88a12724 (diff) | |
download | tcl-34773bb3d6ac57ffe23e44eca050ece02e64d0e4.zip tcl-34773bb3d6ac57ffe23e44eca050ece02e64d0e4.tar.gz tcl-34773bb3d6ac57ffe23e44eca050ece02e64d0e4.tar.bz2 |
* generic/tclStrToD.c: Applied patch for [Bug 1839067] (fp
* unix/tcl.m4: rounding setup on solaris x86, native cc), provided
* unix/configure: by Michael Schlenker. configure regen'd.
Diffstat (limited to 'generic/tclStrToD.c')
-rwxr-xr-x | generic/tclStrToD.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index e5e863b..c47c5f8 100755 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStrToD.c,v 1.33 2008/03/13 17:14:19 dgp Exp $ + * RCS: @(#) $Id: tclStrToD.c,v 1.33.2.1 2008/04/01 20:12:01 andreas_kupries Exp $ * *---------------------------------------------------------------------- */ @@ -61,6 +61,13 @@ typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__))); # define ADJUST_FPU_CONTROL_WORD #endif +/* Sun ProC needs sunmath for rounding control on x86 like gcc above. + * + * + */ +#if defined(__sun) && defined(__i386) && !defined(__GNUC__) +#include <sunmath.h> +#endif /* * HP's PA_RISC architecture uses 7ff4000000000000 to represent a quiet NaN. * Everyone else uses 7ff8000000000000. (Why, HP, why?) @@ -1309,6 +1316,9 @@ MakeLowPrecisionDouble( _FPU_GETCW(oldRoundingMode); _FPU_SETCW(roundTo53Bits); #endif +#if defined(__sun) && defined(__i386) && !defined(__GNUC__) + ieee_flags("set","precision","double",NULL); +#endif /* * Test for the easy cases. @@ -1381,6 +1391,9 @@ MakeLowPrecisionDouble( #if defined(__GNUC__) && defined(__i386) _FPU_SETCW(oldRoundingMode); #endif +#if defined(__sun) && defined(__i386) && !defined(__GNUC__) + ieee_flags("clear","precision",NULL,NULL); +#endif return retval; } @@ -1427,6 +1440,9 @@ MakeHighPrecisionDouble( _FPU_GETCW(oldRoundingMode); _FPU_SETCW(roundTo53Bits); #endif +#if defined(__sun) && defined(__i386) && !defined(__GNUC__) + ieee_flags("set","precision","double",NULL); +#endif /* * Quick checks for over/underflow. @@ -1485,6 +1501,9 @@ MakeHighPrecisionDouble( #if defined(__GNUC__) && defined(__i386) _FPU_SETCW(oldRoundingMode); #endif +#if defined(__sun) && defined(__i386) && !defined(__GNUC__) + ieee_flags("clear","precision",NULL,NULL); +#endif return retval; } |