RFR: 8144484: assert(no_dead_loop) failed: dead loop detected
Vladimir Kozlov
vladimir.kozlov at oracle.com
Thu Feb 2 17:00:59 UTC 2017
On 2/2/17 8:59 AM, Rahul Raghavan wrote:
> Hi,
>
> Thank you Vladimir for the review comments.
> Understood your point and agree that for the reported scenario
> bailing out early and delaying the optimization should be the fix.
>
> Please review updated <webrev.02> - http://cr.openjdk.java.net/~rraghavan/8144484/webrev.02/
Good.
Thanks,
Vladimir
>
> Confirmed no issues with testing
> (8144484 test, jprt -testset hotspot; so far no issues with RBT Pre-integration testing in progress )
>
> Thanks,
> Rahul
>
>> -----Original Message-----
>> From: Vladimir Kozlov
>> Sent: Wednesday, February 01, 2017 2:32 PM
>> To: hotspot-compiler-dev at openjdk.java.net
>> Subject: Re: RFR: 8144484: assert(no_dead_loop) failed: dead loop detected
>>
>> On 2/1/17 12:19 AM, Vladimir Kozlov wrote:
>>> Sorry, I don't like this fix.
>>>
>>> Based on your evaluation one control path is dead (top) and it will be optimized out later. It was unfortunate that Phi
>>> node was processed first. Change graph (split through MergeMem) is dangerous in this state of graph.
>>>
>>> I would suggest to bailout early:
>>>
>>> 1886 if (progress == NULL && can_reshape && type() == Type::MEMORY) {
>>> 1887 // see if this phi should be sliced
>>> 1888 uint merge_width = 0;
>>> 1889 bool saw_self = false;
>>> 1890 for( uint i=1; i<req(); ++i ) {// For all paths in
>>> 1891 Node *ii = in(i);
>>>
>>> + // TOP inputs should not be counted as safe inputs because if the
>>> + // Phi references itself through all other inputs then splitting the
>>> + // Phi through memory merges would create dead loop at later stage.
>>> + if (ii == top) {
>>> + return top; // Delay optimization until graph is cleaned.
>>
>> Sorry, wrong return value. Should be return NULL;
>>
>>> + }
>>>
>>> 1892 if (ii->is_MergeMem()) {
>>> 1893 MergeMemNode* n = ii->as_MergeMem();
>>>
>>> Thanks,
>>> Vladimir
>>>
More information about the hotspot-compiler-dev
mailing list