real.c (do_add): Fix 0+0 sign corner case.
authorBrad Lucier <lucier@math.purdue.edu>
Sat, 19 Oct 2002 23:03:21 +0000 (23:03 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Sat, 19 Oct 2002 23:03:21 +0000 (16:03 -0700)
        * real.c (do_add): Fix 0+0 sign corner case.
        (do_divide): Fix Inf/0 corner case.

From-SVN: r58322

gcc/ChangeLog
gcc/real.c

index a73f5dae512f3c039072d63c2cbf33f75e8f8229..06c5603687cc5c84a28fa1ecaf973aba93289530 100644 (file)
@@ -1,3 +1,8 @@
+2002-10-19  Brad Lucier  <lucier@math.purdue.edu>
+
+       * real.c (do_add): Fix 0+0 sign corner case.
+       (do_divide): Fix Inf/0 corner case.
+
 Sun Oct 20 00:31:31 CEST 2002  Jan Hubicka  <jh@suse.cz>
 
        * i386.c (classify_argument): Pass MMX arguments in memory
index e9fa3424b322b3fac9e11b7d804e89ccc4d7cd72..458a3c691b84233ba32ca0e74edbd6d3916861ec 100644 (file)
@@ -578,8 +578,8 @@ do_add (r, a, b, subtract_p)
   switch (CLASS2 (a->class, b->class))
     {
     case CLASS2 (rvc_zero, rvc_zero):
-      /* +-0 +/- +-0 = +0.  */
-      get_zero (r, 0);
+      /* -0 + -0 = -0, -0 - +0 = -0; all other cases yield +0.  */
+      get_zero (r, sign & !subtract_p);
       return;
 
     case CLASS2 (rvc_zero, rvc_normal):
@@ -838,8 +838,6 @@ do_divide (r, a, b)
     {
     case CLASS2 (rvc_zero, rvc_zero):
       /* 0 / 0 = NaN.  */
-    case CLASS2 (rvc_inf, rvc_zero):
-      /* Inf / 0 = NaN.  */
     case CLASS2 (rvc_inf, rvc_inf):
       /* Inf / Inf = NaN.  */
       get_canonical_qnan (r, sign);
@@ -856,6 +854,8 @@ do_divide (r, a, b)
 
     case CLASS2 (rvc_normal, rvc_zero):
       /* R / 0 = Inf.  */
+    case CLASS2 (rvc_inf, rvc_zero):
+      /* Inf / 0 = Inf.  */
       get_inf (r, sign);
       return;