aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-05-11 04:42:22 +0000
committerRichard Stallman <rms@gnu.org>1993-05-11 04:42:22 +0000
commit56b03d5f895fbcfa6e5bd125542b3d24249ca939 (patch)
tree3b2353e3282207922f59e925f48062ca493d3cdf /gcc
parent6a25991dfbe2124c53172f9ef595f8908c7d0c60 (diff)
downloadgcc-56b03d5f895fbcfa6e5bd125542b3d24249ca939.zip
gcc-56b03d5f895fbcfa6e5bd125542b3d24249ca939.tar.gz
gcc-56b03d5f895fbcfa6e5bd125542b3d24249ca939.tar.bz2
(__floatdisf): Use DFtype for intermediate values.
From-SVN: r4421
Diffstat (limited to 'gcc')
-rw-r--r--gcc/libgcc2.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c
index 433627e..9dcccbe 100644
--- a/gcc/libgcc2.c
+++ b/gcc/libgcc2.c
@@ -1018,7 +1018,10 @@ SFtype
__floatdisf (u)
DItype u;
{
- SFtype f;
+ /* Do the calculation in DFmode
+ so that we don't lose any of the precision of the high word
+ while multiplying it. */
+ DFtype f;
SItype negate = 0;
if (u < 0)
@@ -1029,7 +1032,7 @@ __floatdisf (u)
f *= HIGH_HALFWORD_COEFF;
f += (USItype) (u & (HIGH_WORD_COEFF - 1));
- return (negate ? -f : f);
+ return (SFtype) (negate ? -f : f);
}
#endif