changeset 17686:f147236e9fda

ftoastr: work around compiler bug in IBM xlc 12.1 * lib/ftoastr.h (_GL_FLT_PREC_BOUND, _GL_DBL_PREC_BOUND) (_GL_LDBL_PREC_BOUND): Make these macros, not enums, to work around a compiler bug in IBM xlc 12.1.0.0: it complains '"ftoastr.c", line 80.37: 1506-045 (S) Undeclared identifier _GL_FLT_PREC_BOUND.'
author Paul Eggert <eggert@cs.ucla.edu>
date Fri, 30 May 2014 09:42:30 -0700
parents 15fb9001e2b3
children c327ccbc6568
files ChangeLog lib/ftoastr.h
diffstat 2 files changed, 18 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri May 30 08:47:43 2014 -0400
+++ b/ChangeLog	Fri May 30 09:42:30 2014 -0700
@@ -1,3 +1,12 @@
+2014-05-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+	ftoastr: work around compiler bug in IBM xlc 12.1
+	* lib/ftoastr.h (_GL_FLT_PREC_BOUND, _GL_DBL_PREC_BOUND)
+	(_GL_LDBL_PREC_BOUND): Make these macros, not enums, to work
+	around a compiler bug in IBM xlc 12.1.0.0: it complains
+	'"ftoastr.c", line 80.37: 1506-045 (S) Undeclared identifier
+	_GL_FLT_PREC_BOUND.'
+
 2014-05-30  Kieran Colford  <colfordk@gmail.com>
 
 	valgrind-tests: fixed misleading help message
--- a/lib/ftoastr.h	Fri May 30 08:47:43 2014 -0400
+++ b/lib/ftoastr.h	Fri May 30 09:42:30 2014 -0700
@@ -72,12 +72,13 @@
 
 /* _GL_FLT_PREC_BOUND is an upper bound on the precision needed to
    represent a float value without losing information.  Likewise for
-   _GL_DBL_PREC_BOUND and double, and _GL_LDBL_PREC_BOUND and long double.  */
+   _GL_DBL_PREC_BOUND and double, and _GL_LDBL_PREC_BOUND and long double.
+   These are macros, not enums, to work around a bug in IBM xlc 12.1.  */
 
 #if FLT_RADIX == 10 /* decimal floating point */
- enum {  _GL_FLT_PREC_BOUND =  FLT_MANT_DIG };
- enum {  _GL_DBL_PREC_BOUND =  DBL_MANT_DIG };
- enum { _GL_LDBL_PREC_BOUND = LDBL_MANT_DIG };
+# define  _GL_FLT_PREC_BOUND  FLT_MANT_DIG
+# define  _GL_DBL_PREC_BOUND  DBL_MANT_DIG
+# define _GL_LDBL_PREC_BOUND LDBL_MANT_DIG
 #else
 
 /* An upper bound on the number of bits needed to represent a single
@@ -95,13 +96,13 @@
    DIG digits.  For why the "+ 1" is needed, see "Binary to Decimal
    Conversion" in David Goldberg's paper "What Every Computer
    Scientist Should Know About Floating-Point Arithmetic"
-   <http://docs.sun.com/source/806-3568/ncg_goldberg.html>.  */
+   <http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html>.  */
 # define _GL_FLOAT_PREC_BOUND(dig) \
    (INT_BITS_STRLEN_BOUND ((dig) * _GL_FLOAT_DIG_BITS_BOUND) + 1)
 
- enum {  _GL_FLT_PREC_BOUND = _GL_FLOAT_PREC_BOUND ( FLT_MANT_DIG) };
- enum {  _GL_DBL_PREC_BOUND = _GL_FLOAT_PREC_BOUND ( DBL_MANT_DIG) };
- enum { _GL_LDBL_PREC_BOUND = _GL_FLOAT_PREC_BOUND (LDBL_MANT_DIG) };
+# define  _GL_FLT_PREC_BOUND _GL_FLOAT_PREC_BOUND ( FLT_MANT_DIG)
+# define  _GL_DBL_PREC_BOUND _GL_FLOAT_PREC_BOUND ( DBL_MANT_DIG)
+# define _GL_LDBL_PREC_BOUND _GL_FLOAT_PREC_BOUND (LDBL_MANT_DIG)
 #endif