(Please) Re: Request for review (S): 6833879 Assigning positive zero is ignored when old value is negative zero
Tom Rodriguez
Thomas.Rodriguez at Sun.COM
Mon May 4 16:23:27 PDT 2009
It feels a bit extreme but I don't see how we can ignore that it
produces the wrong result dynamically.
tom
On May 4, 2009, at 2:44 PM, Changpeng Fang wrote:
> On 05/01/09 11:30, Changpeng Fang wrote:
>
> http://cr.openjdk.java.net/~cfang/6833879/webrev.01/
>>
>> I have updated the fix to disable the identity optimization for all
>> floating point
>> comparison (i.e., is_cmove_id always returns NULL for flaot and
>> double).
>>
>>
>
> Thanks,
>
> Changpeng
>
>
>> Thanks,
>>
>> Changpeng
>>
>>
>>
>> On 04/29/09 12:32, Tom Rodriguez wrote:
>>> BTW, you can use TypeF::ZERO and TypeD::ZERO to check for positive
>>> zero constants instead of breaking them down, as in phase->type(f)
>>> == TypeF::ZERO. I don't think this fix is sufficient. It has the
>>> same problem for "if (v == -0.0f) v == -0.0f" and as you said
>>> originally it won't work right dynamically either.
>>>
>>> tom
>>>
>>> On Apr 29, 2009, at 10:59 AM, Changpeng Fang wrote:
>>>
>>>> http://cr.openjdk.java.net/~cfang/6833879/webrev.00/
>>>>
>>>> Problem:
>>>> For the following case:
>>>> public static double normalize(float v) {
>>>> if (v == 0.0f) v = 0.0f;
>>>> return v;
>>>> }
>>>> If -0.0 is passed, 0.0 is expected to be returned (it is the case
>>>> for the interpreter). However,
>>>> PhiNode::Identity optimized away the "if and assignment"
>>>> statement and the server vm
>>>> return -0.0.
>>>>
>>>> Proposed Solution:
>>>> Don't perform this kind of identity optimization if either true
>>>> path or false path is constant
>>>> 0.0 or (-0.0)
>>>>
>>>> Open Issue:
>>>> When the true path or false path is not constant, it may still be
>>>> 0.0 (-0.0) at run time.
>>>> Do we have to turn off this identity optimization completely for
>>>> float and double (except
>>>> for constant non-zeros)?
>>>> Tests: Passed the test case in the CR report.
>>>>
>>>> Thanks,
>>>>
>>>> Changpeng
>>>
>>
>>
>
More information about the hotspot-compiler-dev
mailing list