[ADT] Fix itostr handling of min int64_t value
authorThomas Preud'homme <thomasp@graphcore.ai>
Fri, 19 Jun 2020 15:08:34 +0000 (16:08 +0100)
committerThomas Preud'homme <thomasp@graphcore.ai>
Fri, 19 Jun 2020 17:38:43 +0000 (18:38 +0100)
commitf3e8f9617365f129a0e9876fc3d38f15d6f2d4fd
tree5ab3772cbeb060bfa971110487a8cd01cf1abfe3
parentf5eaa2afe2a9faa2d05ca46e006e770d17c32778
[ADT] Fix itostr handling of min int64_t value

Summary:
UBSan buildbot caught an undefined behavior in itostr with INT64_MIN.
The negation cannot be represented in the promoted operand (long long).
Negation is well defined on unsigned value though so this commit does
the negation after the static cast.

Reviewers: jhenderson, chandlerc, lattner

Reviewed By: lattner

Subscribers: dexonsmith, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D82200
llvm/include/llvm/ADT/StringExtras.h