[11] RFR(M): 8203915: Induction variable of over-unrolled loop conflicts with range checks

Tobias Hartmann tobias.hartmann at oracle.com
Mon Jun 11 13:30:22 UTC 2018


Thanks, Vladimir!

Best regards,
Tobias

On 08.06.2018 19:14, Vladimir Kozlov wrote:
> Thank you, Tobias, for looking on it.
> 
> Then we have to do what you are suggesting. Reviewed.
> 
> It is a little frustrating that predicates code become more and more complex and bugs prone :(
> 
> Thanks,
> Vladimir
> 
> On 6/8/18 12:53 AM, Tobias Hartmann wrote:
>> Hi Vladimir,
>>
>> thanks for looking at this!
>>
>> On 07.06.2018 19:18, Vladimir Kozlov wrote:
>>> Can you look if PhaseIdealLoop::do_range_check() is executed for main loop in this case? If array
>>> length is known statically that code should produce check which should eliminate control flow for
>>> main loop and collapse it.
>>
>> PhaseIdealLoop::do_range_check() is not executed because after predication, the main loop does not
>> contain any range checks (the predicates are before the pre-loop).
>>
>> The tests work fine without loop predication (-XX:-UseLoopPredicate) because in this case
>> do_range_check() is executed and the corresponding check eliminates control flow as expected.
>>
>> Thanks,
>> Tobias
>>


More information about the hotspot-compiler-dev mailing list