Integrated: 8254887: C2: assert(cl->trip_count() > 0) failed: peeling a fully unrolled loop

Roland Westrelin roland at openjdk.java.net
Fri Nov 13 08:22:58 UTC 2020


On Fri, 6 Nov 2020 16:41:28 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> A loop's trip count is computed to have exact trip count 6. Then:
> 
> 1- pre/main/post loops are created which brings the trip count from 6
>   to 5
> 2- main loop is unrolled which brings the trip count to 2
> 3- main loop is peeled: Trip count is 1
> 4- pre/main/post loops are created again. Trip count of main loop is 0.
> 5- peeling is attempted again and the assert fires
> 
> IdealLoopTree::policy_peeling() doesn't attempt peeling if the trip
> count is 1. I propose that IdealLoopTree::policy_range_check() (that
> causes the pre/main/post loops insertion the second time) performs the
> same check so step 4 doesn't happen.

This pull request has now been integrated.

Changeset: ea576ddb
Author:    Roland Westrelin <roland at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/ea576ddb
Stats:     64 lines in 2 files changed: 63 ins; 0 del; 1 mod

8254887: C2: assert(cl->trip_count() > 0) failed: peeling a fully unrolled loop

Reviewed-by: chagedorn, thartmann

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

PR: https://git.openjdk.java.net/jdk/pull/1096


More information about the hotspot-compiler-dev mailing list