Author: xiaobai Date: Wed Aug 28 13:15:57 2019 New Revision: 370255 URL: http://llvm.org/viewvc/llvm-project?rev=370255&view=rev Log: [Core] Use GetAPInt instead of constructing APInts in place
GetAPInt should be able to handle all cases. I have plans to generalize the float dumping logic and this makes it easier to do later. Modified: lldb/trunk/source/Core/DumpDataExtractor.cpp Modified: lldb/trunk/source/Core/DumpDataExtractor.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/DumpDataExtractor.cpp?rev=370255&r1=370254&r2=370255&view=diff ============================================================================== --- lldb/trunk/source/Core/DumpDataExtractor.cpp (original) +++ lldb/trunk/source/Core/DumpDataExtractor.cpp Wed Aug 28 13:15:57 2019 @@ -567,11 +567,13 @@ lldb::offset_t lldb_private::DumpDataExt size_t item_bit_size = item_byte_size * 8; if (item_bit_size == ast->getTypeSize(ast->FloatTy)) { - llvm::APInt apint(item_bit_size, - DE.GetMaxU64(&offset, item_byte_size)); - llvm::APFloat apfloat(ast->getFloatTypeSemantics(ast->FloatTy), - apint); - apfloat.toString(sv, format_precision, format_max_padding); + llvm::Optional<llvm::APInt> apint = + GetAPInt(DE, &offset, item_byte_size); + if (apint.hasValue()) { + llvm::APFloat apfloat(ast->getFloatTypeSemantics(ast->FloatTy), + apint.getValue()); + apfloat.toString(sv, format_precision, format_max_padding); + } } else if (item_bit_size == ast->getTypeSize(ast->DoubleTy)) { llvm::Optional<llvm::APInt> apint = GetAPInt(DE, &offset, item_byte_size); @@ -595,10 +597,13 @@ lldb::offset_t lldb_private::DumpDataExt apfloat.toString(sv, format_precision, format_max_padding); } } else if (item_bit_size == ast->getTypeSize(ast->HalfTy)) { - llvm::APInt apint(item_bit_size, DE.GetU16(&offset)); - llvm::APFloat apfloat(ast->getFloatTypeSemantics(ast->HalfTy), - apint); - apfloat.toString(sv, format_precision, format_max_padding); + llvm::Optional<llvm::APInt> apint = + GetAPInt(DE, &offset, item_byte_size); + if (apint.hasValue()) { + llvm::APFloat apfloat(ast->getFloatTypeSemantics(ast->HalfTy), + apint.getValue()); + apfloat.toString(sv, format_precision, format_max_padding); + } } if (!sv.empty()) { _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits