real.c (do_add): Initialize signalling and canonical members.
authorJ"orn Rennecke <joern.rennecke@st.com>
Tue, 25 Jan 2005 20:21:59 +0000 (20:21 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Tue, 25 Jan 2005 20:21:59 +0000 (20:21 +0000)
* real.c (do_add): Initialize signalling and canonical members.

* real.c (real_from_integer): Zero out destination.

From-SVN: r94228

gcc/ChangeLog
gcc/real.c

index f7cf25d1fc5c23f9b905b64102c55ff4a302870e..8d3d43a031e0cab2410091ab6a15e8eff886bcd8 100644 (file)
@@ -1,3 +1,9 @@
+2005-01-25  J"orn Rennecke <joern.rennecke@st.com>
+
+       * real.c (do_add): Initialize signalling and canonical members.
+
+       * real.c (real_from_integer): Zero out destination.
+
 2005-01-18  Jan Hubicka  <jh@suse.cz>
 
        PR tree-optimize/19337
index a748b87b33a82fa2317aacaeb6587c2fd74f0ba9..7aceb3df0388a866c1c7063560f7c328337fa3b9 100644 (file)
@@ -640,6 +640,9 @@ do_add (REAL_VALUE_TYPE *r, const REAL_VALUE_TYPE *a,
   r->cl = rvc_normal;
   r->sign = sign;
   SET_REAL_EXP (r, exp);
+  /* Zero out the remaining fields.  */
+  r->signalling = 0;
+  r->canonical = 0;
 
   /* Re-normalize the result.  */
   normalize (r);
@@ -1957,6 +1960,7 @@ real_from_integer (REAL_VALUE_TYPE *r, enum machine_mode mode,
     get_zero (r, 0);
   else
     {
+      memset (r, 0, sizeof (*r));
       r->cl = rvc_normal;
       r->sign = high < 0 && !unsigned_p;
       SET_REAL_EXP (r, 2 * HOST_BITS_PER_WIDE_INT);
@@ -1974,7 +1978,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
        {
@@ -1983,8 +1986,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));
        }
 
       normalize (r);