[flang-commits] [flang] [flang][runtime] Fix integer overflow check in FORMAT (PR #79368)

via flang-commits flang-commits at lists.llvm.org
Wed Jan 24 15:53:36 PST 2024


================
@@ -214,15 +215,13 @@ template <typename CHAR> void FormatValidator<CHAR>::NextToken() {
   case '7':
   case '8':
   case '9': {
-    int64_t lastValue;
     const CHAR *lastCursor;
     integerValue_ = 0;
     bool overflow{false};
     do {
-      lastValue = integerValue_;
       lastCursor = cursor_;
       integerValue_ = 10 * integerValue_ + c - '0';
-      if (lastValue > integerValue_) {
+      if (integerValue_ > std::numeric_limits<int>::max()) {
----------------
vdonaldson wrote:

How will this new condition ever be true?

The idea is that an _n+1_ digit unsigned number should always be larger than an _n_ digit unsigned number. With bounded computer arithmetic that fails if the number overflows.

https://github.com/llvm/llvm-project/pull/79368


More information about the flang-commits mailing list