RFR: 8353041: NeverBranchNode causes incorrect block frequency calculation
Roberto Castañeda Lozano
rcastanedalo at openjdk.org
Tue Apr 8 08:41:16 UTC 2025
On Wed, 2 Apr 2025 19:51:37 GMT, Dean Long <dlong at openjdk.org> wrote:
> This fixes a quality of implementation issue for infinite loops using a NeverBranch node. We need Block::succ_prob() to return 1.0f for the 100% successful back-edge so that block frequencies are computed correctly. I also fixed Block_Stack::most_frequent_successor() to choose the correct successor. I verified that this corrects the huge frequency ratio that was detected and clamped by JDK-8346888.
>
> Currently this bug is labeled noreg-hard with no new regression test, as it's not obvious how to write such as test.
src/hotspot/share/opto/domgraph.cpp line 244:
> 242: // edges swapped, rare case
> 243: succ_idx = 1;
> 244: } else {
Could you explain how do we end up at this rare case? In my opinion, it would be preferable, if possible, to ensure edges are never swapped in the first place.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24390#discussion_r2032694961
More information about the hotspot-compiler-dev
mailing list