[LLDB] Switch from using member_clang_type.GetByteSize() to member_type->GetByteSize...
authorShafik Yaghmour <syaghmour@apple.com>
Mon, 17 May 2021 17:34:16 +0000 (10:34 -0700)
committerShafik Yaghmour <syaghmour@apple.com>
Mon, 17 May 2021 17:36:35 +0000 (10:36 -0700)
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

lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp

index 55fd589..744be00 100644 (file)
@@ -2671,7 +2671,7 @@ void DWARFASTParserClang::ParseSingleMember(
           last_field_info.bit_offset = field_bit_offset;
 
           if (llvm::Optional<uint64_t> clang_type_size =
-                  member_clang_type.GetByteSize(nullptr)) {
+                  member_type->GetByteSize(nullptr)) {
             last_field_info.bit_size = *clang_type_size * character_width;
           }