diff options
Diffstat (limited to 'lldb/source/Symbol/ClangASTContext.cpp')
-rw-r--r-- | lldb/source/Symbol/ClangASTContext.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp index 038b1f316d6..a1637ca7baa 100644 --- a/lldb/source/Symbol/ClangASTContext.cpp +++ b/lldb/source/Symbol/ClangASTContext.cpp @@ -9386,18 +9386,21 @@ static bool DumpEnumValue(const clang::QualType &qual_type, Stream *s, } } + // Unsigned values make more sense for flags. + offset = byte_offset; + const uint64_t enum_uvalue = data.GetMaxU64Bitfield( + &offset, byte_size, bitfield_bit_size, bitfield_bit_offset); + // No exact match, but we don't think this is a bitfield. Print the value as // decimal. if (!can_be_bitfield) { - s->Printf("%" PRIi64, enum_svalue); + if (qual_type->isSignedIntegerOrEnumerationType()) + s->Printf("%" PRIi64, enum_svalue); + else + s->Printf("%" PRIu64, enum_uvalue); return true; } - // Unsigned values make more sense for flags. - offset = byte_offset; - const uint64_t enum_uvalue = data.GetMaxU64Bitfield( - &offset, byte_size, bitfield_bit_size, bitfield_bit_offset); - uint64_t remaining_value = enum_uvalue; std::vector<std::pair<uint64_t, llvm::StringRef>> values; values.reserve(num_enumerators); |