1a1c7693d2
This CL corrects handling of overflows in range analysis to account for wrap-around (which happens with new integer semantics). * If there is an overflow while doing computations in range analysis, the resulting range is approximated as full int64 range. * For symbolic range boundaries 'symbol + offset', offset is checked to stay within [kMinInt64 - kSmiMin, kMaxInt64 - kSmiMax] in order to guarantee that overflow doesn't occur. Issue: https://github.com/dart-lang/sdk/issues/31920 Change-Id: I2c16adbe3597e9b718ed2f6ce7210426fcc9e6a6 Reviewed-on: https://dart-review.googlesource.com/39423 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>