diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a73f5dae512..06c5603687c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-10-19 Brad Lucier + + * 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 * i386.c (classify_argument): Pass MMX arguments in memory diff --git a/gcc/real.c b/gcc/real.c index e9fa3424b32..458a3c691b8 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -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;