[jdk17] RFR: 8269820: C2 PhaseIdealLoop::do_unroll get wrong opaque node [v3]
Hui Shi
hshi at openjdk.java.net
Mon Jul 19 03:17:17 UTC 2021
> In PhaseIdealLoop::is_canonical_loop_entry check, opaque node can be at either input of compare node, after is_canonical_loop_entry check, opaq node is getting only from compare node's in(2). This might get wrong oqaque node and cause crash/assertion. Detailed crash and analysis is in JBS.
>
> Fix: Adding method PhaseIdealLoop::get_opaque_from_cmp, getting opaque node from cmp node's either input.
>
> Test: Linux X64 tier1/2/3 release/fastdebug no regression.
>
> After this fix, BoolNode::Ideal might remove its code forbidding swapping compare node's input node order when second one is opaque1 node.
Hui Shi has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits:
- Fix BoolNode::Ideal, avoid switch cmp input when its second input is phi of Opaque1
- Revert "8269820: C2 PhaseIdealLoop::do_unroll get wrong opaque node"
This reverts commit db81658240968c309390f9cfb6d24a223c7857ab.
- Revert "Fix more places assumption opaque at second input of compare nodes"
This reverts commit 66f1f860f6356e3c9a7a6c08b27c35e1d1fd5c72.
- Fix more places assumption opaque at second input of compare nodes
- 8269820: C2 PhaseIdealLoop::do_unroll get wrong opaque node
-------------
Changes: https://git.openjdk.java.net/jdk17/pull/208/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk17&pr=208&range=02
Stats: 85 lines in 3 files changed: 74 ins; 8 del; 3 mod
Patch: https://git.openjdk.java.net/jdk17/pull/208.diff
Fetch: git fetch https://git.openjdk.java.net/jdk17 pull/208/head:pull/208
PR: https://git.openjdk.java.net/jdk17/pull/208
More information about the hotspot-compiler-dev
mailing list