================
@@ -766,8 +766,17 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, const 
DIBasicType *BTy) {
     addUInt(Buffer, dwarf::DW_AT_encoding, dwarf::DW_FORM_data1,
             BTy->getEncoding());
 
-  uint64_t Size = BTy->getSizeInBits() >> 3;
-  addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, Size);
+  uint64_t SizeInBytes = divideCeil(BTy->getSizeInBits(), 8);
----------------
OCHyams wrote:

>  though it'd be a bit out-of-DWARF-spec which says a base type should have 
> only one or the other.

My interpretation of the DWARF spec especially is it allows it for base types 
(chpt 5, page end of 103 to top of 104):

> A base type entry has a DW_AT_byte_size attribute or a DW_AT_bit_size 
> attribute. [...] If the value of an object of the given type does not fully 
> occupy the storage described by a byte size attribute, the base type entry 
> may **also** have a DW_AT_bit_size and a DW_AT_data_bit_offset attribute

It says both "or" and "and" which is a bit ambiguous, but other types only say 
"or".

https://github.com/llvm/llvm-project/pull/164372
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to