RFR: 8271341: Opcode() != Op_If && Opcode() != Op_RangeCheck) || outcnt() == 2 assert failure with Test7179138_1.java [v2]
Roland Westrelin
roland at openjdk.java.net
Fri Sep 3 07:46:07 UTC 2021
> The root cause of this bug is in PhaseStringOpts. In the middle of the
> chain of calls that are optimized out, there's a diamond Region/If. On
> most executions this diamond is optimized out by IGVN because once
> PhaseStringOpts is over, all the Region's Phis are removed. But
> because one input of the If/Bool/Cmp is set to top by PhaseStringOpts
> when calls are removed, it sometimes happen that top propagates to the
> If before the Region is optimized out. That causes control flow below
> the If to become dead while it should still be reachable.
>
> The fix I propose is to have PhaseStringOpts removed the Region/If in
> that case.
Roland Westrelin has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:
- Merge with master
- review
- fix
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/4944/files
- new: https://git.openjdk.java.net/jdk/pull/4944/files/9ddafed4..cb87bc2c
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=4944&range=01
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=4944&range=00-01
Stats: 12318 lines in 487 files changed: 6934 ins; 2404 del; 2980 mod
Patch: https://git.openjdk.java.net/jdk/pull/4944.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/4944/head:pull/4944
PR: https://git.openjdk.java.net/jdk/pull/4944
More information about the hotspot-compiler-dev
mailing list