From: David Majnemer Date: Fri, 26 Sep 2014 02:48:14 +0000 (+0000) Subject: Support: Remove undefined behavior from &raw_ostream::operator<< X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=346056ffc065418b85d02a3f73e80f7e24f0c1c3;p=oota-llvm.git Support: Remove undefined behavior from &raw_ostream::operator<< Don't negate signed integer types in &raw_ostream::operator<<(const FormattedNumber &FN). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218496 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Support/raw_ostream.cpp b/lib/Support/raw_ostream.cpp index 0fd0cdfa937..c2c55cff7ed 100644 --- a/lib/Support/raw_ostream.cpp +++ b/lib/Support/raw_ostream.cpp @@ -433,7 +433,7 @@ raw_ostream &raw_ostream::operator<<(const FormattedNumber &FN) { char *EndPtr = NumberBuffer+sizeof(NumberBuffer); char *CurPtr = EndPtr; bool Neg = (FN.DecValue < 0); - uint64_t N = Neg ? -FN.DecValue : FN.DecValue; + uint64_t N = Neg ? -static_cast(FN.DecValue) : FN.DecValue; while (N) { *--CurPtr = '0' + char(N % 10); N /= 10;