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

Tobias Hartmann tobias.hartmann at oracle.com
Wed Aug 28 09:12:17 UTC 2019


Best regards,

On 27.08.19 18:35, Vladimir Kozlov wrote:
> Good.
> Thanks,
> Vladimir
> 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