diff options
author | Michael Meissner <meissner@cygnus.com> | 1998-06-01 09:15:23 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 1998-06-01 09:15:23 +0000 |
commit | 9224220fb392bc10bc60e394efc0bdea2c9d515b (patch) | |
tree | 2e53603bf495324017727f91a108062107f9c3d4 /gcc | |
parent | 36f5cda04b463beb4e8507f04b647850cdab6b20 (diff) | |
download | gcc-9224220fb392bc10bc60e394efc0bdea2c9d515b.zip gcc-9224220fb392bc10bc60e394efc0bdea2c9d515b.tar.gz gcc-9224220fb392bc10bc60e394efc0bdea2c9d515b.tar.bz2 |
Fix IEEE negative zero problems
From-SVN: r20169
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/fp-bit.c | 10 |
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 87f05f9..fac0310 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Mon Jun 1 12:14:28 1998 Michael Meissner <meissner@cygnus.com> + + * config/fp-bit.c (_fp{add,div}_parts): Return correct IEEE result + in the presence of IEEE negative 0's. + Sun May 31 16:11:41 1998 John Wehle (john@feith.com) * reload.c (find_reloads): Record the existing mode if diff --git a/gcc/config/fp-bit.c b/gcc/config/fp-bit.c index 4ff8e02..ca4e0c5 100644 --- a/gcc/config/fp-bit.c +++ b/gcc/config/fp-bit.c @@ -1,7 +1,7 @@ /* This is a software floating point library which can be used instead of the floating point routines in libgcc1.c for targets without hardware floating point. - Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the @@ -663,6 +663,12 @@ _fpadd_parts (fp_number_type * a, } if (iszero (b)) { + if (iszero (a)) + { + *tmp = *a; + tmp->sign = a->sign & b->sign; + return tmp; + } return a; } if (iszero (a)) @@ -1028,7 +1034,7 @@ _fpdiv_parts (fp_number_type * a, if (iszero (b)) { a->class = CLASS_INFINITY; - return b; + return a; } /* Calculate the mantissa by multiplying both 64bit numbers to get a |