Return of the IVUV-preservation, now seems to be happy even
[p5sagit/p5-mst-13.2.git] / op.c
diff --git a/op.c b/op.c
index b6a9c7c..e6f7804 100644 (file)
--- a/op.c
+++ b/op.c
@@ -2249,13 +2249,11 @@ Perl_fold_constants(pTHX_ register OP *o)
        if ((SvFLAGS(sv) & (SVf_IOK|SVf_NOK|SVf_POK)) == SVf_NOK &&
            type != OP_NEGATE)
        {
-           IV iv = SvIV(sv);
-           if ((NV)iv == SvNV(sv)) {
-               SvREFCNT_dec(sv);
-               sv = newSViv(iv);
-           }
-           else
-               SvIOK_off(sv);                  /* undo SvIV() damage */
+#ifdef PERL_PRESERVE_IVUV
+           /* Only bother to attempt to fold to IV if
+              most operators will benefit  */
+           SvIV_please(sv);
+#endif
        }
        return newSVOP(OP_CONST, 0, sv);
     }