RFR: 8268019: C2: assert(no_dead_loop) failed: dead loop detected [v2]

Christian Hagedorn chagedorn at openjdk.java.net
Mon Jul 26 12:09:33 UTC 2021


On Fri, 23 Jul 2021 15:51:28 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:

>> Could we then possibly miss a split if opportunity when bailing out with `igvn->_worklist.member(r)`? Should we readd the `If` node to the worklist in this case? We could also think about adding `igvn->_worklist.member(r)` further down when we are really sure that we could do a split if.
>
> My thinking is that Region could go away after it is processed (when input[s] are dead/top). Why bother to split through it?
> 
> I am concern that you are checking dead inputs by hand in these changes - input's transformation to Top should put Region node on worklist. Can you do experiment without your dead inputs check and only checking worklist?
> 
> I think the issue (as usual) is the order of processing of worklist. That is why I suggested this check.
> Yes, you can delay worklist checking to see if we should put If node back on worklist only when we can do split if.

You're right, this additional worklist check should then be enough and is more clean. I reverted the fix and added a worklist check at the latest possible location. This works for repeated runs with `StressIGVN` + `RepeatCompilation`. I also included the `is_copy()` check.

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

PR: https://git.openjdk.java.net/jdk/pull/4860


More information about the hotspot-compiler-dev mailing list