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

Roland Westrelin roland at openjdk.java.net
Thu Jun 17 14:01:15 UTC 2021


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.

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

Commit messages:
 - test
 - maybe fix

Changes: https://git.openjdk.java.net/jdk17/pull/88/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk17&pr=88&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8268672
  Stats: 64 lines in 2 files changed: 62 ins; 0 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk17/pull/88.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk17 pull/88/head:pull/88

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


More information about the hotspot-compiler-dev mailing list