RFR: 8333393: PhaseCFG::insert_anti_dependences can fail to raise LCAs and to add necessary anti-dependence edges [v11]
Daniel Lundén
dlunden at openjdk.org
Thu Jan 30 14:40:52 UTC 2025
On Thu, 30 Jan 2025 13:57:18 GMT, Quan Anh Mai <qamai at openjdk.org> wrote:
> This is a really bold assumption and I assume you do not have any concrete reason for it.
The assumption holds in all (fuzzer-generated) failure cases we have looked at. It also makes sense from a scheduling perspective to have `initial_mem` as early as possible to allow putting `early` as early as possible allowing maximum scheduling freedom. In fact, the reason why we get these late `early` blocks in relation to `initial_mem_block` is that the loads that fail get pinned from above by explicit control inputs.
I could do some further experiments to investigate if you wish.
> "After" in the sense of CFG can only emerge after scheduling, while:
>
> * We are scheduling.
> * The load and its memory input have existed before scheduling, which makes it very hard to imagine that this is a valid assumption.
>
> And "after" in the sense of graph edges seems not to be the case, either. As your example has pointed out.
I mean "after" in the sense of the dominator graph, which is available at this point. Also, all memory-defining nodes have been globally scheduled (i.e., they have a block). These are pre-existing assumptions in `insert_anti_dependences`.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/22852#issuecomment-2624683099
More information about the hotspot-compiler-dev
mailing list