RFR: JDK-8272574: C2: assert(false) failed: Bad graph detected in build_loop_late [v9]
王超
github.com+25214855+casparcwang at openjdk.java.net
Thu Sep 2 04:20:27 UTC 2021
On Wed, 1 Sep 2021 16:53:51 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:
> Place the test into `compiler/loopopts`.
Thank you for your review. The test has moved to `loopopt` dir.
> Should be `#ifdef ASSERT` for debug build.
The assertion has been changed to debug only, and more debug information are printed.
> I have concern about this because you can have load's address dependency on a control node below memory's control.
> I saw cases when Load's address and memory control were Region through which it splits. And all controls were set to Region's inputs.
I have the same concern too, so I just add another guard `MemNode::all_controls_dominate(address, region)`.
> Also consider that we did not split memory node yet. We may end up with load's clone placed above its memory.
when the control of the load is changed to the control of its memory, memory dependency of the load is also set in the following:
if (mem->is_Phi() && (mem->in(0) == region)) {
x->set_req(Memory, mem->in(i)); // Use pre-Phi input for the clone.
}
-------------
PR: https://git.openjdk.java.net/jdk/pull/5142
More information about the hotspot-compiler-dev
mailing list