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

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Aug 27 16:35:35 UTC 2019



On 8/27/19 4:45 AM, Roland Westrelin wrote:
> http://cr.openjdk.java.net/~roland/8229701/webrev.00/
> 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.
> Roland.

More information about the hotspot-compiler-dev mailing list