From: Nicholas Clark Date: Fri, 26 Oct 2001 22:52:17 +0000 (+0100) Subject: tweak divide X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=0c2ee62afab77e7bf13679995a82b5f27324fef7;p=p5sagit%2Fp5-mst-13.2.git tweak divide Message-Id: <20011026225217.B20275@plum.flirble.org> p4raw-id: //depot/perl@12700 --- diff --git a/pp.c b/pp.c index 51b0f30..1c323f7 100644 --- a/pp.c +++ b/pp.c @@ -1074,9 +1074,13 @@ PP(pp_divide) #else /* Otherwise we only attempt it if either or both operands would not be preserved by an NV. If both fit in NVs - we fall through to the NV divide code below. */ - && ((left > ((UV)1 << NV_PRESERVES_UV_BITS)) - || (right > ((UV)1 << NV_PRESERVES_UV_BITS))) + we fall through to the NV divide code below. However, + as left >= right to ensure integer result here, we know that + we can skip the test on the right operand - right big + enough not to be preserved can't get here unless left is + also too big. */ + + && (left > ((UV)1 << NV_PRESERVES_UV_BITS)) #endif ) { /* Integer division can't overflow, but it can be imprecise. */