RFR: 8282590: C2: assert(addp->is_AddP() && addp->outcnt() > 0) failed: Don't process dead nodes [v5]
Emanuel Peter
duke at openjdk.java.net
Wed Mar 16 14:48:27 UTC 2022
> Problem:
> Sometimes nodes are generated, and then not properly added to any other node, nor added to the worklist, so that it could be deleted. In some cases, a node can thus survive after IGVN and enter into `ConnectionGraph::compute_escape`, where no dead nodes are expected (except constants).
>
> In `ArrayCopyNode::prepare_array_copy`:
> In one, I now add the new ConvI2LNode to the worklist if we are aborting.
> In the other case, I could safely reorder the code, such new ConvI2LNode would only be generated once we know we are not going to abort.
>
> In `SubTypeCheckNode::Ideal`:
> Replaced `set_req` with `set_req_X`, such that the input-node that is replaced (which is now potentially a dead node) is put on the worklist.
>
> In `ArrayCopyNode::Ideal`:
> If we decide to `return NULL` we also need to add the potentially dead forward / backward memory nodes to the worklist, they may turn out to be dead.
>
> Added a regression test: the test + flag combination that first reproduced this issue.
>
> All Tests, including this new regression test are passing.
Emanuel Peter has updated the pull request incrementally with one additional commit since the last revision:
implement review suggestions from Tobias
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/7728/files
- new: https://git.openjdk.java.net/jdk/pull/7728/files/2a50afde..5f68319d
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=7728&range=04
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=7728&range=03-04
Stats: 17 lines in 1 file changed: 5 ins; 9 del; 3 mod
Patch: https://git.openjdk.java.net/jdk/pull/7728.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/7728/head:pull/7728
PR: https://git.openjdk.java.net/jdk/pull/7728
More information about the hotspot-compiler-dev
mailing list