diff options
Diffstat (limited to 'contrib/gcc/real.c')
-rw-r--r-- | contrib/gcc/real.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/contrib/gcc/real.c b/contrib/gcc/real.c index 11927ee..843725e 100644 --- a/contrib/gcc/real.c +++ b/contrib/gcc/real.c @@ -640,6 +640,9 @@ do_add (REAL_VALUE_TYPE *r, const REAL_VALUE_TYPE *a, r->class = rvc_normal; r->sign = sign; r->exp = exp; + /* Zero out the remaining fields. */ + r->signalling = 0; + r->canonical = 0; /* Re-normalize the result. */ normalize (r); @@ -1960,6 +1963,7 @@ real_from_integer (REAL_VALUE_TYPE *r, enum machine_mode mode, get_zero (r, 0); else { + memset (r, 0, sizeof (*r)); r->class = rvc_normal; r->sign = high < 0 && !unsigned_p; r->exp = 2 * HOST_BITS_PER_WIDE_INT; @@ -1977,7 +1981,6 @@ real_from_integer (REAL_VALUE_TYPE *r, enum machine_mode mode, { r->sig[SIGSZ-1] = high; r->sig[SIGSZ-2] = low; - memset (r->sig, 0, sizeof(long)*(SIGSZ-2)); } else if (HOST_BITS_PER_LONG*2 == HOST_BITS_PER_WIDE_INT) { @@ -1985,8 +1988,6 @@ real_from_integer (REAL_VALUE_TYPE *r, enum machine_mode mode, r->sig[SIGSZ-2] = high; r->sig[SIGSZ-3] = low >> (HOST_BITS_PER_LONG - 1) >> 1; r->sig[SIGSZ-4] = low; - if (SIGSZ > 4) - memset (r->sig, 0, sizeof(long)*(SIGSZ-4)); } else abort (); |