[16] RFR(S): C2: assert(no_dead_loop) failed: dead loop detected

Christian Hagedorn christian.hagedorn at oracle.com
Fri Jul 31 05:56:03 UTC 2020


Hi Vladimir

Thanks a lot for your review!

Best regards,
Christian

On 30.07.20 19:17, Vladimir Kozlov wrote:
> Very good.
> 
> Thanks,
> Vladimir K
> 
> On 7/30/20 6:15 AM, Christian Hagedorn wrote:
>> Hi
>>
>> Please review the following patch:
>> https://bugs.openjdk.java.net/browse/JDK-8249605
>> http://cr.openjdk.java.net/~chagedorn/8249605/webrev.00/
>>
>> There is a dead memory loop detected during IGVN. In the testcase, 
>> many nodes are dying during IGVN because they are not reachable 
>> anymore. In this process, a (not yet dead) memory phi node (150 Phi) 
>> with two inputs is processed (see [1]):
>> (1) 289 MergeMem, whose base memory is 150 Phi and has one slice for 
>> 274 StoreD which is again an output of 150 Phi
>> (2) 356 MergeMem, whose base memory is top (i.e. dead and would be 
>> removed when IGVN processes this node)
>>
>> In PhiNode::Ideal, we check if a phi node is part of a dead loop where 
>> all its inputs reference itself over a MergeMemNode input whose base 
>> memory is the phi node itself again [2]. However, in this check we do 
>> not account for dead MergeMemNodes (like the input 356 MergeMem of 150 
>> Phi). Therefore, we do not return top and apply the optimization [3] 
>> to replace 150 Phi by a new MergeMemNode (380 MergeMem) whose base 
>> memory is top and now has again one slice which is input and output to 
>> 274 StoreD [4]. This cycle is later detected and the assertion fails.
>>
>> The fix accounts additionally for dead MergeMemNodes when trying to 
>> detect dead loops in PhiNode::Ideal to return top instead of a new 
>> dead MergeMemNode.
>>
>> Best regards,
>> Christian
>>
>>
>> [1] 
>> https://bugs.openjdk.java.net/secure/attachment/89582/before_PhiNode_Ideal.png 
>>
>> [2] 
>> http://hg.openjdk.java.net/jdk/jdk/file/8f7ede592c28/src/hotspot/share/opto/cfgnode.cpp#l2234 
>>
>> [3] 
>> http://hg.openjdk.java.net/jdk/jdk/file/8f7ede592c28/src/hotspot/share/opto/cfgnode.cpp#l2246 
>>
>> [4] 
>> https://bugs.openjdk.java.net/secure/attachment/89583/after_PhiNode_Ideal.png 
>>


More information about the hotspot-compiler-dev mailing list