RFR: 8273277: C2: Move conditional negation into rc_predicate [v3]

Tobias Hartmann thartmann at openjdk.java.net
Wed Nov 10 12:27:40 UTC 2021


On Tue, 9 Nov 2021 20:20:10 GMT, Nils Eliasson <neliasso at openjdk.org> wrote:

>> Hi,
>> 
>> I need some feedback on this patch. This was reported from Tencent and found in internal testing about the same time. This patch is based on a a patch provided by Tencent.
>> 
>> In some very specific circumstances we need to negate the range checks that we create in PhaseIdealLoop::loop_predication_impl_helper. This is done in three places, but that method also calls insert_initial_skeleton_predicate where this isn't taken into account. 
>> 
>> To simplify things I have moved the negation logic into rc_predicate. This should prevent us from missing this check again.
>> 
>> I do have a concern that negating the condition of the rangecheck in the skeleton predicate, since the skeleton predicate will be used as a clone template, and some rangechecks optimizations seems to assume that range checks always have LT as the condidtion. On the other hand - it is a really uncommon scenario since we haven't failed here before.
>> 
>> Feedback appreciated.
>> 
>> Best regards,
>> Nils
>
> Nils Eliasson has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add test

Looks good to me.

test/hotspot/jtreg/compiler/loopopts/TestSkeletonPredicateNegation.java line 29:

> 27:  * @bug 8273277
> 28:  * @summary Skeleton predicates sometimes need to be negated
> 29:  * @run main compiler.loopopts.TestSkeletonPredicateNegation

I think this should be changed to `@run driver`.

test/hotspot/jtreg/compiler/loopopts/TestSkeletonPredicateNegation.java line 51:

> 49:     }
> 50: 
> 51:     public void mainTest (String[] args){

Code style should be `mainTest(String[] args) {`

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

Marked as reviewed by thartmann (Reviewer).

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


More information about the hotspot-compiler-dev mailing list