Re: com php-src: Fix for failing tests. gcc 4.8.3 would optimize away the assigment.: ext/mysqlnd/mysqlnd_ps_codec.c
| From: | Dmitry Stogov | 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
>>>>>
>>>>>
>>>>
>>>
>>