RFR(S): 8186125: "DU iteration must converge quickly" assert in split if with unsafe accesses

Roland Westrelin rwestrel at redhat.com
Tue Nov 7 16:44:54 UTC 2017

Thanks for reviewing this, Vladimir.

> Can you explain (add comment) why it can be only CMove node?:
>             if (use_c == blk1 || use_c == blk2) {
> +              assert(use->is_CMove(), "unexpected node type");

So either it's an If, a CMove or an Opaque1. That node is between the if
that we are going to split and the Region right above we are going to
split it through.

It can't be an If because then there would be some control flow between
the If to split and the Region which is impossible.

It can't be an Opaque1 because there can't be any control flow between
the If and the region (so no loop) and Opaque1 nodes are not commoned so
even if they are loops in the if branches, they would each have an
Opaque1 that should be assigned a control in the if branches.


More information about the hotspot-compiler-dev mailing list