8329163: C2: possible overflow in PhaseIdealLoop::extract_long_range_checks()

Reviewed-by: chagedorn, kvn
This commit is contained in:
Roland Westrelin 2024-03-27 16:14:18 +00:00
parent 614db2ea9e
commit 05854fd704

@ -1115,6 +1115,7 @@ int PhaseIdealLoop::extract_long_range_checks(const IdealLoopTree* loop, jint st
jlong scale = 0;
if (loop->is_range_check_if(if_proj, this, T_LONG, phi, range, offset, scale) &&
loop->is_invariant(range) && loop->is_invariant(offset) &&
scale != min_jlong &&
original_iters_limit / ABS(scale) >= min_iters * ABS(stride_con)) {
assert(scale == (jint)scale, "scale should be an int");
reduced_iters_limit = MIN2(reduced_iters_limit, original_iters_limit/ABS(scale));