RFR: 8345299: C2: some nodes can still have incorrect control after do_range_check() [v2]

Roland Westrelin roland at openjdk.org
Wed Dec 4 15:18:54 UTC 2024


> 8339733 fixed controls for updated pre/main limits during
> do_range_check(). However, it missed one issue:
> 
> Control for the new limits is computed in `new_limit_ctrl` for both
> pre and main loops. `new_limit_ctrl` is currently initialized from the
> pre limit control but it also needs to take the main loop limit
> control into account as sometimes, the main loop limit control is
> below the pre limit and pre loop entry control.
> 
> 8339733 also introduced a couple bugs. Control of the `Bool`/`Cmp`
> nodes are updated for the pre and main loop to `new_limit_ctrl`. But
> that's incorrect because `new_limit_ctrl` may be above the pre loop
> while the `Bool`/`Cmp` for the pre loop are in the loop (because they
> depend on the loop iv) and for the main loop are after the pre loop
> (because they depend on the iv out of the pre loop). I fixed this for
> the pre loop by setting control for the `Bool`/`Cmp` to be as late as
> possible. For the main loop, no change appears to be required as
> control computed by c2 is already late enough. I've added an assert
> instead.

Roland Westrelin has updated the pull request incrementally with one additional commit since the last revision:

  review

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/22485/files
  - new: https://git.openjdk.org/jdk/pull/22485/files/e7904f6c..0b08402d

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=22485&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=22485&range=00-01

  Stats: 6 lines in 1 file changed: 4 ins; 0 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/22485.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/22485/head:pull/22485

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


More information about the hotspot-compiler-dev mailing list