TargetData.cpp::getTypeInfo() was returning alignment of element type as the
authorEvan Cheng <evan.cheng@apple.com>
Fri, 31 Mar 2006 22:33:42 +0000 (22:33 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 31 Mar 2006 22:33:42 +0000 (22:33 +0000)
alignment of a packed type. This is obviously wrong. Added a workaround that
returns the size of the packed type as its alignment. The correct fix would
be to return a target dependent alignment value provided via TargetLowering
(or some other interface).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27319 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/TargetData.cpp

index 40b762d8e7392285fdc4b9e90ee1ae613694e8cf..63c5b6178a3f8803e52e8dddb376babc2bb4a029 100644 (file)
@@ -215,6 +215,9 @@ static inline void getTypeInfo(const Type *Ty, const TargetData *TD,
     getTypeInfo(PTy->getElementType(), TD, Size, Alignment);
     unsigned AlignedSize = (Size + Alignment - 1)/Alignment*Alignment;
     Size = AlignedSize*PTy->getNumElements();
+    // FIXME: The alignments of specific packed types are target dependent.
+    // For now, just set it to be equal to Size.
+    Alignment = Size;
     return;
   }
   case Type::StructTyID: {