This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Rely on C89 <float.h> defining DBL_DIG
authorAaron Crane <arc@cpan.org>
Fri, 13 Oct 2017 11:54:42 +0000 (13:54 +0200)
committerAaron Crane <arc@cpan.org>
Sat, 21 Oct 2017 15:53:02 +0000 (16:53 +0100)
I would like to be able to assume that we have long doubles, and therefore
that LDBL_DIG and friends are all defined too. But it seems that we may
still support some platforms which are otherwise C89, but don't have even
trivial long-double support; in particular, HP/UX 10 apparently uses a
struct of four uint32_t values as long double, but doesn't support other
bits, and confuses the Configure probe that looks for quadmath.

Configure
NetWare/config_H.wc
Porting/config_H
config_h.SH
perl.h
plan9/config.plan9
plan9/config_h.sample
uconfig.h
win32/config_H.ce
win32/config_H.gc
win32/config_H.vc

index f28f769..35099dc 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -424,7 +424,6 @@ d_ctermid_r=''
 ctime_r_proto=''
 d_ctime_r=''
 d_cuserid=''
-d_dbl_dig=''
 d_dbminitproto=''
 d_difftime=''
 d_dir_dd_fd=''
@@ -12318,27 +12317,6 @@ esac
 set cuserid d_cuserid
 eval $inlibc
 
-: See if number of significant digits in a double precision number is known
-echo " "
-$cat >dbl_dig.c <<EOM
-#include <limits.h>
-#include <float.h>
-#ifdef DBL_DIG
-printf("Contains DBL_DIG");
-#endif
-EOM
-$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
-if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
-       echo "DBL_DIG found." >&4
-       val="$define"
-else
-       echo "DBL_DIG NOT found." >&4
-       val="$undef"
-fi
-$rm -f dbl_dig.?
-set d_dbl_dig
-eval $setvar
-
 : see if dbm.h is available
 : see if dbmclose exists
 set dbmclose d_dbmclose
@@ -23936,7 +23914,6 @@ d_ctermid_r='$d_ctermid_r'
 d_ctime64='$d_ctime64'
 d_ctime_r='$d_ctime_r'
 d_cuserid='$d_cuserid'
-d_dbl_dig='$d_dbl_dig'
 d_dbminitproto='$d_dbminitproto'
 d_difftime64='$d_difftime64'
 d_difftime='$d_difftime'
index 5b198c6..6f2a13a 100644 (file)
  */
 /*#define HAS_CUSERID          /**/
 
-/* HAS_DBL_DIG:
- *     This symbol, if defined, indicates that this system's <float.h>
- *     or <limits.h> defines the symbol DBL_DIG, which is the number
- *     of significant digits in a double precision number.  If this
- *     symbol is not defined, a guess of 15 is usually pretty good.
- */
-#define HAS_DBL_DIG    /**/
-
 /* HAS_DIFFTIME:
  *     This symbol, if defined, indicates that the difftime routine is
  *     available.
index 2d8aa09..71aa202 100644 (file)
  */
 #define HAS_CUSERID            /**/
 
-/* HAS_DBL_DIG:
- *     This symbol, if defined, indicates that this system's <float.h>
- *     or <limits.h> defines the symbol DBL_DIG, which is the number
- *     of significant digits in a double precision number.  If this
- *     symbol is not defined, a guess of 15 is usually pretty good.
- */
-#define HAS_DBL_DIG    /* */
-
 /* HAS_DIFFTIME:
  *     This symbol, if defined, indicates that the difftime routine is
  *     available.
index 91ed7ea..ca35bad 100755 (executable)
@@ -1562,14 +1562,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define CSH "$full_csh"        /**/
 #endif
 
-/* HAS_DBL_DIG:
- *     This symbol, if defined, indicates that this system's <float.h>
- *     or <limits.h> defines the symbol DBL_DIG, which is the number
- *     of significant digits in a double precision number.  If this
- *     symbol is not defined, a guess of 15 is usually pretty good.
- */
-#$d_dbl_dig HAS_DBL_DIG        /**/
-
 /* HAS_DLADDR:
  *     This symbol, if defined, indicates that the dladdr() routine is
  *     available to query dynamic linker information for an address.
diff --git a/perl.h b/perl.h
index 293ce63..713caa3 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -1691,9 +1691,6 @@ typedef UVTYPE UV;
 */
 #include <limits.h>
 #include <float.h>
-#ifndef HAS_DBL_DIG
-#define DBL_DIG        15   /* A guess that works lots of places */
-#endif
 #endif
 
 #ifdef OVR_LDBL_DIG
index 5e9a9a9..0d42aae 100644 (file)
  */
 #define HAS_CUSERID            /**/
 
-/* HAS_DBL_DIG:
- *     This symbol, if defined, indicates that this system's <float.h>
- *     or <limits.h> defines the symbol DBL_DIG, which is the number
- *     of significant digits in a double precision number.  If this
- *     symbol is not defined, a guess of 15 is usually pretty good.
- */
-#define HAS_DBL_DIG    /* */
-
 /* HAS_DIFFTIME:
  *     This symbol, if defined, indicates that the difftime routine is
  *     available.
index bb63df7..77c8772 100644 (file)
  */
 #define HAS_CUSERID            /**/
 
-/* HAS_DBL_DIG:
- *     This symbol, if defined, indicates that this system's <float.h>
- *     or <limits.h> defines the symbol DBL_DIG, which is the number
- *     of significant digits in a double precision number.  If this
- *     symbol is not defined, a guess of 15 is usually pretty good.
- */
-#define HAS_DBL_DIG    /* */
-
 /* HAS_DIFFTIME:
  *     This symbol, if defined, indicates that the difftime routine is
  *     available.
index 084269d..9bceb3c 100644 (file)
--- a/uconfig.h
+++ b/uconfig.h
 #define CSH "" /**/
 #endif
 
-/* HAS_DBL_DIG:
- *     This symbol, if defined, indicates that this system's <float.h>
- *     or <limits.h> defines the symbol DBL_DIG, which is the number
- *     of significant digits in a double precision number.  If this
- *     symbol is not defined, a guess of 15 is usually pretty good.
- */
-/*#define HAS_DBL_DIG  / **/
-
 /* HAS_DLADDR:
  *     This symbol, if defined, indicates that the dladdr() routine is
  *     available to query dynamic linker information for an address.
 #endif
 
 /* Generated from:
- * 9100fef145843fcfa105bdc8111ca24ddb625d35d59b8a1eef427a60fd294ab3 config_h.SH
+ * 2d22094514b83bd987ad35ed557d99cd19f65621ee3870d0616b3c942e337faf config_h.SH
  * 4425baab434b1c600933b21fb798a0a73397dbac36deea56173e1ca5efc76582 uconfig.sh
  * ex: set ro: */
index e7e35d4..51ea1d7 100644 (file)
  */
 /*#define HAS_CUSERID          /**/
 
-/* HAS_DBL_DIG:
- *     This symbol, if defined, indicates that this system's <float.h>
- *     or <limits.h> defines the symbol DBL_DIG, which is the number
- *     of significant digits in a double precision number.  If this
- *     symbol is not defined, a guess of 15 is usually pretty good.
- */
-#define HAS_DBL_DIG    /**/
-
 /* HAS_DIFFTIME:
  *     This symbol, if defined, indicates that the difftime routine is
  *     available.
index 6c4b3ef..985ea49 100644 (file)
  */
 /*#define HAS_CUSERID          / **/
 
-/* HAS_DBL_DIG:
- *     This symbol, if defined, indicates that this system's <float.h>
- *     or <limits.h> defines the symbol DBL_DIG, which is the number
- *     of significant digits in a double precision number.  If this
- *     symbol is not defined, a guess of 15 is usually pretty good.
- */
-#define HAS_DBL_DIG    /**/
-
 /* HAS_DIFFTIME:
  *     This symbol, if defined, indicates that the difftime routine is
  *     available.
index 696cbf6..e72b436 100644 (file)
  */
 /*#define HAS_CUSERID          / **/
 
-/* HAS_DBL_DIG:
- *     This symbol, if defined, indicates that this system's <float.h>
- *     or <limits.h> defines the symbol DBL_DIG, which is the number
- *     of significant digits in a double precision number.  If this
- *     symbol is not defined, a guess of 15 is usually pretty good.
- */
-#define HAS_DBL_DIG    /**/
-
 /* HAS_DIFFTIME:
  *     This symbol, if defined, indicates that the difftime routine is
  *     available.