From: Shafik Yaghmour Date: Mon, 17 May 2021 17:34:16 +0000 (-0700) Subject: [LLDB] Switch from using member_clang_type.GetByteSize() to member_type->GetByteSize... X-Git-Tag: llvmorg-14-init~6397 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2182eda3062471e2e6994307c46ffcca7e39ecff;p=platform%2Fupstream%2Fllvm.git [LLDB] Switch from using member_clang_type.GetByteSize() to member_type->GetByteSize() in ParseSingleMember We have a bug in which using member_clang_type.GetByteSize() triggers record layout and during this process since the record was not yet complete we ended up reaching a record that had not been layed out yet. Using member_type->GetByteSize() avoids this situation since it relies on size from DWARF and will not trigger record layout. For reference: rdar://77293040 Differential Revision: https://reviews.llvm.org/D102445 --- diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp index 55fd589..744be00 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -2671,7 +2671,7 @@ void DWARFASTParserClang::ParseSingleMember( last_field_info.bit_offset = field_bit_offset; if (llvm::Optional clang_type_size = - member_clang_type.GetByteSize(nullptr)) { + member_type->GetByteSize(nullptr)) { last_field_info.bit_size = *clang_type_size * character_width; }