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

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Jul 24 18:03:29 UTC 2020


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