RFR(XS): aarch64: C2 OSR compilation fails with "shouldn't process one node several times" in final graph reshaping

Roland Westrelin rwestrel at redhat.com
Tue Aug 27 11:45:15 UTC 2019


In the compiled method of the test case, there are 2 ConvI2L nodes with
the same input but different types. One of them is used twice as input
to a single AddL nodes. The other is from the address calculation of the
array access. The logic where the assert fires is specific to aarch64
and replaces convI2L nodes with the same inputs but different types with
a single one with a wide type. That logic finds the array access ConvI2L
first and tries to replace the other ConvI2L with it. It then hits the
assert because that ConvI2L has 2 uses which are the same node, the
AddL. That's perfectly legal and the assert is too strong. So I removed
it and used an Unique_Node_List instead. The test case is a reduced
version of the fuzzer test case: order of node processing in final graph
reshaping matters so a straightfoward test doesn't trigger a failure.


More information about the hotspot-compiler-dev mailing list