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

Christian Hagedorn chagedorn at openjdk.org
Thu Dec 5 06:57:42 UTC 2024


On Wed, 4 Dec 2024 15:18:54 GMT, Roland Westrelin <roland at openjdk.org> wrote:

>> 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

Marked as reviewed by chagedorn (Reviewer).

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

PR Review: https://git.openjdk.org/jdk/pull/22485#pullrequestreview-2480646039


More information about the hotspot-compiler-dev mailing list