Re: com php-src: Fix for failing tests. gcc 4.8.3 would optimize away the assigment.: ext/mysqlnd/mysqlnd_ps_codec.c

From: Date: Thu, 08 Jan 2015 17:41:13 +0000
Subject: Re: com php-src: Fix for failing tests. gcc 4.8.3 would optimize away the assigment.: ext/mysqlnd/mysqlnd_ps_codec.c
References: 1 2 3 4 5  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-84033@lists.php.net to get a copy of this message
yeah, the problem is fixed. Thanks. Dmitry. On Tue, Jan 6, 2015 at 11:49 PM, Dmitry Stogov <dmitry@zend.com> wrote: > Hi, > > I'm also on holidays... > I may take a look after January 12, but I think this must not make any > problems. > > Thanks. Dmitry. > On Jan 6, 2015 11:00 AM, "Keyur Govande" <kgovande@gmail.com> wrote: > >> >> >> On Sat, Dec 27, 2014 at 2:17 AM, Keyur Govande <kgovande@gmail.com> >> wrote: >> >>> >>> >>> On Fri, Dec 26, 2014 at 9:52 PM, Dmitry Stogov <dmitry@zend.com> wrote: >>> >>>> This patch increases the binary size on 2MB (20%) :( >>>> >>>> # without patch >>>> >>>> $ size sapi/cli/php >>>> text data bss dec hex filename >>>> 11243874 55868 134140 11433882 ae779a sapi/cli/php >>>> >>>> # with patch >>>> >>>> $ size sapi/cli/php >>>> text data bss dec hex filename >>>> 13398084 55888 134148 13588120 cf5698 sapi/cli/php >>>> >>>> It's probably better not to use dec32. >>>> >>> >>> Ahh :( >>> >>> dec32 is 3 orders of magnitude faster than the alternative (convert >>> float to a string via fcvt or gcvt, and then to double via strtod). >>> >>> That said though, I will make dec32 optional via a configure option >>> defaulted to off and make the slow path the default. This will bring the >>> Mysqli implementation in-line with what PDO-libmysqlclient does and fix the >>> slight discrepancy in precision that arises due to that. >>> >>> dec32 is more precise, for example 3.141593 vs. 3.14159 with >>> PDO-libmysqlclient when pi is stored in a Mysql 4 byte float column. >>> >>> I should have a pull request on Github in a day or two. >>> >> >> Sorry for the delay, the holidays intruded on my plans. >> >> The pull request is up here: >> https://github.com/php/php-src/pull/983 and >> all tests pass on Windows and Linux (with gcc 4.8.3). I'll merge it in in a >> few days if no concerns are raised. >> >> Thanks and Happy New Year! >> Keyur. >> >> >>> >>>> Thanks. Dmitry. >>>> >>>> On Fri, Dec 26, 2014 at 11:36 PM, Keyur Govande <keyur@php.net> wrote: >>>> >>>>> Commit: aa192f57c9d867ab3d7be69c7f269cfd7a10d14f >>>>> Author: Keyur Govande <keyur@php.net> Fri, 26 Dec 2014 >>>>> 20:36:19 +0000 >>>>> Parents: 80260bcfa667bf25c65264b129f08a35059436a0 >>>>> Branches: PHP-5.5 PHP-5.6 master >>>>> >>>>> Link: >>>>> >>>>> http://git.php.net/?p=php-src.git;a=commitdiff;h=aa192f57c9d867ab3d7be69c7f269cfd7a10d14f >>>>> >>>>> Log: >>>>> Fix for failing tests. gcc 4.8.3 would optimize away the assigment. >>>>> >>>>> Changed paths: >>>>> M ext/mysqlnd/mysqlnd_ps_codec.c >>>>> >>>>> >>>>> Diff: >>>>> diff --git a/ext/mysqlnd/mysqlnd_ps_codec.c >>>>> b/ext/mysqlnd/mysqlnd_ps_codec.c >>>>> index d960912..a57ff5d 100644 >>>>> --- a/ext/mysqlnd/mysqlnd_ps_codec.c >>>>> +++ b/ext/mysqlnd/mysqlnd_ps_codec.c >>>>> @@ -195,7 +195,8 @@ ps_fetch_float(zval * zv, const MYSQLND_FIELD * >>>>> const field, unsigned int pack_l >>>>> #ifdef HAVE_DECIMAL_FP_SUPPORT >>>>> { >>>>> typedef float dec32 __attribute__((mode(SD))); >>>>> - dec32 d32val = fval; >>>>> + /* volatile so the compiler will not optimize away the >>>>> conversion */ >>>>> + volatile dec32 d32val = fval; >>>>> >>>>> /* The following cast is guaranteed to do the right >>>>> thing */ >>>>> dval = (double) d32val; >>>>> >>>>> >>>>> -- >>>>> PHP CVS Mailing List (http://www.php.net/) >>>>> To unsubscribe, visit: >>>>> http://www.php.net/unsub.php >>>>> >>>>> >>>> >>> >>

« previous php.cvs (#84033) next »