8290822: C2: assert in PhaseIdealLoop::do_unroll() is subject to undefined behavior

Reviewed-by: kvn, thartmann
This commit is contained in:
Tobias Holenstein 2023-02-17 14:27:17 +00:00
parent 57c9bc39cd
commit cd77fcfb5f

@ -2278,8 +2278,8 @@ void PhaseIdealLoop::do_unroll(IdealLoopTree *loop, Node_List &old_new, bool adj
// Verify that policy_unroll result is still valid.
const TypeInt* limit_type = _igvn.type(limit)->is_int();
assert(stride_con > 0 && ((limit_type->_hi - stride_con) < limit_type->_hi) ||
stride_con < 0 && ((limit_type->_lo - stride_con) > limit_type->_lo),
assert((stride_con > 0 && ((min_jint + stride_con) <= limit_type->_hi)) ||
(stride_con < 0 && ((max_jint + stride_con) >= limit_type->_lo)),
"sanity");
if (limit->is_Con()) {