RFR: 8339733: C2: some nodes can have incorrect control after do_range_check()

Roland Westrelin roland at openjdk.org
Mon Sep 9 08:32:33 UTC 2024


PhaseIdealLoop::do_range_check() sets the control of the new pre and
main limits to be the entry control of the pre loop but it eliminates
all conditions whose parameters are invariant in the main loop. Most
of the time they are also invariant in the pre loop but that's not
guaranteed. It does happen sometimes that those parameters are pinned
in the pre loop. In that case, PhaseIdealLoop::do_range_check() sets
wrong controls.

This doesn't cause any issue today AFAICT.

Also, this seems to be a typo in PhaseIdealLoop::insert_pre_post_loops():


pre_head->in(0)


is `pre_head`. I fixed that one too.

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

Commit messages:
 - fix

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

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


More information about the hotspot-compiler-dev mailing list