[jdk19] RFR: 8289954: C2: Assert failed in PhaseCFG::verify() after JDK-8183390

Tobias Hartmann thartmann at openjdk.org
Tue Jul 26 10:43:43 UTC 2022


On Tue, 26 Jul 2022 10:03:44 GMT, Pengfei Li <pli at openjdk.org> wrote:

>> Sorry, but seems that the same assertion failure is still happening when running the newly added test case with fastdebug build on linux-riscv64 platform. And I have attached the hs_err and reply files on the JBS issue. Please take another look.
>
> Thanks @RealFYang for the information. I'm still investigating this in jdk 20 but so far I haven't got a clear clue. Just find if I ban `SuperWord::unrolling_analysis()` for normal loops, specifically with below change, that assertion fails again.
> 
> diff --git a/src/hotspot/share/opto/superword.cpp b/src/hotspot/share/opto/superword.cpp
> index ef66840628f..997fae367b1 100644
> --- a/src/hotspot/share/opto/superword.cpp
> +++ b/src/hotspot/share/opto/superword.cpp
> @@ -217,6 +217,7 @@ void SuperWord::unrolling_analysis(int &local_loop_unroll_factor) {
>    int *ignored_loop_nodes = NEW_RESOURCE_ARRAY(int, ignored_size);
>    Node_Stack nstack((int)ignored_size);
>    CountedLoopNode *cl = lpt()->_head->as_CountedLoop();
> +  if (cl->is_normal_loop()) return;
>    Node *cl_exit = cl->loopexit_or_null();
>    int rpo_idx = _post_block.length();
> 
> 
> And I saw [JDK-8275330](https://github.com/openjdk/jdk/pull/6429) by Roland fixed the same assertion failure before. And the test case which causes the failure looks similar with this one - there is an inner dead loop which fails to be optimized away by C2.
> 
> Hi @rwestrel , may I ask if you have any ideas or hints about this?

@pfustc, @RealFYang Please file a new bug for the remaining issue. Thanks!

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

PR: https://git.openjdk.org/jdk19/pull/130


More information about the hotspot-compiler-dev mailing list