[15] RFR(M): 8240227: Loop predicates should be copied to unswitched loops
Christian Hagedorn
christian.hagedorn at oracle.com
Tue Mar 17 07:56:14 UTC 2020
Hi Roland
On 16.03.20 17:45, Roland Westrelin wrote:
>
> Hi Christian,
>
>> Full: http://cr.openjdk.java.net/~chagedorn/8240227/webrev.01/
>
> I'm confused by that part of the change:
>
> 242 if (iff->is_RangeCheck()) {
> 243 // Only need to clone range check predicates as those can be changed and duplicated by inserting pre/main/post loops
> 244 // and doing loop unrolling. Push the original predicate on a list to later process them in reverse order to keep the
> 245 // original predicate order.
> 246 if (predicate->outcnt() == 1) {
> 247 // Clone all range checks that have no control to additional data nodes (like loop limit checks)
> 248 list.push(predicate);
>
> Comment line 247 mentions loop limit checks but they are not range
> checks?
Yes, that comment seems wrong. What I actually meant was (concrete)
range check predicates nodes like upper bound checks created in
PhaseIdealLoop::loop_predication_impl_helper() which do not have
additional outputs to data nodes (the skeleton predicates have the
control edges to these data nodes).
I updated these comments in webrev.01 in place to make it clearer.
Thanks for pointing it out.
Best regards,
Christian
More information about the hotspot-compiler-dev
mailing list