[jdk16] Integrated: 8260370: C2: LoopLimit node is not eliminated

Vladimir Ivanov vlivanov at openjdk.java.net
Wed Jan 27 10:33:42 UTC 2021


On Tue, 26 Jan 2021 16:54:48 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:

> As part of JDK-8255000 `C->major_progress` check was replaced with an explicit phase check (`post_loop_opts_phase()`).
> But `LoopLimit` was not covered and still relied on `C->major_progress()`. It exposed a problem: sometimes IGVN sets `major_progress` (e.g., see `LoopNode::Ideal()`) and it blocks `LoopLimit` node elimination if the node is processed later (`LoopLimitNode::Ideal()` is misled that loop opts phase is not over).         
> 
> The fix migrates `LoopLimitNode::Ideal()` to  `post_loop_opts_phase()`. 
> 
> Also, post-loop opts IGVN pass conservatively clears `major_progress()` just in case.  
>    
> Testing:
> - [x] failing test
> - [x] hs-tier1 - hs-tier4

This pull request has now been integrated.

Changeset: e28e1111
Author:    Vladimir Ivanov <vlivanov at openjdk.org>
URL:       https://git.openjdk.java.net/jdk16/commit/e28e1111
Stats:     9 lines in 2 files changed: 8 ins; 0 del; 1 mod

8260370: C2: LoopLimit node is not eliminated

Reviewed-by: kvn, thartmann

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

PR: https://git.openjdk.java.net/jdk16/pull/134


More information about the hotspot-compiler-dev mailing list