forked from OSchip/llvm-project
[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
This commit is contained in:
parent
f5eaa2afe2
commit
f3e8f96173
|
@ -245,7 +245,7 @@ inline std::string utostr(uint64_t X, bool isNeg = false) {
|
|||
|
||||
inline std::string itostr(int64_t X) {
|
||||
if (X < 0)
|
||||
return utostr(static_cast<uint64_t>(-X), true);
|
||||
return utostr(-static_cast<uint64_t>(X), true);
|
||||
else
|
||||
return utostr(static_cast<uint64_t>(X));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue