================ @@ -1926,12 +1930,13 @@ DWARFASTParserClang::ParseStructureLikeDIE(const SymbolContext &sc, // TypeSystemClang is always in C++ mode, but some compilers such as // GCC and Clang give empty structs a size of 0 in C mode (in contrast to // the size of 1 for empty structs that would be computed in C++ mode). - if (attrs.byte_size) { + if (attrs.byte_size || attrs.alignment) { clang::RecordDecl *record_decl = TypeSystemClang::GetAsRecordDecl(clang_type); if (record_decl) { ClangASTImporter::LayoutInfo layout; - layout.bit_size = *attrs.byte_size * 8; + layout.bit_size = attrs.byte_size.value_or(0) * 8; + layout.alignment = attrs.alignment.value_or(0) * 8; ---------------- hokein wrote:
> Is it because in your tests alignof(EmptyStruct) wouldn't trigger > CompleteRecordType? Yes, exactly, this is the major reason. The codepath in `CompleteRecordType` has a conditional statement `if (!layout_info.field_offsets.empty() || !layout_info.base_offsets.empty() || !layout_info.vbase_offsets.empty())` where an empty structure will never hit. We could tweak the if condition there, but I'm less certain about it, my reading of code is that the location here seem to be responsible for empty structures (happy to change if this is not reasonable). https://github.com/llvm/llvm-project/pull/73307 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits