6663854: assert(n != __null,"Bad immediate dominator info.") in C2 with -Xcomp
This is another instance of the ConvI2L problem with type information
being raised to a point that it's no longer true, like the bug
6659207, resulting in top being returned and some code path being
mistakenly killed. The same style of fix for 6659207 won't work in
this case because there's no option to bailout if the types won't
work. Instead we strip the constrained type off the ConvI2L as it is
pushed up. The test case was automatically generated and I couldn't
simplify it any further so it's pretty horrific looking. Tested with
test case and confirmed that stripping the type doesn't effect the
code quality for scimark which is very sensitive to the loss of the
type information on ConvI2Ls used in address expressions.
This bug is similar to 6659207, as a ConvI2L with a constrained type is being split. One of the two new nodes is eliminated and the Phi input is replace with top.
This bug is different in this case because do_split_if() is pushing a ConvI2L up through a Phi. The bandaid for 6659207 doesn't work because the original ConvI2L node is not initially directly referenced by a Phi.
The fix for 6675699 should address this problem, however, this particular test case gives doubt as to whether a CastII with a control input would inhibit split-if from making dubious transformations.