summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CGObjCMac.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp
index 72d80b6fbbb..e16c3ee2582 100644
--- a/clang/lib/CodeGen/CGObjCMac.cpp
+++ b/clang/lib/CodeGen/CGObjCMac.cpp
@@ -3050,7 +3050,12 @@ void CGObjCCommonMac::BuildAggrIvarLayout(const ObjCImplementationDecl *OI,
if (RD) {
if (Field->isBitField()) {
CodeGenTypes::BitFieldInfo Info = CGM.getTypes().getBitFieldInfo(Field);
- FieldOffset = Layout->getElementOffset(Info.FieldNo);
+
+ const llvm::Type *Ty =
+ CGM.getTypes().ConvertTypeForMemRecursive(Field->getType());
+ uint64_t TypeSize =
+ CGM.getTypes().getTargetData().getTypeAllocSize(Ty);
+ FieldOffset = Info.FieldNo * TypeSize;
} else
FieldOffset =
Layout->getElementOffset(CGM.getTypes().getLLVMFieldNo(Field));
OpenPOWER on IntegriCloud