This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Proper IEEE overflow semantics for VMS.
authorCraig A. Berry <craigberry@mac.com>
Sun, 23 Dec 2012 19:42:47 +0000 (13:42 -0600)
committerCraig A. Berry <craigberry@mac.com>
Sun, 23 Dec 2012 19:42:47 +0000 (13:42 -0600)
Way back in 67597c89125e7e14 we misspelled _IEEE_FP as __IEEE_FP,
with a spurious leading underscore.  Which I then copied and
pasted into pp_pack.c in baf3cf9c09c529.  This means that on
Alpha and Itanium systems with the default selection of IEEE
floating point, we've actually (for the last decade!) been
using a workaround intended for VAX or Alpha and Itanium builds
that have explicitly selected VAX-compatible floating point
formats.  Oh well.

numeric.c
pp_pack.c

index eda05d9..e96252a 100644 (file)
--- a/numeric.c
+++ b/numeric.c
@@ -803,7 +803,7 @@ S_mulexp10(NV value, I32 exponent)
      * a hammer.  Therefore we need to catch potential overflows before
      * it's too late. */
 
-#if ((defined(VMS) && !defined(__IEEE_FP)) || defined(_UNICOS)) && defined(NV_MAX_10_EXP)
+#if ((defined(VMS) && !defined(_IEEE_FP)) || defined(_UNICOS)) && defined(NV_MAX_10_EXP)
     STMT_START {
        const NV exp_v = log10(value);
        if (exponent >= NV_MAX_10_EXP || exponent + exp_v >= NV_MAX_10_EXP)
index 321a47d..50d4a63 100644 (file)
--- a/pp_pack.c
+++ b/pp_pack.c
@@ -3115,7 +3115,7 @@ extern const float _float_constants[];
                else afloat = (float) anv;
 }
 #else /* __VOS__ */
-# if defined(VMS) && !defined(__IEEE_FP)
+# if defined(VMS) && !defined(_IEEE_FP)
                /* IEEE fp overflow shenanigans are unavailable on VAX and optional
                 * on Alpha; fake it if we don't have them.
                 */
@@ -3154,7 +3154,7 @@ extern const double _double_constants[];
                else adouble = (double) anv;
 }
 #else /* __VOS__ */
-# if defined(VMS) && !defined(__IEEE_FP)
+# if defined(VMS) && !defined(_IEEE_FP)
                /* IEEE fp overflow shenanigans are unavailable on VAX and optional
                 * on Alpha; fake it if we don't have them.
                 */