From 433d5d04bc405d51ebff7f14e4cbad9f3f88412a Mon Sep 17 00:00:00 2001 From: Brad Lucier Date: Sat, 19 Oct 2002 23:03:21 +0000 Subject: real.c (do_add): Fix 0+0 sign corner case. * real.c (do_add): Fix 0+0 sign corner case. (do_divide): Fix Inf/0 corner case. From-SVN: r58322 --- gcc/ChangeLog | 5 +++++ gcc/real.c | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a73f5da..06c5603 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 e9fa342..458a3c6 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; -- cgit v1.1