[16] RFR(XS): 8249602: C2: assert(cnt == _outcnt) failed: no insertions allowed

Christian Hagedorn christian.hagedorn at oracle.com
Mon Jul 27 06:42:45 UTC 2020


Thank you Vladimir for your review!

Best regards,
Christian

On 24.07.20 20:03, Vladimir Kozlov wrote:
> Looks good.
> 
> Thanks,
> Vladimir
> 
> On 7/24/20 5:57 AM, Christian Hagedorn wrote:
>> Hi
>>
>> Please review the following patch:
>> https://bugs.openjdk.java.net/browse/JDK-8249602
>> http://cr.openjdk.java.net/~chagedorn/8249602/webrev.00/
>>
>> The testcase hits the assert when inserting a post loop. When 
>> correcting the fall-in values to the post-loop phis to take the values 
>> from the main-loop, we have to separately handle nodes that belong to 
>> the backedge control block and cannot float. In this process, we clone 
>> data nodes in PhaseIdealLoop::clone_up_backedge_goo and then hit the 
>> assert because some nodes to be cloned have a control input from the 
>> main-loop header node (main_head). These nodes are cloned and the 
>> main_head node gets these nodes as additional output nodes. This 
>> should be fine but the DUIterator_Fast forbids insertions.
>>
>> The fix simply switches to a normal DUIterator which allows 
>> insertions. This should also be done when correcting the fall-in 
>> values to the main-loop to take the values from the pre-loop.
>>
>> Best regards,
>> Christian


More information about the hotspot-compiler-dev mailing list