RFR: 8314024: SIGSEGV in PhaseIdealLoop::build_loop_late_post_work due to bad immediate dominator info

Roland Westrelin roland at openjdk.org
Wed Aug 23 09:29:44 UTC 2023


A node is sunk from the pre loop into the main loop. That node, in the
main loop, feeds into a test. When the node is sunk it is pinned
between the main and pre loop. The test it feeds into is then
eliminated by range check elimination: the sunk node becomes input to
an expression that computes the new bound of the pre loop. The
resulting graph is broken because the sunk node is pinned below the
pre loop but used by the exit test of the pre loop.

The fix I propose is in `PhaseIdealLoop::try_sink_out_of_loop()`, to
skip nodes in pre loops that have a use in the companion main loop.

-------------

Commit messages:
 - comments
 - test
 - fix

Changes: https://git.openjdk.org/jdk/pull/15399/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15399&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8314024
  Stats: 78 lines in 2 files changed: 78 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/15399.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/15399/head:pull/15399

PR: https://git.openjdk.org/jdk/pull/15399


More information about the hotspot-compiler-dev mailing list