aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-09-23 04:26:40 -0700
committerRichard Henderson <rth@gcc.gnu.org>2002-09-23 04:26:40 -0700
commita520ff954b20bf6ce376b512867b8d4865708c9d (patch)
tree5322c133c0c23606e6e772dc8dde12ffbf740a96 /gcc
parent6ad8f94953f01ad3463872b57343093a13d29b4b (diff)
downloadgcc-a520ff954b20bf6ce376b512867b8d4865708c9d.zip
gcc-a520ff954b20bf6ce376b512867b8d4865708c9d.tar.gz
gcc-a520ff954b20bf6ce376b512867b8d4865708c9d.tar.bz2
* real.c (do_multiply): Normalize U before addition.
From-SVN: r57435
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/real.c6
2 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fd6d5ad4..64a4801 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2002-09-23 Richard Henderson <rth@redhat.com>
+
+ * real.c (do_multiply): Normalize U before addition.
+
2002-09-23 Mark Mitchell <mark@codesourcery.com>
* c-common.c (flag_abi_version): New variable.
diff --git a/gcc/real.c b/gcc/real.c
index 1f73f9d..ad0b160 100644
--- a/gcc/real.c
+++ b/gcc/real.c
@@ -741,9 +741,6 @@ do_multiply (r, a, b)
rr = r;
get_zero (rr, 0);
- u.class = rvc_normal;
- u.sign = 0;
-
/* Collect all the partial products. Since we don't have sure access
to a widening multiply, we split each long into two half-words.
@@ -784,6 +781,8 @@ do_multiply (r, a, b)
/* Would underflow to zero, which we shouldn't bother adding. */
continue;
+ u.class = rvc_normal;
+ u.sign = 0;
u.exp = exp;
for (k = j; k < SIGSZ * 2; k += 2)
@@ -797,6 +796,7 @@ do_multiply (r, a, b)
u.sig[k / 2] = ai * bi;
}
+ normalize (&u);
do_add (rr, rr, &u, 0);
}
}