Index: include/llvm/IR/DebugInfoMetadata.h =================================================================== --- include/llvm/IR/DebugInfoMetadata.h +++ include/llvm/IR/DebugInfoMetadata.h @@ -594,6 +594,7 @@ unsigned getLine() const { return Line; } uint64_t getSizeInBits() const { return SizeInBits; } uint32_t getAlignInBits() const { return AlignInBits; } + uint64_t getSizeInBytes() const { return ((SizeInBits + 7) / 8); } uint32_t getAlignInBytes() const { return getAlignInBits() / CHAR_BIT; } uint64_t getOffsetInBits() const { return OffsetInBits; } DIFlags getFlags() const { return Flags; } Index: lib/CodeGen/AsmPrinter/DwarfUnit.cpp =================================================================== --- lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -813,14 +813,14 @@ addUInt(Buffer, dwarf::DW_AT_encoding, dwarf::DW_FORM_data1, BTy->getEncoding()); - uint64_t Size = BTy->getSizeInBits() >> 3; + uint64_t Size = BTy->getSizeInBytes(); addUInt(Buffer, dwarf::DW_AT_byte_size, None, Size); } void DwarfUnit::constructTypeDIE(DIE &Buffer, const DIDerivedType *DTy) { // Get core information. StringRef Name = DTy->getName(); - uint64_t Size = DTy->getSizeInBits() >> 3; + uint64_t Size = DTy->getSizeInBytes(); uint16_t Tag = Buffer.getTag(); // Map to main type, void will not have a type. @@ -907,7 +907,7 @@ // Add name if not anonymous or intermediate type. StringRef Name = CTy->getName(); - uint64_t Size = CTy->getSizeInBits() >> 3; + uint64_t Size = CTy->getSizeInBytes(); uint16_t Tag = Buffer.getTag(); switch (Tag) {