[lworld] RFR: 8262128: [lworld] C1's ValueNumbering optimization does not correctly handle delayed accesses
Tobias Hartmann
thartmann at openjdk.java.net
Mon Feb 22 15:09:00 UTC 2021
On Mon, 22 Feb 2021 15:03:53 GMT, Frederic Parain <fparain at openjdk.org> wrote:
>> C1's ValueNumbering optimization replaces an array+field load `array[0].intArray` by another non-equivalent array+field load `array[0].floatArray` because it does not handle delayed accesses. The hash value of `LoadIndexed` needs to take delayed accesses into account.
>>
>> Best regards,
>> Tobias
>
> Hi Tobias,
>
> Thank you for fixing this.
> However, the fix seems to have an issue. The hash_inline_access() method encapsulates the additional offset from the delayed access into a hash value, this encapsulation prevents the is_equal(Value v) method (from the the HASHING macro) to see all individual arguments of the hash function and could cause the method return an incorrect result.
>
> Fred
Hi Fred,
thanks for looking at this, you are right.
Best regards,
Tobias
-------------
PR: https://git.openjdk.java.net/valhalla/pull/345
More information about the valhalla-dev
mailing list