Author: friss Date: Tue Oct 8 10:59:02 2019 New Revision: 374095 URL: http://llvm.org/viewvc/llvm-project?rev=374095&view=rev Log: Fix sign extension handling in DumpEnumValue
When an enumerator has an unsigned type and its high bit set, the code introduced in r374067 would fail to match it due to a sign extension snafu. This commit fixes this aspec of the code and should fix the bots. I think it's not a complete fix though, I'll add more test coverage and additional tweaks in a follow-up commit. Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=374095&r1=374094&r2=374095&view=diff ============================================================================== --- lldb/trunk/source/Symbol/ClangASTContext.cpp (original) +++ lldb/trunk/source/Symbol/ClangASTContext.cpp Tue Oct 8 10:59:02 2019 @@ -9374,6 +9374,7 @@ static bool DumpEnumValue(const clang::Q // flags. for (auto enumerator : enum_decl->enumerators()) { uint64_t val = enumerator->getInitVal().getSExtValue(); + val = llvm::SignExtend64(val, 8*byte_size); if (llvm::countPopulation(val) != 1 && (val & ~covered_bits) != 0) can_be_bitfield = false; covered_bits |= val; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits