[Fwd: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_strtod.c]
| From: | Stanislav Malyshev | Date: | Mon, 28 Jul 2008 19:38:52 +0000 |
| Subject: | [Fwd: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_strtod.c] | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-39415@lists.php.net to get a copy of this message | ||
Hi!
I wanted to ask people here about this patch. See history in http://bugs.php.net/bug.php?id=43487 but basically there's some gcc out there that miscompiles zend_strtod.c. We can fix it, probably at some marginal performance cost, but the question is - should we? It's pre-release compiler and not in the latest version.
So can anyone using non-prerelease gcc of any recent version - or non-gcc compiler even - reproduce this? Should we keep the change or just tell people "use working compiler"?
-------- Original Message --------
Subject: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_strtod.c
Date: Sun, 27 Jul 2008 11:29:59 -0000
From: Dmitry Stogov <dmitry@php.net>
To: zend-engine-cvs@lists.php.net
dmitry Sun Jul 27 11:29:59 2008 UTC
Modified files:
/ZendEngine2 zend_strtod.cLog: Fix for bug #43487 (Wrong conversion of float to string) http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_strtod.c?r1=1.37&r2=1.38&diff_format=u Index: ZendEngine2/zend_strtod.c diff -u ZendEngine2/zend_strtod.c:1.37 ZendEngine2/zend_strtod.c:1.38 --- ZendEngine2/zend_strtod.c:1.37 Wed Mar 26 14:23:02 2008 +++ ZendEngine2/zend_strtod.c Sun Jul 27 11:29:59 2008 @@ -89,7 +89,7 @@ * directly -- and assumed always to succeed. */ -/* $Id: zend_strtod.c,v 1.37 2008/03/26 14:23:02 scottmac Exp $ */ +/* $Id: zend_strtod.c,v 1.38 2008/07/27 11:29:59 dmitry Exp $ */ #include <zend.h> #include <unicode/utypes.h> @@ -991,9 +991,9 @@ static double ulp (double _x) /* {{{ */ { - _double x; + volatile _double x; register Long L; - _double a; + volatile _double a; value(x) = _x; L = (word0(x) & Exp_mask) - (P-1)*Exp_msk1; @@ -1035,7 +1035,7 @@ { ULong *xa, *xa0, w, y, z; int k; - _double d; + volatile _double d; #ifdef VAX ULong d0, d1; #else @@ -1101,7 +1101,7 @@ Bigint *b; int de, i, k; ULong *x, y, z; - _double d; + volatile _double d; #ifdef VAX ULong d0, d1; #endif @@ -1223,7 +1223,7 @@ static double ratio (Bigint *a, Bigint *b) /* {{{ */ { - _double da, db; + volatile _double da, db; int k, ka, kb; value(da) = b2d(a, &ka); @@ -1492,7 +1492,7 @@ Bigint *b, *b1, *delta, *mlo, *mhi, *S, *tmp; double ds; char *s, *s0; - _double d, d2, eps; + volatile _double d, d2, eps; value(d) = _d; @@ -2056,7 +2056,7 @@ e, e1, esign, i, j, k, nd, nd0, nf, nz, nz0, sign; CONST char *s, *s0, *s1; double aadj, aadj1, adj; - _double rv, rv0; + volatile _double rv, rv0; Long L; ULong y, z; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta, *tmp; -- Zend Engine CVS Mailing List (http://cvs.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- Stanislav Malyshev, Zend Software Architect stas@zend.com http://www.zend.com/ (408)253-8829 MSN: stas@zend.com