⛏️ index : buildtools.git

author Adrien Destugues <pulkomandy@gmail.com> 2014-10-14 17:58:00.0 +02:00:00
committer Adrien Destugues <pulkomandy@gmail.com> 2014-10-14 17:58:00.0 +02:00:00
commit
4319c0ca135067023f5c209280715355b2391842 [patch]
tree
5a0e5f381af63361ab06dbae9e4c2bfbba76a2e1
parent
c700a4fe642f3dad034b9735b4a780bd337b73c1
download
4319c0ca135067023f5c209280715355b2391842.tar.gz

gcc2: fix LDBL_MIN, LDBL_MAX, and LDBL_EPSILON

While the union trick used there gave the correct results, it made the
defines non-constants so they couldn't be used properly in some cases.

In particular, this makes the testsuite for gettext and some other GNU
packages fail as they explicitly test for these being constants.

Diff

 legacy/gcc/gcc/config/float-i386.h | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

diff --git a/legacy/gcc/gcc/config/float-i386.h b/legacy/gcc/gcc/config/float-i386.h
index 2d14f70..120f544 100644
--- a/legacy/gcc/gcc/config/float-i386.h
+++ b/legacy/gcc/gcc/config/float-i386.h
@@ -74,20 +74,13 @@
#define LDBL_DIG 18
   /* Difference between 1.0 and the minimum long double greater than 1.0 */
#undef LDBL_EPSILON
#ifndef __LDBL_UNION__
#define __LDBL_UNION__
union __convert_long_double {
  unsigned __convert_long_double_i[4];
  long double __convert_long_double_d;
};
#endif
#define LDBL_EPSILON (__extension__ ((union __convert_long_double) {__convert_long_double_i: {0x0, 0x80000000, 0x3fc0, 0x0}}).__convert_long_double_d)
#define LDBL_EPSILON 0x1p-63l
   /* Minimum int x such that FLT_RADIX**(x-1) is a normalised long double */
#undef LDBL_MIN_EXP
#define LDBL_MIN_EXP (-16381)
   /* Minimum normalised long double */
#undef LDBL_MIN
#define LDBL_MIN (__extension__ ((union __convert_long_double) {__convert_long_double_i: {0x0, 0x80000000, 0x1, 0x0}}).__convert_long_double_d)
#define LDBL_MIN 0x1p-16382l
   /* Minimum int x such that 10**x is a normalised long double */
#undef LDBL_MIN_10_EXP
#define LDBL_MIN_10_EXP (-4931)
@@ -96,7 +89,7 @@
#define LDBL_MAX_EXP 16384
   /* Maximum long double */
#undef LDBL_MAX
#define LDBL_MAX (__extension__ ((union __convert_long_double) {__convert_long_double_i: {0xffffffff, 0xffffffff, 0x107ffe, 0x0}}).__convert_long_double_d)
#define LDBL_MAX 0xfffffffffffffffp16320l
   /* Maximum int x such that 10**x is a representable long double */
#undef LDBL_MAX_10_EXP
#define LDBL_MAX_10_EXP 4932