RFR: 8330853: Add missing checks for ConnectionGraph::can_reduce_cmp() call
Vladimir Kozlov
kvn at openjdk.org
Tue Apr 23 14:40:49 UTC 2024
In Leyden testing CI we start hitting assert:
# Internal Error (/workspace/open/src/hotspot/share/opto/node.hpp:407), pid=3216007, tid=3216030
# assert(i < _max) failed: oob: i=2, _max=2
Stack: [0x00007f20b011b000,0x00007f20b021b000], sp=0x00007f20b02157e0, free space=1001k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xbf5bb4] Node::in(unsigned int) const [clone .part.0]+0x24 (node.hpp:407)
V [libjvm.so+0xbf69ea] ConnectionGraph::can_reduce_cmp(Node*, Node*) const+0x9a (node.hpp:407)
V [libjvm.so+0xbf74a6] ConnectionGraph::can_reduce_check_users(Node*, unsigned int) const+0x996 (escape.cpp:578)
[JDK-8316991](https://bugs.openjdk.org/browse/JDK-8316991) added new code which assumes that we always have sequence : IfNode->Bool->Cmp: [escape.cpp#L569](https://github.com/openjdk/jdk/blob/master/src/hotspot/share/opto/escape.cpp#L569)
which is not true in some cases. In failed cases there is additional Opaque4 node between If and Bool nodes.
The fix is to add missing checks for If, Bool and Cmp nodes.
The fix is verified in Leyden CI testing. The failure happens only with special C2 mode compilation in Leyden.
-------------
Commit messages:
- 8330853: Add missing checks for ConnectionGraph::can_reduce_cmp() call
Changes: https://git.openjdk.org/jdk/pull/18916/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18916&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8330853
Stats: 9 lines in 1 file changed: 4 ins; 0 del; 5 mod
Patch: https://git.openjdk.org/jdk/pull/18916.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/18916/head:pull/18916
PR: https://git.openjdk.org/jdk/pull/18916
More information about the hotspot-compiler-dev
mailing list