RFR (XS): 8151988: Fix for bug - Hotspot deoptimizes div/mod pair usage

Vladimir Kozlov vladimir.kozlov at oracle.com
Wed Aug 3 23:10:15 UTC 2016


Hi Vivek,

The problem is not that DivModINode does not have control edge set but that Div and Mod nodes have different setting and have to be ordered according their uses and 0 checks of their arguments.

Please, find where ModI node's control edge is replaced with NULL. May be next in ModINode::Ideal()

   // Check for useless control input
   // Check for excluding mod-zero case
   if( in(0) && (ti->_hi < 0 || ti->_lo > 0) ) {
     set_req(0, NULL);        // Yank control input
     return this;
   }

Try to comment it.

Thanks,
Vladimir

On 8/1/16 11:49 AM, Deshpande, Vivek R wrote:
> Hi Vladimir
>
> I have fixed the problem of null control edge getting generated for DivMod node in this later patch.
> Could you please take a look at the webrev at this location:
> http://cr.openjdk.java.net/~vdeshpande/8151988/webrev.01/
>
> Regards,
> Vivek
>
> -----Original Message-----
> From: Vladimir Kozlov [mailto:vladimir.kozlov at oracle.com]
> Sent: Wednesday, July 27, 2016 7:54 PM
> To: Deshpande, Vivek R; hotspot compiler
> Cc: Viswanathan, Sandhya
> Subject: Re: RFR (XS): 8151988: Fix for bug - Hotspot deoptimizes div/mod pair usage
>
> If control edge is different (one of them not NULL) I don't think we can replace Div and Mod nodes.
> Control edge enforce the order of execution of data nodes. DivModI node takes control from ModI node which can put DivModI below users of DivI node. So you will have shceduler problem.
>
> So why control edge is NULL for DivI (or ModI) node? Control edge should come from zero_check_int() which is called for ModI and DivI nodes.
>
> Thanks,
> Vladimir
>
> On 7/27/16 5:56 PM, dean.long at oracle.com wrote:
>> How about this?  I think it gives the same result, but with fewer tests
>>
>>                if (use->in(j) != in(j) &&(j != 0 || (use->in(j) != NULL && in(j) != NULL)) {
>>                  break;
>>                }
>>
>>
>> dl
>>
>> On 7/27/16 4:14 PM, Deshpande, Vivek R wrote:
>>>
>>> Hi
>>>
>>> I have resolved the bug and fix for the same is here.
>>>
>>> http://cr.openjdk.java.net/~vdeshpande/8151988/webrev.00/
>>>
>>> I have also updated the JBS entry.
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8151988
>>>
>>> Would you please review it.
>>>
>>> Regards,
>>>
>>> Vivek
>>>
>>


More information about the hotspot-compiler-dev mailing list