summaryrefslogtreecommitdiff
path: root/pp.c
diff options
context:
space:
mode:
authorRick Delaney <rick@consumercontact.com>2007-10-21 12:13:51 -0400
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2007-10-21 20:19:08 +0000
commit4efa5a16764cb3324df705f9698e0a426a289960 (patch)
tree221950415ba9b9791b5c25ecd945b6d5514188d0 /pp.c
parent597bb945dc11aded932cd62a17c37489ffba96a2 (diff)
downloadperl-4efa5a16764cb3324df705f9698e0a426a289960.tar.gz
Re: overload64.t failures
Message-ID: <20071021201351.GY29047@bort.ca> p4raw-id: //depot/perl@32157
Diffstat (limited to 'pp.c')
-rw-r--r--pp.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/pp.c b/pp.c
index cd04198351..6d69589937 100644
--- a/pp.c
+++ b/pp.c
@@ -1040,7 +1040,9 @@ PP(pp_pow)
float_it:
#endif
{
- dPOPTOPnnrl;
+ NV right = SvNV(svr);
+ NV left = SvNV(svl);
+ (void)POPs;
#if defined(USE_LONG_DOUBLE) && defined(HAS_AIX_POWL_NEG_BASE_BUG)
/*
@@ -1206,7 +1208,9 @@ PP(pp_multiply)
} /* SvIOK(svr) */
#endif
{
- dPOPTOPnnrl;
+ NV right = SvNV(svr);
+ NV left = SvNV(svl);
+ (void)POPs;
SETn( left * right );
RETURN;
}
@@ -1322,7 +1326,9 @@ PP(pp_divide)
} /* right wasn't SvIOK */
#endif /* PERL_TRY_UV_DIVIDE */
{
- dPOPPOPnnrl;
+ NV right = SvNV(svr);
+ NV left = SvNV(svl);
+ (void)POPs;(void)POPs;
#if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
if (! Perl_isnan(right) && right == 0.0)
#else
@@ -1362,10 +1368,9 @@ PP(pp_modulo)
right = -biv;
}
}
- sp--;
}
else {
- dright = POPn;
+ dright = SvNV(svr);
right_neg = dright < 0;
if (right_neg)
dright = -dright;
@@ -1376,6 +1381,7 @@ PP(pp_modulo)
use_double = TRUE;
}
}
+ sp--;
/* At this point use_double is only true if right is out of range for
a UV. In range NV has been rounded down to nearest UV and
@@ -1396,11 +1402,10 @@ PP(pp_modulo)
left = -aiv;
}
}
- sp--;
}
}
else {
- dleft = POPn;
+ dleft = SvNV(svl);
left_neg = dleft < 0;
if (left_neg)
dleft = -dleft;
@@ -1428,6 +1433,7 @@ PP(pp_modulo)
}
}
}
+ sp--;
if (use_double) {
NV dans;
@@ -1699,13 +1705,15 @@ PP(pp_subtract)
}
#endif
{
- dPOPnv;
+ NV value = SvNV(svr);
+ (void)POPs;
+
if (!useleft) {
/* left operand is undef, treat as zero - value */
SETn(-value);
RETURN;
}
- SETn( TOPn - value );
+ SETn( SvNV(svl) - value );
RETURN;
}
}