[PATCH] D40339: Use getStoreSize() in various places instead of BitSize >> 3

Jonas Paulsson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 28 06:49:30 PST 2017


jonpa added a comment.

Thanks for review. r319173.

BTW,

What about all the cases using Type* , like 'ByteSize = Ty->getSizeInBits() / 8;'... These should also be fixed, I presume, but I don't see a getStoreSize() method or similar in Type...

Also, with

  diff --git a/include/llvm/IR/DebugInfoMetadata.h b/include/llvm/IR/DebugInfoMetadata.h
  index c515f6d..a8aa195 100644
  --- a/include/llvm/IR/DebugInfoMetadata.h
  +++ b/include/llvm/IR/DebugInfoMetadata.h
  @@ -594,6 +594,7 @@ public:
     unsigned getLine() const { return Line; }
     uint64_t getSizeInBits() const { return SizeInBits; }
     uint32_t getAlignInBits() const { return AlignInBits; }
  +  uint64_t getSizeInBytes() const { return (SizeInBits < 8 ? 1 : SizeInBits >> 3); }
     uint32_t getAlignInBytes() const { return getAlignInBits() / CHAR_BIT; }
     uint64_t getOffsetInBits() const { return OffsetInBits; }
     DIFlags getFlags() const { return Flags; }
  diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
  index 911e462..8829886 100644
  --- a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
  +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
  @@ -813,14 +813,14 @@ 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;
  +  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 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, const DICompositeType *CTy) {
     // 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) {

I got

  Failing Tests (3):
      LLVM :: DebugInfo/Generic/namespace.ll
      LLVM :: DebugInfo/Generic/tu-composite.ll
      LLVM :: DebugInfo/X86/sret.ll

Could this be an indicator that something *should* be handled here, or is this a bad fix for some reason?


https://reviews.llvm.org/D40339





More information about the llvm-commits mailing list