Don't use getLLVMFieldNo for bitfields when constructing the ivar layout maps for GC.
llvm-svn: 76978
This commit is contained in:
parent
b68b506d84
commit
e2c6baf629
|
@ -3042,10 +3042,14 @@ void CGObjCCommonMac::BuildAggrIvarLayout(const ObjCImplementationDecl *OI,
|
|||
for (unsigned i = 0, e = RecFields.size(); i != e; ++i) {
|
||||
FieldDecl *Field = RecFields[i];
|
||||
uint64_t FieldOffset;
|
||||
if (RD)
|
||||
FieldOffset =
|
||||
Layout->getElementOffset(CGM.getTypes().getLLVMFieldNo(Field));
|
||||
else
|
||||
if (RD) {
|
||||
if (Field->isBitField()) {
|
||||
CodeGenTypes::BitFieldInfo Info = CGM.getTypes().getBitFieldInfo(Field);
|
||||
FieldOffset = Layout->getElementOffset(Info.FieldNo);
|
||||
} else
|
||||
FieldOffset =
|
||||
Layout->getElementOffset(CGM.getTypes().getLLVMFieldNo(Field));
|
||||
} else
|
||||
FieldOffset = ComputeIvarBaseOffset(CGM, OI, cast<ObjCIvarDecl>(Field));
|
||||
|
||||
// Skip over unnamed or bitfields
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
// RUN: clang-cc -triple x86_64-apple-darwin9 -fobjc-gc -emit-llvm -o %t %s
|
||||
@interface I
|
||||
{
|
||||
struct {
|
||||
unsigned int d : 1;
|
||||
} bitfield;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation I
|
||||
@end
|
||||
|
Loading…
Reference in New Issue