[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