RFR: 8370200: Crash: assert(outer->outcnt() >= phis + 2 - be_loads && outer->outcnt() <= phis + 2 + stores + 1) failed: only phis [v3]
Roland Westrelin
roland at openjdk.org
Thu Dec 11 09:48:22 UTC 2025
> The crash occurs because verification code expects the inner and outer
> loop of a loop strip mining nest to have the same number of phis but,
> in this case, the inner loop has one more memory phis than the outer
> loop.
>
> 1) After `OuterStripMinedLoopNode::adjust_strip_mined_loop`, inner and
> outer loops have the same number of phis, as expected.
>
>
> 309 MergeMem === _ 1 306 1 1 284 [[ 429 ]] { - - N284:instptr:java/lang/Throwable (java/io/Serializable):BotPTR+20,iid=bot [narrow] } Memory: @ptr:BotPTR+bot, idx=Bot; !orig=205 !jvms: TestMismatchedMemoryPhis::mainTest @ bci:37 (line 49)
>
> 248 OuterStripMinedLoop === 248 321 247 [[ 248 249 428 429 430 ]]
> 429 Phi === 248 309 205 [[ 93 ]] #memory Memory: @ptr:BotPTR+bot, idx=Bot; !orig=93 !jvms: TestMismatchedMemoryPhis::mainTest @ bci:37 (line 49)
> 430 Phi === 248 306 121 [[ 94 ]] #memory Memory: @instptr:TestMismatchedMemoryPhis:BotPTR+16,iid=bot, name=l, idx=4; !orig=94 !jvms: TestMismatchedMemoryPhis::mainTest @ bci:37 (line 49)
>
> 249 CountedLoop === 249 248 197 [[ 249 119 96 93 94 ]] inner stride: 1 strip mined !orig=[223],[91] !jvms: TestMismatchedMemoryPhis::mainTest @ bci:37 (line 49)
> 93 Phi === 249 429 205 [[ 117 97 ]] #memory Memory: @ptr:BotPTR+bot, idx=Bot; !jvms: TestMismatchedMemoryPhis::mainTest @ bci:37 (line 49)
> 94 Phi === 249 430 121 [[ 97 ]] #memory Memory: @instptr:TestMismatchedMemoryPhis:BotPTR+16,iid=bot, name=l, idx=4; !jvms: TestMismatchedMemoryPhis::mainTest @ bci:37 (line 49)
>
>
> 2) Then `PhiNode::Ideal` runs for 429 and pushed the `MergeMem` 309
> through the outer loop phi:
>
>
> 248 OuterStripMinedLoop === 248 321 247 [[ 248 249 428 429 430 444 446 ]]
> 430 Phi === 248 306 121 [[ 94 ]] #memory Memory: @instptr:TestMismatchedMemoryPhis:BotPTR+16,iid=bot, name=l, idx=4; !orig=94 !jvms: TestMismatchedMemoryPhis::mainTest @ bci:37 (line 49)
> 444 Phi === 248 306 121 [[ 445 ]] #memory Memory: @ptr:BotPTR+bot, idx=Bot; !orig=429,93 !jvms: TestMismatchedMemoryPhis::mainTest @ bci:37 (line 49)
> 446 Phi === 248 284 170 [[ 445 ]] #memory Memory: @instptr:java/lang/Throwable (java/io/Serializable):BotPTR+20,iid=bot [narrow], name=detailMessage, idx=5; !orig=444,429,93 !jvms: TestMismatchedMemoryPhis::mainTest @ bci:37 (line 49)
>
> 445 MergeMem === _ 1 444 1 1 446 [[ 93 ]] { - - N446:instptr:java/lang/Throwable (java/io/Serializable):BotPTR+20,iid=bot [narrow] } Memory: @ptr:BotPTR+bot, idx=Bot; !orig=[429],93 !jvms: TestMismatchedMemoryPhis::mainTe...
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 eight additional commits since the last revision:
- review
- Merge branch 'master' into JDK-8370200
- Update test/hotspot/jtreg/compiler/loopstripmining/TestMismatchedMemoryPhis.java
Co-authored-by: Roberto Castañeda Lozano <robcasloz at users.noreply.github.com>
- Update test/hotspot/jtreg/compiler/loopstripmining/TestMismatchedMemoryPhis.java
Co-authored-by: Roberto Castañeda Lozano <robcasloz at users.noreply.github.com>
- more
- test
- more
- fix
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/28677/files
- new: https://git.openjdk.org/jdk/pull/28677/files/2a305164..6d3109c7
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=28677&range=02
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=28677&range=01-02
Stats: 45016 lines in 627 files changed: 27798 ins; 14173 del; 3045 mod
Patch: https://git.openjdk.org/jdk/pull/28677.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/28677/head:pull/28677
PR: https://git.openjdk.org/jdk/pull/28677
More information about the hotspot-compiler-dev
mailing list