diff options
Diffstat (limited to 'llvm/tools/llvm-readobj/StreamWriter.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/StreamWriter.cpp | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/llvm/tools/llvm-readobj/StreamWriter.cpp b/llvm/tools/llvm-readobj/StreamWriter.cpp index 871811233a6..390b05e358d 100644 --- a/llvm/tools/llvm-readobj/StreamWriter.cpp +++ b/llvm/tools/llvm-readobj/StreamWriter.cpp @@ -8,23 +8,22 @@ using namespace llvm::support; namespace llvm { raw_ostream &operator<<(raw_ostream &OS, const HexNumber& Value) { - uint64_t N = Value.Value; - // Zero is a special case. - if (N == 0) - return OS << "0x0"; - - char NumberBuffer[20]; - char *EndPtr = NumberBuffer + sizeof(NumberBuffer); - char *CurPtr = EndPtr; + OS << "0x" << to_hexString(Value.Value); + return OS; +} - while (N) { - uintptr_t X = N % 16; - *--CurPtr = (X < 10 ? '0' + X : 'A' + X - 10); - N /= 16; - } +const std::string to_hexString(uint64_t Value, bool UpperCase) { + std::string number; + llvm::raw_string_ostream stream(number); + stream << format_hex_no_prefix(Value, 1, UpperCase); + return stream.str(); +} - OS << "0x"; - return OS.write(CurPtr, EndPtr - CurPtr); +const std::string to_string(uint64_t Value) { + std::string number; + llvm::raw_string_ostream stream(number); + stream << format_decimal(Value, 1); + return stream.str(); } void StreamWriter::printBinaryImpl(StringRef Label, StringRef Str, |