Skip to content

Commit

Permalink
[BZ #4586]
Browse files Browse the repository at this point in the history
	* sysdeps/i386/ldbl2mpn.c (__mpn_extract_long_double): Treat
	pseudo-zeros as zero.
	* sysdeps/x86_64/ldbl2mpn.c: New file.
	* sysdeps/ia64/ldbl2mpn.c: New file.
  • Loading branch information
Jakub Jelinek committed Jul 7, 2007
1 parent 4021079 commit 32c2052
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 2 deletions.
8 changes: 8 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
2007-06-06 Jakub Jelinek <jakub@redhat.com>

[BZ #4586]
* sysdeps/i386/ldbl2mpn.c (__mpn_extract_long_double): Treat
pseudo-zeros as zero.
* sysdeps/x86_64/ldbl2mpn.c: New file.
* sysdeps/ia64/ldbl2mpn.c: New file.

2007-07-01 Jakub Jelinek <jakub@redhat.com>

* elf/dl-sysdep.c (_dl_important_hwcaps): Add integer overflow check.
Expand Down
11 changes: 9 additions & 2 deletions sysdeps/i386/ldbl2mpn.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#include "gmp.h"
#include "gmp-impl.h"
#include "longlong.h"
#include "ieee754.h"
#include <ieee754.h>
#include <float.h>
#include <stdlib.h>

Expand All @@ -46,7 +46,7 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
#elif BITS_PER_MP_LIMB == 64
/* Hopefully the compiler will combine the two bitfield extracts
and this composition into just the original quadword extract. */
res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
#define N 1
#else
#error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
Expand Down Expand Up @@ -109,6 +109,13 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
}
}
}
else if (u.ieee.exponent < 0x7fff
#if N == 2
&& res_ptr[0] == 0
#endif
&& res_ptr[N - 1] == 0)
/* Pseudo zero. */
*expt = 0;

return N;
}
1 change: 1 addition & 0 deletions sysdeps/ia64/ldbl2mpn.c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "../i386/ldbl2mpn.c"
1 change: 1 addition & 0 deletions sysdeps/x86_64/ldbl2mpn.c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "../i386/ldbl2mpn.c"

0 comments on commit 32c2052

Please sign in to comment.