[all-commits] [llvm/llvm-project] d0caf0: [flang] Avoid undefined behaviour when parsing for...

David Spickett via All-commits all-commits at lists.llvm.org
Wed Jul 9 07:32:09 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: d0caf0d4857c2b00ba988f86703663685ec8697f
      https://github.com/llvm/llvm-project/commit/d0caf0d4857c2b00ba988f86703663685ec8697f
  Author: David Spickett <david.spickett at linaro.org>
  Date:   2025-07-09 (Wed, 09 Jul 2025)

  Changed paths:
    M flang/include/flang/Common/format.h

  Log Message:
  -----------
  [flang] Avoid undefined behaviour when parsing format expressions (#147539)

The test flang/test/Semantics/io08.f90 was failing when UBSAN was
enabled:
```
/home/david.spickett/llvm-project/flang/include/flang/Common/format.h:224:26: runtime error: signed integer overflow: 10 * 987654321098765432 cannot be represented in type 'int64_t' (aka 'long')
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/david.spickett/llvm-project/flang/include/flang/Common/format.h:224:26
```
This is because the code was effectively:
* Take the risk of UB happening
* Check whether it happened or not

Which UBSAN is obviously not going to like. Instead of checking after
the fact, use llvm's helpers that catch overflow without actually doing
it.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list