diff options
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r-- | clang/lib/CodeGen/CGObjCMac.cpp | 7 |
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)); |