RFR: 8288204: GVN Crash: assert() failed: correct memory chain

Yi Yang yyang at openjdk.org
Mon Oct 10 03:18:54 UTC 2022


On Mon, 8 Aug 2022 05:23:05 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:

> With your fix, correctness still depends on the order in which nodes are processed by IGVN, right? Wouldn't this still reproduce with `-XX:+StressIGVN`?

You are right, the correctness of LoadB#971(Ctrl Mem Addr) depends on idealization orders, i.e. 

Ideal Mem->Ideal Addr->Ideal Mem [Different alias idx, crash]
Ideal Addr->Ideal Mem->Ideal Mem [OK]

I checked the idealization of Addr but it seems it behaves well.

969  AddP  === _  250  250  585
969  AddP  === _  250  250  585
969  AddP  === _  335  335  585
473  AddP  === _  335  335  585

![image](https://user-images.githubusercontent.com/5010047/194793775-5295297c-3a96-4c77-8414-09a085e5af89.png)

AddP#969 was changed from `byte[int:>=0]:exact+any *` to `byte[int:8]:NotNull:exact[0] *,iid=177` because its input was changed from CastPP#250(`byte[int:>=0]:exact+any *`) to CheckCastPP#225(`byte[int:8]:NotNull:exact[0] *,iid=177`) whose alias type is.

Idealization of Mem also behaves well, it steps through MergeMem by alias type of Addr(`byte[int:>=0]:exact+any *` or `byte[int:8]:NotNull:exact[0] *,iid=177`) and changed to 1109 or 119 accordingly.

-------------

PR: https://git.openjdk.org/jdk/pull/9777


More information about the hotspot-compiler-dev mailing list