[jdk17] RFR: 8268672: C2: assert(!loop->is_member(u_loop)) failed: can be in outer loop or out of both loops only

Nils Eliasson neliasso at openjdk.java.net
Mon Jun 21 13:53:30 UTC 2021


On Thu, 17 Jun 2021 13:53:12 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> This is caused by the fix for 8263303 in which I changed the code of
> loop cloning of a strip mined loop so nodes that are pinned in the
> outer loop but not referenced by the loop's safepoint are moved out of
> the loop before cloning:
> 
> https://github.com/openjdk/jdk/commit/d4377afb999f4f03d384ded97771c83ea1c1f513#diff-7b82624b78127158abbce6835eeba196bd062aee59512ec2d4e4c8c7d681573bR1980
> 
> The assert failure here is caused by a node that has its control input
> set to the inner loop but is assigned control by PhaseIdealLoop out of
> the inner loop. The assert fires because the change from 8263303
> affects the condition that the assert checks. I still think, in
> principle, the fix from 8263303 is the good one so I propose to simply
> reorganize the change from 8263303 so the assert doesn't wrongly fire.

Looks good!

-------------

Marked as reviewed by neliasso (Reviewer).

PR: https://git.openjdk.java.net/jdk17/pull/88


More information about the hotspot-compiler-dev mailing list