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

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