From a520ff954b20bf6ce376b512867b8d4865708c9d Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 23 Sep 2002 04:26:40 -0700 Subject: [PATCH] * real.c (do_multiply): Normalize U before addition. From-SVN: r57435 --- gcc/ChangeLog | 4 ++++ gcc/real.c | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fd6d5ad45f5..64a48018ca6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2002-09-23 Richard Henderson + + * real.c (do_multiply): Normalize U before addition. + 2002-09-23 Mark Mitchell * c-common.c (flag_abi_version): New variable. diff --git a/gcc/real.c b/gcc/real.c index 1f73f9de2e9..ad0b160f3d5 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); } } -- 2.30.2